Skip to content

Commit

Permalink
Agregado Reseteo
Browse files Browse the repository at this point in the history
  • Loading branch information
MatePirchi committed Nov 15, 2024
1 parent c918918 commit 61ad996
Show file tree
Hide file tree
Showing 3 changed files with 335 additions and 118 deletions.
9 changes: 9 additions & 0 deletions controlador.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ object controlador {
matriz.last().add(new ElementoMatriz())
})
})
}

method resetear(){
matriz.forEach({fila => fila.forEach({elemento => game.removeVisual(elemento.pieza())})})
matriz.forEach({fila => fila.forEach({elemento => elemento.pieza(null)})})
contadoresDeLineaCompleta = []
20.times({_=>
contadoresDeLineaCompleta.add(0)
})
}

// ------------- Crear Bloque ---------------------------------
Expand Down
289 changes: 171 additions & 118 deletions game.wpgm
Original file line number Diff line number Diff line change
@@ -1,140 +1,193 @@
import juego.*
import controlador.*
import wollok.game.*
import tetris.*

program tetrizado {
game.title("TETRIZADO")
game.height(20)
game.width(47)
game.ground("celdaFondo.jpg") //imagen para cada celda
game.cellSize(40) //tamaño de cada celda en pixeles que coincide con el tamaño de las piezas (hecho a ojo)
controlador.inicializarMatriz()
var ticksCaida = 500 //milisiegundos cada los que las piezas descienden una posicion en el tablero
var bloqueActual = controlador.generarBloqueAleatorio()
var bloqueNext = controlador.generarBloqueAleatorio()
var bloqueHold
var bloqueSombra
var sePuedeUsarHold = true
var juegoPausado = false
// ----RUN
program tetrizado {
game.title("TETRIZADO")
game.height(20)
game.width(47)
game.ground("celdaFondo.jpg") //imagen para cada celda
game.cellSize(40) //tamaño de cada celda en pixeles que coincide con el tamaño de las piezas (hecho a ojo)
controlador.inicializarMatriz()
var ticksCaida = 500 //milisiegundos cada los que las piezas descienden una posicion en el tablero
var bloqueActual = controlador.generarBloqueAleatorio()
var bloqueNext = controlador.generarBloqueAleatorio()
var bloqueHold
var bloqueSombra
var sePuedeUsarHold = true
var juegoPausado = false

visuales.agregarVisuales()
visuales.agregarVisuales()

bloqueActual.entrarEnTablero()
bloqueSombra = controlador.crearSombraYUbicarla(bloqueActual)
bloqueNext.mostrar()

game.start()

keyboard.p().onPressDo({
if (!juegoPausado){
juegoPausado = true
visuales.mostrarVentanaPausa()
}else{
juegoPausado = false
visuales.ocultarVentanaPausa()
}
})

keyboard.z().onPressDo({
if(!juegoPausado){
bloqueActual.rotar(antihoraria)
bloqueSombra.imitarPosRot(bloqueActual)
bloqueActual.entrarEnTablero()
bloqueSombra = controlador.crearSombraYUbicarla(bloqueActual)
bloqueNext.mostrar()
/*object musica {
method play(){
game.sound("tetrisgameboy.mp3").play()
}
}
})
keyboard.up().onPressDo({
if(!juegoPausado){
bloqueActual.rotar(horaria)
bloqueSombra.imitarPosRot(bloqueActual)
keyboard.enter().onPressDo({musica.play()})
*/
/*
method clearGame() {
game.allVisuals().forEach({ visual => game.removeVisual(visual) })
}
})

self.clearGame()
*/
game.start()

keyboard.r().onPressDo({
nivel.resetear()
puntaje.resetear()
lineas.resetear()
if(bloqueHold != null){
bloqueHold.remover()
bloqueHold = null
}
bloqueNext.remover()
bloqueActual.remover()
bloqueSombra.remover()

keyboard.left().onPressDo({
if(!juegoPausado){
bloqueActual.mover(izquierda)
bloqueSombra.imitarPosMov(bloqueActual)
}
})
controlador.resetear()

keyboard.right().onPressDo({
if(!juegoPausado){
bloqueActual.mover(derecha)
bloqueSombra.imitarPosMov(bloqueActual)
}
})
bloqueActual = controlador.generarBloqueAleatorio()
bloqueNext = controlador.generarBloqueAleatorio()

keyboard.down().onPressDo({
if(!juegoPausado){
bloqueActual.mover(abajo)
}
})
bloqueActual.entrarEnTablero()
bloqueSombra = controlador.crearSombraYUbicarla(bloqueActual)
bloqueNext.mostrar()

/*
//reinniciamos numeros (ya existen los metodos)
//reiniciamos el tablero
//reiniciamos next y hold
//generamos nuevo bloque actual y nuevo bloque next
*/
})
//MUSICA
//
/*const tetris = game.sound("tetrisgameboy.mp3")
tetris.shouldLoop(true)
keyboard.p().onPressDo({tetris.pause()})
keyboard.r().onPressDo({tetris.resume()})
keyboard.s().onPressDo({tetris.stop()})
game.schedule(500, { tetris.play()} )*/
//-----FIN MUSICA

keyboard.space().onPressDo({
if (!juegoPausado){
puntaje.sumar((bloqueActual.yCentro()*2).truncate(0))
bloqueActual.hardDrop(bloqueSombra)
sePuedeUsarHold = true
bloqueActual = controlador.establecerYLlamarSiguente(bloqueActual, bloqueNext)
bloqueNext = controlador.generarSiguienteBloque()
bloqueSombra = controlador.ReemplazarSombra(bloqueActual, bloqueSombra)
}
keyboard.p().onPressDo({
if (!juegoPausado){
juegoPausado = true
visuales.mostrarVentanaPausa()
}else{
juegoPausado = false
visuales.ocultarVentanaPausa()
}
})

})

keyboard.c().onPressDo({
if(!juegoPausado){
if(sePuedeUsarHold){
sePuedeUsarHold = false
if(bloqueHold == null){
bloqueHold = bloqueActual
bloqueHold.entrarEnHold()
bloqueActual = controlador.llamarSiguienteBloque(bloqueNext)
bloqueNext = controlador.generarSiguienteBloque()
}else{
var bloqueAux
bloqueAux = bloqueHold
bloqueHold = bloqueActual
bloqueActual = bloqueAux
bloqueHold.entrarEnHold()
bloqueActual.entrarEnTablero()
}
keyboard.z().onPressDo({
if(!juegoPausado){
bloqueActual.rotar(antihoraria)
bloqueSombra.imitarPosRot(bloqueActual)
}
})
keyboard.up().onPressDo({
if(!juegoPausado){
bloqueActual.rotar(horaria)
bloqueSombra.imitarPosRot(bloqueActual)
}
})

keyboard.left().onPressDo({
if(!juegoPausado){
bloqueActual.mover(izquierda)
bloqueSombra.imitarPosMov(bloqueActual)
}
})

keyboard.right().onPressDo({
if(!juegoPausado){
bloqueActual.mover(derecha)
bloqueSombra.imitarPosMov(bloqueActual)
}
})

keyboard.down().onPressDo({
if(!juegoPausado){
bloqueActual.mover(abajo)
}
})

keyboard.space().onPressDo({
if (!juegoPausado){
puntaje.sumar((bloqueActual.yCentro()*2).truncate(0))
bloqueActual.hardDrop(bloqueSombra)
sePuedeUsarHold = true
bloqueActual = controlador.establecerYLlamarSiguente(bloqueActual, bloqueNext)
bloqueNext = controlador.generarSiguienteBloque()
bloqueSombra = controlador.ReemplazarSombra(bloqueActual, bloqueSombra)
}
}
})

game.onTick(ticksCaida, "Caida",
{
if (!juegoPausado){
bloqueActual.caer()

if(bloqueActual.estaEnElFondo()){
game.schedule(500, { //La idea de esto es que tengas un ratito para mover la pieza antes de que se quede fija
if (bloqueActual.estaEnElFondo()){
sePuedeUsarHold = true
bloqueActual = controlador.establecerYLlamarSiguente(bloqueActual, bloqueNext)
})

keyboard.c().onPressDo({
if(!juegoPausado){
if(sePuedeUsarHold){
sePuedeUsarHold = false
if(bloqueHold == null){
bloqueHold = bloqueActual
bloqueHold.entrarEnHold()
bloqueActual = controlador.llamarSiguienteBloque(bloqueNext)
bloqueNext = controlador.generarSiguienteBloque()
bloqueSombra = controlador.ReemplazarSombra(bloqueActual, bloqueSombra)
}else{
var bloqueAux
bloqueAux = bloqueHold
bloqueHold = bloqueActual
bloqueActual = bloqueAux
bloqueHold.entrarEnHold()
bloqueActual.entrarEnTablero()
}
})
bloqueSombra = controlador.ReemplazarSombra(bloqueActual, bloqueSombra)
}
}
}
})

//cada 1 minuto (60 segundos) se reduce el tiempo de caida
game.onTick(1000*60 , "Incremento de Dificultad", {
if(!juegoPausado){
if(ticksCaida > 50){
ticksCaida -= 50
nivel.sumar(1)
} else {
game.removeTickEvent("Incremento de Dificultad")
})

game.onTick(ticksCaida, "Caida",
{
if (!juegoPausado){
bloqueActual.caer()

if(bloqueActual.estaEnElFondo()){
game.schedule(500, { //La idea de esto es que tengas un ratito para mover la pieza antes de que se quede fija
if (bloqueActual.estaEnElFondo()){
sePuedeUsarHold = true
bloqueActual = controlador.establecerYLlamarSiguente(bloqueActual, bloqueNext)
bloqueNext = controlador.generarSiguienteBloque()
bloqueSombra = controlador.ReemplazarSombra(bloqueActual, bloqueSombra)
}
})
}
}
}
})
/*
No pareciera acelerarse la velocidad de caida de las piezas...
Quizas porque hay muchas acciones que se hacen cada vez que la pieza cae y
hasta que no se hacen todas no se vuelve a ejecutar el evento de caida
*/
})

//cada 1 minuto (60 segundos) se reduce el tiempo de caida
game.onTick(1000*60 , "Incremento de Dificultad", {
if(!juegoPausado){
if(ticksCaida > 50){
ticksCaida -= 50
nivel.sumar(1)
} else {
game.removeTickEvent("Incremento de Dificultad")
}
}
})
/*
No pareciera acelerarse la velocidad de caida de las piezas...
Quizas porque hay muchas acciones que se hacen cada vez que la pieza cae y
hasta que no se hacen todas no se vuelve a ejecutar el evento de caida
*/

}
Loading

0 comments on commit 61ad996

Please sign in to comment.