Skip to content

Commit

Permalink
agregado movimiento dinamico y optimizacion
Browse files Browse the repository at this point in the history
  • Loading branch information
jdesimone03 committed Nov 27, 2024
1 parent dde35e8 commit 33f535a
Show file tree
Hide file tree
Showing 11 changed files with 171 additions and 334 deletions.
29 changes: 9 additions & 20 deletions config/cargar.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,22 @@ import iu.*
import nivel.*

object cargar {
const jugadores = []
const enemigos = []
const proyectiles = []
const vallas = []
const hitboxes = []
const dim = [default.filas(), default.columnas()]

method dimensiones() = dim
const property jugadores = []
const property enemigos = []
const property proyectiles = []
const property vallas = []
const property hitboxes = []
const property dimensiones = [default.filas(), default.columnas()]

method jugador(jugador) = jugadores.get(jugador - 1)

method jugadores() = jugadores

method proyectil(jugador) = proyectiles.get(jugador)

method proyectiles() = proyectiles

method vallas() = vallas

method enemigos() = enemigos

method hitboxes() = hitboxes

method modulos() {
self.entidades()
controlesMenu.cargar()
controlesJuego.cargar()
misterio.cargar()
eventos.cargarEventos() // controles.cargarControles()

p_Menu.actual(true)
Expand All @@ -60,8 +49,8 @@ object cargar {
}

method cargarEnemigos() {
dim.get(0).times(
{ i => dim.get(1).times(
dimensiones.get(0).times(
{ i => dimensiones.get(1).times(
{ j =>
const enemigo = new Enemigo(fila = i, col = j)
return enemigos.add(enemigo)
Expand Down
70 changes: 36 additions & 34 deletions config/controles.wlk
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
import wollok.game.*
import config.cargar.*
import config.pantallas.*
import entidades.chiqui.*
import iu.*
import nivel.*

object controlesJuego {
class Controles {
method cargar() {
self.controles()
}

method controles() {}
}

object controlesJuego inherits Controles{
/* Variable para evitar que el segundo jugador dispare al elegir una opcion*/
var wait = false

method handleWait() {
wait = true
game.schedule(1, { wait = false })
}

method cargar() {
self.controlesj1()
self.controlesj2()
}

method _derecha(j) {
if ((j <= cargar.jugadores().size()) && (!p_Pausa.actual())) {
const jugador = cargar.jugador(j)
Expand All @@ -43,23 +47,23 @@ object controlesJuego {
if (proyectil.yaColisiono() && (!jugador.muerto())) {
proyectil.yaColisiono(false)

jugador.cambiarImagen(("j" + j) + "_tirar.png")
game.schedule(250, { jugador.cambiarImagen(("j" + j) + ".png") })
jugador.image(("j" + j) + "_tirar.png")
game.schedule(250, { jugador.image(("j" + j) + ".png") })

proyectil.spawnea(jugador.position()) // proyectil.lanzar()
}
}
}

method controlesj1() {
override method controles() {
// Jugador 1
keyboard.a().onPressDo({ self._izquierda(1) })

keyboard.d().onPressDo({ self._derecha(1) })

keyboard.space().onPressDo({ self._disparo(1) })
}

method controlesj2() {

// Jugador 2
keyboard.left().onPressDo({ self._izquierda(2) })

keyboard.right().onPressDo({ self._derecha(2) })
Expand All @@ -68,20 +72,10 @@ object controlesJuego {
}
}

object controlesMenu {
object controlesMenu inherits Controles{
var enControles = false

method enControles() = enControles

method setEnControles(bool) {
enControles = bool
}

method cargar() {
self.controles()
}

method controles() {
override method controles() {
var dir = 1
game.onTick(
1000,
Expand All @@ -103,24 +97,25 @@ object controlesMenu {
selector.abajo() }
)
keyboard.enter().onPressDo(
{
if (p_Menu.actual()) {
{ if (p_Menu.actual()) {
controlesJuego.handleWait()
selector.seleccionar()
if (selector.seleccion() == 2) {
enControles = true
selector.seleccion(0)
selector.setMaxOpciones(0)
selector.maxOpciones(0)
fondoOpciones.position(fondoOpciones.position().down(24).left(13))
opciones.mostrar("o_controles_.png",1)
opciones.mostrar("o_controles_.png", 1)
selector.position(fondoOpciones.position().up(4).right(7))
} else {
if (enControles) {
enControles = false
selector.seleccion(2)
selector.setMaxOpciones(2)
fondoOpciones.position(fondoOpciones.position().down(-24).left(-13))
opciones.mostrar("o_menu__.png",3)
selector.maxOpciones(2)
fondoOpciones.position(
fondoOpciones.position().down(-24).left(-13)
)
opciones.mostrar("o_menu__.png", 3)
selector.position(selector.position().down(16))
} else {
cargar.cargarJuego(selector.seleccion() + 1)
Expand Down Expand Up @@ -151,8 +146,15 @@ object controlesMenu {
}
}
}
}
}
} }
)
}
}

object misterio inherits Controles {
override method controles() {
keyboard.t().onPressDo(
{ if (p_Juego.actual() && (!p_Pausa.actual())) chiqui.incrementar() }
)
}
}
78 changes: 31 additions & 47 deletions config/eventos.wlk
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import wollok.game.*
import config.cargar.*
import config.pantallas.*
import entidades.chiqui.*
import nivel.*

object eventos {
Expand All @@ -15,7 +14,6 @@ object eventos {
var nuevaDireccion = derecha

method cargarEventos() {
self.chiqui()
self.movimientoEnemigo()
self.disparoEnemigo()
self.rotacionProyectil()
Expand All @@ -27,6 +25,7 @@ object eventos {
method setEnemigos() {
enemigos = cargar.enemigos()
enemigosVivos = enemigos.count({ e => !e.muerto() })
self.movimientoEnemigo()
}

// Jugador 0: Enemigo
Expand Down Expand Up @@ -59,6 +58,7 @@ object eventos {

elemento.morir()
enemigosVivos -= 1
self.movimientoEnemigo()
proyectil.destruir()

if (enemigos.all({ e => e.muerto() })) p_youWin.actual(true)
Expand Down Expand Up @@ -86,8 +86,8 @@ object eventos {
const indice = 0.randomUpTo(e_vivos.size()).truncate(0)
const enemigo = e_vivos.get(indice)

enemigo.cambiarImagen("enemigo_tirar.png")
game.schedule(500, { enemigo.cambiarImagen("enemigo.png") })
enemigo.image("enemigo_tirar.png")
game.schedule(500, { enemigo.image("enemigo.png") })
proyectil.spawnea(enemigo.position())
}
} }
Expand All @@ -100,10 +100,10 @@ object eventos {

if (elemento.vidas() < 1) elemento.muerto(true)

elemento.cambiarImagen(("j" + elemento.jugador()) + "_hit.png")
elemento.image(("j" + elemento.jugador()) + "_hit.png")
game.schedule(
300,
{ elemento.cambiarImagen(("j" + elemento.jugador()) + ".png") }
{ elemento.image(("j" + elemento.jugador()) + ".png") }
)

const indicadores = elemento.indicadores()
Expand Down Expand Up @@ -159,7 +159,7 @@ object eventos {
"rotacionProyectil",
{ if (p_Juego.actual() && (!p_Pausa.actual())) {
cargar.proyectiles().forEach(
{ proyectil => proyectil.cambiarImagen(i_rotacion) }
{ proyectil => proyectil.image(i_rotacion) }
)

i_rotacion += 1
Expand All @@ -173,26 +173,31 @@ object eventos {
method movimientoEnemigo() {
// Por cada 7 enemigos, se van moviendo mas rápido.
// Y cuando queda uno solo, se mueve a la velocidad máxima.
game.removeTickEvent("movimientoEnemigo")
game.onTick(
2000,
"movimientoEnemigo1",
{ if ((enemigosVivos > 14) && (enemigosVivos <= 21)) self._movimiento() }
)
game.onTick(
1500,
"movimientoEnemigo2",
{ if ((enemigosVivos > 7) && (enemigosVivos <= 14)) self._movimiento() }
)
game.onTick(
1000,
"movimientoEnemigo3",
{ if ((enemigosVivos > 1) && (enemigosVivos <= 7)) self._movimiento() }
)
game.onTick(
500,
"movimientoEnemigo4",
{ if (enemigosVivos <= 1) self._movimiento() }
)
(100 * enemigosVivos) + 400,
"movimientoEnemigo",
{ self._movimiento() }
) // game.onTick(
// 2000,
// "movimientoEnemigo1",
// { if ((enemigosVivos > 14) && (enemigosVivos <= 21)) self._movimiento() }
// )
// game.onTick(
// 1500,
// "movimientoEnemigo2",
// { if ((enemigosVivos > 7) && (enemigosVivos <= 14)) self._movimiento() }
// )
// game.onTick(
// 1000,
// "movimientoEnemigo3",
// { if ((enemigosVivos > 1) && (enemigosVivos <= 7)) self._movimiento() }
// )
// game.onTick(
// 500,
// "movimientoEnemigo4",
// { if (enemigosVivos <= 1) self._movimiento() }
// )
}

method reiniciarMovimiento() {
Expand Down Expand Up @@ -233,27 +238,6 @@ object eventos {
}
}

method chiqui() {
const jugador = cargar.jugador(1)

keyboard.t().onPressDo(
{ if (p_Juego.actual() && (!p_Pausa.actual())) chiqui.incrementar() }
)

game.onTick(
1000,
"chiquiMafia",
{ if (p_Juego.actual() || p_Pausa.actual()) chiqui.spawnear(
jugador.position().x() - 16
) }
)
game.onTick(
1,
"Detonar",
{ if (p_Juego.actual() || p_Pausa.actual()) chiqui.detonar(jugador) }
)
}

method verificarPosicionEnemigos() {
game.onTick(
1000,
Expand Down
Loading

0 comments on commit 33f535a

Please sign in to comment.