Skip to content

Commit

Permalink
nivel
Browse files Browse the repository at this point in the history
  • Loading branch information
Malena-Sciutto committed Oct 4, 2023
1 parent a435a51 commit 333e932
Show file tree
Hide file tree
Showing 11 changed files with 300 additions and 6 deletions.
Binary file added assets/guardia.derecha.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/guardia.izquierda.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/nada.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pared.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/tunel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions src/direcciones.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ object derecha {
method siguiente(position) {
return position.right(1)
}

method opuesto(){
return izquierda
}

}

Expand All @@ -13,6 +17,10 @@ object izquierda {
method siguiente(position) {
return position.left(1)
}

method opuesto(){
return derecha
}

}

Expand All @@ -21,6 +29,10 @@ object arriba {
method siguiente(position) {
return position.up(1)
}

method opuesto(){
return abajo
}

}

Expand All @@ -29,6 +41,10 @@ object abajo {
method siguiente(position) {
return position.down(1)
}

method opuesto(){
return arriba
}

}

Expand All @@ -37,6 +53,14 @@ object tablero {
method pertenece(position) {
return position.x().between(0, game.width() - 1) and position.y().between(0, game.height() - 1)
}

method puedeOcupar(posicion, personaje){
return self.pertenece(posicion) and not self.haySolido(posicion, personaje)
}

method haySolido(position, personaje){
return game.getObjectsIn(position).any({objeto => objeto.esSolidoPara(self)})
}

}

103 changes: 103 additions & 0 deletions src/enemigos.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import wollok.game.*
import direcciones.*

class Guardia {
var property position = game.at(2,3)
var ladoAMover = derecha

method image(){
return "guardia." + ladoAMover.toString() + ".png"
}


method caminar(){
const proxima = ladoAMover.siguiente(position)
position = proxima
self.cambiarLadoSiCorresponde()
}

method cambiarLadoSiCorresponde(){
if (position.x() == game.width() -1 or position.x() == 0){
ladoAMover = ladoAMover.opuesto()
}
}

method esSolidoPara(personaje){
return false
}

method colisionarCon(personaje){
game.say(self, "te atrapé!")
personaje.volverAlPrincipio()
}

}

class CaminoInvalido{
const property position
const posicionEntrada = tunel.position()

method image(){
return "nada.png"
}

method colisionarCon(personaje){
personaje.position(self.arribaDeLaEntrada())
}

method arribaDeLaEntrada(){
return arriba.siguiente(posicionEntrada)
}

method esSolidoPara(personaje){
return false
}
}



object tunel{
var property position = game.at(0,0)

method image(){
return "tunel.png"

}

method esSolidoPara(personaje){
return personaje.puedePasar(self)
}

method colisionarCon(personaje){

}

}


class Pared{
const property position

method image(){
return "pared.png"
}

method esSolidoPara(personaje){
return true
}
}

class AtrapaMagos{
const property position

method image(){
return "nada.png"
}

method colisionarCon(personaje){
game.say(personaje, "Me pueden ver!")
personaje.volverAlPrincipio()
}
}


4 changes: 4 additions & 0 deletions src/juego.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import wollok.game.*
import personajes.*
import direcciones.*
import objetosUtiles.*
import enemigos.*

program juego {
game.title("Harry Potter: Escape de Azkaban")
Expand All @@ -13,6 +14,7 @@ program juego {
game.addVisual(oculto)
game.addVisual(harry)
game.addVisual(sirius)
game.onTick(1000, "caminataGuardias", {guardias.caminar()})

keyboard.up().onPressDo({ harry.mover(arriba) })
keyboard.down().onPressDo({ harry.mover(abajo) })
Expand All @@ -26,6 +28,8 @@ program juego {

// keyboard.q().onPressDo({ sirius.equiparSiPuede(game.uniqueCollider(sirius))})
// keyboard.l().onPressDo({ harry.equiparSiPuede(game.uniqueCollider(harry))})
game.onCollideDo(harry, {colisionado => colisionado.colisionarCon(harry)})
game.onCollideDo(sirius, {colisionado => colisionado.colisionarCon(sirius)})
keyboard.space().onPressDo({ sirius.usarObjeto() })
keyboard.enter().onPressDo({ harry.usarObjeto() })

Expand Down
116 changes: 116 additions & 0 deletions src/nivelx.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import wollok.game.*
import enemigos.*
import personajes.*
import objetosUtiles.*

object nivelx {

var celdas =
[[i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, p, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[i, i, i, i, i, i, i, i, i, i, i, i, i, i, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[i, i, i, i, i, i, i, i, i, _, _, _, i, i, _, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, i, i, i, i, i, i, _, i, _, _, i, _, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, i, i, i, i, i, i, _, _, i, _, _, _, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, i, i, i, i, i, i, i, _, i, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, i, i, i, i, i, i, i, _, _, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, i, _, _, _, _, i, i, i, _, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, _, _, i, i, _, _, _, i, _, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, i, i, i, i, i, i, _, i, _, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, i, i, i, i, i, i, _, _, _, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, i, i, i, i, i, i, i, i, i, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, i, i, i, i, i, i, i, i, i, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, _, _, i, _, _, _, i, i, i, i, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[i, i, i, _, _, _, i, _, i, i, i, i, i, i, i, p, a, a, a, a, a, a, a, a, a, a, a, a, a, a],
[p, p, p, p, p, p, p, t, p, p, p, p, p, p, p, p, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]
].reverse()


var guardiasYOculto=
[[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, g, _, _, _, _, g, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, g, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, g, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _],
[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]
].reverse()


method generar(){
(0..game.width() -1).forEach({x=>
(0..game.height() -1).forEach()({y=>
self.generarCelda(x,y)
self.generarGuardiasYOculto(x,y)
})
})
}

method generarCelda(x,y){
const celda = celdas.get(y).get(x)
celda.generar(game.at(x,y))
}

method generarGuardiasYOculto(x,y){
const celda = celdas.get(y).get(x)
celda.generar(game.at(x,y))
}

}

object _{
method generar(position){}
}

object i{
method generar(position){
game.addVisual(new CaminoInvalido(position = position))
}
}

object t{
method generar(position){
game.addVisual(tunel)
tunel.position(position)
}
}

object o{
method generar(position){
const oculto = new Oculto(position = position)
game.addVisual(oculto)
objetosUsables.agregarObjeto(oculto)
}
}

object p{
method generar(position){
game.addVisual(new Pared(position = position))
}
}

object g{
method generar(position){
game.addVisual(new Guardia(position = position))
}
}

object a{
method generar(position){
game.addVisual(new AtrapaMagos(position = position))
}
}


12 changes: 9 additions & 3 deletions src/objetosUtiles.wlk
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
import wollok.game.*

object oculto {
class Oculto {

var property position = game.at(2, 5)
var property position

method image() = "escondite.png"

method serUsado(personaje) {
personaje.ocultarse()
}

method colisionarCon(personaje){}

}

object objetosUsables {

const objetosUsables = #{ oculto }
const objetosUsables = #{}

method objetosUsables() {
return objetosUsables
}

method agregarObjeto(objeto){
objetosUsables.add(objeto)
}

method losQuePertenecen(objetos) {
return objetos.filter({ objeto => objetosUsables.contains(objeto) })
Expand Down
Loading

0 comments on commit 333e932

Please sign in to comment.