Skip to content

Commit

Permalink
Super arreglos. Falta delimitar wasd de poner y sacar bloques
Browse files Browse the repository at this point in the history
Co-authored-by: brisabrussa28 <[email protected]>
  • Loading branch information
1 parent 2191371 commit a58423d
Show file tree
Hide file tree
Showing 14 changed files with 455 additions and 148 deletions.
Binary file added assets/Flow Hero.mp3
Binary file not shown.
Binary file added assets/Kamehameha.mp3
Binary file not shown.
Binary file added assets/Super Survivor.mp3
Binary file not shown.
78 changes: 50 additions & 28 deletions enemigos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,61 @@ import niveles.*
import miscelaneos.*
import muros.*
import wollok.game.*
import movimiento.*
import jugador.*
import menus.*

class Enemigo1 inherits MutablePosition{
class Enemigo1 inherits FiguraConMovimiento(position = new PosicionVariable(x = 7, y = 13)){

var property vida
var property velocidad = 200
var property position
const property posiblePosicion = new PosicionVariable(x = 7, y = 13)
method image() = aparienciaEnemigo.valor()
var property direccion = moverDerecha

method movimiento(){
game.onTick(velocidad, self, {
self.position(self.direccion().mover(self.position()))
if(niveles.mismaPosicion(self.position())){
self.position(self.direccion().retroceder(self.position()))
self.direccion(cambiarDireccion.rotarDireccion(self.direccion()))
}
})

method nuevaPosicion(){
const direccion = 1.randomUpTo(4).round()//.truncate(0) //elige al azar una dirección
//var posiblePosicion = 0
//le da el valor correspondiente
if(direccion == 1){ //arriba
self.posiblePosicion().sumarPos(0, 1)
}
if(direccion == 2){ //abajo
self.posiblePosicion().sumarPos(0, -1)
}
if(direccion == 3){ //derecha
self.posiblePosicion().sumarPos(1, 0)
}

if(direccion == 4){ //izquierda
self.posiblePosicion().sumarPos(-1, 0)
}
//revisa si la posicion es la de un bloque
if(niveles.mismaPosicion(self.posiblePosicion()) || !self.equisCorrecta(self.posiblePosicion().x()) || !self.yeCorrecta(self.posiblePosicion().y())){ //si es rehace el mensaje
self.posiblePosicion().establecerPos(self.position().x(), self.position().y())
self.nuevaPosicion()
}
else{ //sino devuelve la posicion nueva
self.position().establecerPos(posiblePosicion.x(), posiblePosicion.y())
}
}

method caminar(){
//game.onTick(200, self, {self.position(self.nuevaPosicion())})
game.onTick(400, self, {self.nuevaPosicion()})
}

method herido() {
vida -= 50
if(vida == 0){
self.morir()
}
}

method activar_enemigo() {
game.addVisual(self)
self.movimiento()
method morir(){
sincronizadorDePantallas.cambiarPantalla("ganador")
}

method aparecer(){
game.addVisual(self)
}

method limpiarEnemigos(){
Expand All @@ -32,16 +65,5 @@ class Enemigo1 inherits MutablePosition{
}

object aparienciaEnemigo {
var property valor = "b_fiesta_i.png"
}

object lineaEnemiga{
var property enemigo = new Enemigo1(vida = 100, position = game.at(1, 5))

/* method imagen(imagen){
enemigo.apariencia(imagen)
} */
method activar(){
enemigo.activar_enemigo()
}
var property valor = "cell1.png"
}
36 changes: 24 additions & 12 deletions juego.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -12,45 +12,57 @@ object juego{
points.reset()
//dibujar fondo
game.addVisual(fondoJuego)
//dibujar lateral superior
niveles.generarLateralSuperior()
//dibujar muros
niveles.generarEscenario()
//dibujar enemigo
lineaEnemiga.activar()
//lineaEnemiga.activar()
const jugador = new Jugador(valor = datosJugador.imagen())
//dibujar jugador
jugador.posicionate()
game.showAttributes(jugador)
//dibujar frutas
spawn.dibujarPuntos(1)
//dibujar puntos
game.addVisual(points)
//dibujar superior
niveles.generarBloquesSuperiores()
//dibujar puntos
game.addVisual(points)
//Activar el movimiento del enemigo
niveles.activarEnemigos()
const enemigo = new Enemigo1(vida = 150)
enemigo.aparecer()
enemigo.caminar()
game.onCollideDo(atajos.enemigo(), {elemento => elemento.impactado()})
//niveles.activarEnemigos()
//reproducir la musica correspondiente
musicaDeFondo.play()
//musicaDeFondo.play()
musica.sonido_continue()
}

//BORRAR ELEMENTOS DEL JUEGO
method limpiar(){
game.removeVisual(jugador)
lineaEnemiga.enemigo().limpiarEnemigos()
//game.removeVisual(atajos.jugador())
//lineaEnemiga.enemigo().limpiarEnemigos()
atajos.enemigo().limpiarEnemigos()
game.removeVisual(fondoJuego)
game.removeVisual(points)
niveles.limpiarEscenario()
musicaDeFondo.stop()
//musicaDeFondo.stop()
}

method cargarVisuales(posicion){
jugador.valor(coleccion.personaje(posicion))
datosJugador.imagen(coleccion.personaje(posicion))
datosJugador.imagen_ataque_izquierdo(coleccion.ataque_i(posicion))
datosJugador.imagen_ataque_derecho(coleccion.ataque_d(posicion))
datosJugador.imagen_atacando_izquierda(coleccion.animacion_i(posicion))
datosJugador.imagen_atacando_derecha(coleccion.animacion_d(posicion))
// lineaEnemiga.imagen(coleccion.enemigo(posicion))
aparienciaEnemigo.valor(coleccion.enemigo(posicion))
fondoJuego.valor(coleccion.fondo(posicion))
visual.valor(coleccion.bloque_i(posicion))
visualSuperior.valor(coleccion.bloque_s(posicion))
spawn.puntos(coleccion.puntos(posicion))
musicaDeFondo.sonido(game.sound(coleccion.musica(posicion)))
//musicaDeFondo.sonido(game.sound(coleccion.musica(posicion)))
}
method cargarSonido(posicion){
datosJugador.sonido_ataque(coleccion.sonido(posicion))
}
}
164 changes: 156 additions & 8 deletions jugador.wlk
Original file line number Diff line number Diff line change
@@ -1,26 +1,174 @@
import muros.*
import menus.menuPerdiste
import movimiento.*
import miscelaneos.*
import enemigos.*
import muros.*
import musica.*
import niveles.*
import menus.*

object jugador inherits FiguraConMovimiento(position = game.at(1, 1)) {
import movimiento.*

// override method jugador() = true
class Jugador inherits FiguraConMovimiento(position = new PosicionVariable(x = 1, y = 1)){

method jugador() = true

method posicionate(){
self.position(game.at(1, 1))
game.addVisualCharacter(self)
modificadorMapa.eventosDelTeclado()
}

var property valor = "p_helado.png"
method volver(){
if(sincronizadorDePantallas.pantallaActual() == "jugar"){
musica.sonido_continue()
game.addVisualCharacter(self)
}
}

var property valor = null

method image() = valor

method recolectar(punto){
game.removeVisual(punto)
}

method eliminate(){
musica.sonido_pause()
game.removeVisual(self)
}

method impactado() {
self.eliminate() //no debería ir acá, pero es donde mejor anda
sincronizadorDePantallas.cambiarPantalla("perdedor")
//console.println("entraste aca")
new MenuPerdiste().cargar()
}

method atacarDerecha() = new AtaqueDerecho().energia(self.position(), datosJugador.imagen_atacando_derecha(), 1)
method atacarIzquierda() = new AtaqueIzquierdo().energia(self.position(), datosJugador.imagen_atacando_izquierda(), -1)
}

object atajos{
method jugador() = game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head()
method enemigo() = game.allVisuals().filter({objeto => objeto.image() == aparienciaEnemigo.valor()}).head()
}

object datosJugador {
var property imagen = null
var property imagen_ataque_izquierdo = null
var property imagen_ataque_derecho = null
var property imagen_atacando_izquierda = null
var property imagen_atacando_derecha = null
var property sonido_ataque = null
}

object gokuAtacando {
//var property position = null
const property position = new PosicionVariable()
var property lado = null
method image() = lado

method impactado(){
sincronizadorDePantallas.cambiarPantalla("perdedor")
}

method eliminate(){
game.removeVisual(self)
}

}

class AtaqueDerecho{
var personaje = null
var property impacto = 0
const property position = new PosicionVariable(x = 1, y = 1)
const property sonido = game.sound(datosJugador.sonido_ataque())

method efectoSonoro() {
self.sonido().volume(0.2)
self.sonido().play()
}

method image() = datosJugador.imagen_ataque_derecho()

method impactado() {
atajos.enemigo().herido()
self.impacto(1)
}

method energia(posicion, lado, valor){
gokuAtacando.lado(lado)
gokuAtacando.position().establecerPos(posicion.x(), posicion.y())
position.establecerPos(posicion.x() + valor, posicion.y())
if(!niveles.mismaPosicion(self.position())){
self.efectoSonoro()
game.addVisual(gokuAtacando)
personaje = atajos.jugador()
atajos.jugador().eliminate()
game.addVisual(self)
game.schedule(500, {self.avanzar()})
}
}

method lugarValido() = niveles.mismaPosicion(game.at(position.x(), position.y()))

method avanzar(){
if(!niveles.mismaPosicion(game.at(position.x() + 1, position.y())) && position.x() + 1 < game.width() - 1 && impacto < 1 && sincronizadorDePantallas.pantallaActual() != "perdedor"){
position.goRight(1)
game.schedule(500, {self.avanzar()})
}
else{
const jugador = new Jugador()
jugador.valor(datosJugador.imagen())
jugador.position(gokuAtacando.position())
if(sincronizadorDePantallas.pantallaActual() == "jugar"){
jugador.volver()
}
self.eliminate()
gokuAtacando.eliminate()
if(sincronizadorDePantallas.pantallaActual() == "perdedor"){
//console.println("entraste aca")
new MenuPerdiste().cargar()
}
if(sincronizadorDePantallas.pantallaActual() == "ganador"){
new MenuGanaste().cargar()
}
}
}

method eliminate(){
self.sonido().stop()
game.removeVisual(self)
}
}

class AtaqueIzquierdo inherits AtaqueDerecho{
override method image() = datosJugador.imagen_ataque_izquierdo()

override method avanzar(){
if(!niveles.mismaPosicion(game.at(position.x() - 1, position.y())) && position.x() - 1 > 0 && impacto < 1 && sincronizadorDePantallas.pantallaActual() != "perdedor"){
position.goLeft(1)
game.schedule(500, {self.avanzar()})
}
else{
const jugador = new Jugador()
jugador.valor(datosJugador.imagen())
jugador.position(gokuAtacando.position())
if(sincronizadorDePantallas.pantallaActual() == "jugar"){
jugador.volver()
}
self.eliminate()
gokuAtacando.eliminate()
if(sincronizadorDePantallas.pantallaActual() == "perdedor"){
//console.println("entraste aca")
new MenuPerdiste().cargar()
//new MenuGanaste().cargar()
}
if(sincronizadorDePantallas.pantallaActual() == "ganador"){
new MenuGanaste().cargar()
}
}
}
}

object points{
Expand All @@ -40,12 +188,12 @@ object points{

object modificadorMapa inherits MutablePosition{

var property position = jugador.position()
var property position = null
var property estado_accion = ponerBloque

method modBloques(direccion) {
game.removeTickEvent("mover-puntero")
self.position(jugador.position())
self.position(atajos.jugador().position())
self.detectarSiguientePosicionValida(direccion)
}

Expand Down
Loading

0 comments on commit a58423d

Please sign in to comment.