Skip to content

Commit

Permalink
añadi posible tienda, generador de plantas y junte
Browse files Browse the repository at this point in the history
funciones de movimiento del cursor dentro de un solo metodo
  • Loading branch information
NahuelMarek committed Oct 4, 2024
1 parent 7cce3a8 commit ed302e2
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 50 deletions.
28 changes: 28 additions & 0 deletions cursor.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import wollok.game.*

object cursor {
var property position = new MutablePosition(x=7, y=3)
var property vida = 3 // Le doy una propiedad vida para que reciba daño cuando choca con un zombie

method perderVida(danio) { vida -= danio}

method image() = "marcoRojo.png"

method accion(){
keyboard.right().onPressDo({ self.moverseDerecha() })
keyboard.left().onPressDo({ self.moverseIzquierda() })
keyboard.up().onPressDo({ self.moverseArriba() })
keyboard.down().onPressDo({ self.moverseAbajo() })
}

method moverseDerecha() = if (self.position().x()<14) position.goRight(1)
method moverseIzquierda() = if (self.position().x()>0) position.goLeft(1)
method moverseArriba() = if (self.position().y()<4) position.goUp(1)
method moverseAbajo() = if (self.position().y()>0) position.goDown(1)

method noEstaViva() = vida < 0

method morir(){
if (self.noEstaViva()){ game.say(self, "Durisimo Helmano")} // Delego la resonsabilidad de morir a pepita
}
}
2 changes: 1 addition & 1 deletion generadorDeEnemigos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ object generadorDeEnemigos {
if (numero==1) {/*generara un zombie normal*/
var nombreParaEnemigo = self.nombre() /* esto esta hecho porque sino wollok se enoja,
para poder crear un enemigo*/
nombreParaEnemigo = new ZombiesNormales()
nombreParaEnemigo = new ZombiesNormales(position= new MutablePosition(x=10, y=0.randomUpTo(5).truncate(0)))
enemigo.add(nombreParaEnemigo)/*se añade a la lista de enemigos activos*/
return game.addVisual(nombreParaEnemigo)/*muestra al enemigo en el juego*/
}
Expand Down
22 changes: 22 additions & 0 deletions generadorDePlantas.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import plantas.*
object generadorDePlantas {
var nombrePlanta = 0 /*asigno el nombre a los enemigos que voy creando segun numeros, asi puedo crear nombres nuevos
automaticamente*/

const plantas = #{}/*contiene cada enemigo que fue creando*/

method nombre() = nombrePlanta /*para poder consultar el ultimo nombre usado*/
method sumarPlanta() { /*suma 1 a nombre enemigo para asi crear enemigos nuevos, luego hay que hacer la funcion para que reste 1 cuando maten a un enemigo*/
nombrePlanta+=1
}
method generarPlanta(planta, posicion){/*segun el numero ingresado, se generara un tipo de enemigo distinto*/
var nombreParaPlanta = self.nombre() /* esto esta hecho porque sino wollok se enoja,para poder crear un enemigo*/
if (planta=="papa")
nombreParaPlanta = new Papa(position= posicion)
else if (planta=="guisante")
nombreParaPlanta = new Guisante(position= posicion)
plantas.add(nombreParaPlanta)/*se añade a la lista de enemigos activos*/
return game.addVisual(nombreParaPlanta)/*muestra al enemigo en el juego*/

}
}
30 changes: 15 additions & 15 deletions main.wpgm
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
import wollok.game.*

import pepita.*
import cursor.*
import zombie.*
import fantasma.*
import menu.*
import generadorDeEnemigos.*
program PepitaGame {
game.title("Pepita")
game.height(5)
program cursorGame {
game.title("cursor")
game.height(6)
game.width(15)
game.cellSize(100)
/*game.addVisual(Fantasmas)*/
game.addVisual(pepita)

keyboard.d().onPressDo({ pepita.moverseDerecha(1) })
keyboard.a().onPressDo({ pepita.moverseIzquierda(1) })
keyboard.w().onPressDo({ pepita.moverseArriba(1) })
keyboard.s().onPressDo({ pepita.moverseAbajo(1) })
game.addVisual(cursor)
game.addVisual(menu)
menu.accion()
cursor.accion()
menu.iniciarTienda()
game.onTick(3000, "generar nuevo Enemigo", {generadorDeEnemigos.sumarEnemigo()
generadorDeEnemigos.generarEnemigo(1)})/*suma 1 a nombreEnemigo para poder crear el siguiente, y genera un enemigo,
se hace en este orden ya que si se crea el primer enemigo, luego un segundo, y antes de que que se genere el
Expand All @@ -24,19 +24,19 @@ program PepitaGame {
game.onTick(3000, "mover enemigo", {generadorDeEnemigos.moverEnemigos()})/*cada cierto tiempo hace que se muevan
los enemigos*/

game.whenCollideDo(pepita, { elemento =>
game.whenCollideDo(cursor, { elemento =>
elemento.moverse(false)
})/*cuando chocan con pepita, frenan, a futuro seria que cuando un zombie choca con una planta, frena y empieza a
})/*cuando chocan con cursor, frenan, a futuro seria que cuando un zombie choca con una planta, frena y empieza a
atacar*/



game.start()

game.onCollideDo(pepita, {elemento => game.say(elemento, "Duro de Cojones")})
game.onCollideDo(pepita, {elemento => pepita.perderVida(elemento.danio())})
game.onCollideDo(cursor, {elemento => game.say(elemento, "Duro de Cojones")})
game.onCollideDo(cursor, {elemento => cursor.perderVida(elemento.danio())})

game.onTick(3000, "matar pepita", {if (pepita.noEstaViva()){pepita.morir()}})
game.onTick(3000, "matar cursor", {if (cursor.noEstaViva()){cursor.morir()}})

const musica = game.sound("musica.mp3")
musica.shouldLoop(true)
Expand Down
33 changes: 33 additions & 0 deletions menu.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import generadorDePlantas.*
import plantas.*
import cursor.*

object menu {
const position = new MutablePosition(x=0, y=5)
method position() = position

var property imagen = "marcoRojo.png"
method image() = imagen

method accion(){
keyboard.d().onPressDo({self.moverseDerecha()})
keyboard.a().onPressDo({self.moverseIzquierda()})
keyboard.enter().onPressDo({self.generarPlanta()})
}
method moverseDerecha() = if (self.position().x()<6) position.goRight(1)
method moverseIzquierda() = if (self.position().x()>0) position.goLeft(1)
method generarPlanta(){
const plantaAgenerar = game.colliders(self) // no usamos uniqueColliders porque tira error si no hay ninguna
const plantaSeleccionada = plantaAgenerar.first().tipo()
const posicion = game.at(cursor.position().x(),cursor.position().y())
generadorDePlantas.generarPlanta(plantaSeleccionada,posicion)
}

method iniciarTienda(){
const papaTienda = new Papa(position = game.at(0,5))
game.addVisual(papaTienda)
const guisanteTienda = new Guisante(position = game.at(1,5))
game.addVisual(guisanteTienda)
}
}

31 changes: 0 additions & 31 deletions pepita.wlk

This file was deleted.

26 changes: 26 additions & 0 deletions plantas.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
class Papa{
const position
const property tipo = "papa"
var property vida=100
method position() = position
var property imagen = "golondrina.png"
method image() = imagen

method recibeDanio(danio) {
self.vida(self.vida() - danio)
}
}

class Guisante{
const position
const property tipo = "guisante"
var property vida=100
method position() = position
var property imagen = "zombie.png"
method image() = imagen

method recibeDanio(danio) {
self.vida(self.vida() - danio)
}
}
const pepe = new Guisante (position=game.at(0,0))
5 changes: 2 additions & 3 deletions zombie.wlk
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

class ZombiesNormales {
const position = new MutablePosition(x=10, y=0.randomUpTo(5).truncate(0))
const position
var property moverse = true /*va a servir para hacer que deje de avanzar*/
method position() = position
var property imagen = "slime_base.png"
var property imagen = "slime base.png"
method image() = imagen

method movete() {
Expand All @@ -19,4 +19,3 @@ class ZombiesNormales {

}

const pepe = new ZombiesNormales()

0 comments on commit ed302e2

Please sign in to comment.