Skip to content

Commit

Permalink
commit
Browse files Browse the repository at this point in the history
  • Loading branch information
AyalaSebastian committed Oct 17, 2024
1 parent e65faa0 commit a35d98f
Show file tree
Hide file tree
Showing 13 changed files with 71 additions and 35 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ UTN - Facultad Regional Buenos Aires - Materia Paradigmas de Programación
- Sebastián Santiago Ayala Osorio
- Cullen Salvador


## Explicaciones Teóricas:
Aplicamos clases para manzana roja ,manzana dorada ,proyectil y enemigo para instanciar objetos en cantidades variadas .Utilizamos polimorfismo para los dos tipos de manzanas en el metodo "habilidad" ; Delegamos en varios objetos ,en primera instancia delegamos el metodo de "habilidadActivada" para manzana dorada y no para el militar .También delegamos al momento de hacer el método "disparar" dejando este en el militar ,además tanto el movimiento como la colisión de la bala lo delegamos en aquel objeto de modo que este mejor organizada la estructura del código .


## Capturas
Expand Down
Binary file added assets/Bala_Loca.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 removed assets/Fondo2.jpg
Binary file not shown.
Binary file added assets/Soldado_Dorado.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 removed assets/bala_blanca.png
Binary file not shown.
Binary file added assets/cortado2.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 removed assets/gameOver.png
Binary file not shown.
Binary file removed assets/imagenDeFondo.jpg
Binary file not shown.
Binary file removed assets/militarPrueba2.png
Binary file not shown.
Binary file added assets/prueba.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
67 changes: 39 additions & 28 deletions example.wlk
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import wollok.game.*

object militar {
var property image = "Soldado.png"
var image = "Soldado.png"
var property position = game.at(0, game.height() / 2) // posicionar al militar en el borde izquierdo, centrado verticalmente
var vida = 3

method image() = image

method image(nuevaImagen) {
image = nuevaImagen
}

method cuantaVida() = vida

Expand All @@ -28,10 +33,10 @@ object militar {
const bala1 = new Proyectil()
game.addVisual(bala1)
bala1.moverse()
game.onCollideDo(bala1, { enemigo => bala1.enemigoColisionado(enemigo)})
game.onCollideDo(bala1, { enemigo1 => bala1.enemigoColisionado(enemigo1)})

//al salir del borde se elimina la bala
if(bala1.position() == game.width()) {
if(bala1.position().x() == game.width()) {
game.removeVisual(bala1)
game.removeTickEvent("moverProyectil")
}
Expand All @@ -51,7 +56,7 @@ class Enemigo {
var property image = "zombie2.png"
var property position = game.at(0, 0) // Inicialmente en (0, 0), se ajustará a la hora de aparecer

method aparecer() {
method generarEnemigo() {
const x = game.width() - 1 // Aparecer en el borde derecho
const y = 1.randomUpTo(game.height() - 2).truncate(0) // Posición aleatoria en el eje y
position = game.at(x, y)
Expand All @@ -67,14 +72,14 @@ class Enemigo {
} else {
game.removeVisual(self) // Eliminar al enemigo si llega al borde izquierdo
game.say(militar, "Perdí cayó la base")
game.stop()

// Fin del juego
}
}

method teTocoEnemigo() {
self.desaparecer()
if(manzanaDorada.inmunidadActivada()){
self.morir()
if(manzanaDorada1.inmunidadActivada()){
game.say(militar, "¡SOY INMUNE!")
} else{
if(militar.cuantaVida() > 1){
Expand All @@ -83,28 +88,27 @@ class Enemigo {
}
else {
game.say(militar, "¡Fin Del Juego!")

// Fin del juego
}
}

// Fin del juego
}
method desaparecer(){
game.removeTickEvent("movimiento" )// Detener el movimiento del enemigo
game.removeVisual(self)

}
// Método para destruir el enemigo y sumar puntos
method morir() {
self.desaparecer()
game.removeTickEvent("movimiento" )// Detener el movimiento del enemigo
game.removeVisual(self)
// const puntosPorMatar = 5

}

}

class Proyectil {
//var property position = self.posicionInicial()
//method posicionInicial() = militar.position().right(1)

var property image = "bala_blanca.png"
var property image = "Bala_Loca.png"
var property position = militar.position() // La bala proviene del militar

method moverse() {
Expand All @@ -120,24 +124,28 @@ class Proyectil {
}
}

method enemigoColisionado(enemigo) {
method enemigoColisionado(enemigo1) {
game.removeVisual(self) // Eliminar proyectil
game.removeTickEvent("moverProyectil") // Detener el movimiento del proyectil
enemigo.morir() // Destruir al enemigo
enemigo1.morir() // Destruir al enemigo
}
}

const enemigo1 = new Enemigo()

const manzanaRoja1 = new ManzanaRoja()

object manzanaRoja{
const manzanaDorada1 = new ManzanaDorada()
class ManzanaRoja{

var property image = "Manzana.png"
var property position = game.at(0, 0) // Inicialmente en (0, 0), se ajustará a la hora de aparecer

method aparecer() {
const x = 1.randomUpTo(game.width() - 2).truncate(0) // Aparecer en el borde derecho
const y = 1.randomUpTo(game.height() - 2).truncate(0) // Posición aleatoria en el eje y
method generarManzanaRoja() {

//posicion aleatoria
const x = 0.randomUpTo(game.width()) // Aparecer en el borde derecho
const y = 0.randomUpTo(game.height()) // Posición aleatoria en el eje y
position = game.at(x, y)

game.addVisual(self)
Expand All @@ -154,29 +162,32 @@ object manzanaRoja{
}
}

object manzanaDorada{
class ManzanaDorada{

var property image = "Manzana_Dorada.png"
var property position = game.at(0, 0) // Inicialmente en (0, 0), se ajustará a la hora de aparecer
var property inmunidadActivada = false
method aparecer() {
const x = 1.randomUpTo(game.width() - 2).truncate(0) // Aparecer en el borde derecho
const y = 1.randomUpTo(game.height() - 2).truncate(0) // Posición aleatoria en el eje y

method generarManzanaDorada() {

const x = 0.randomUpTo(game.width()) // Aparecer en el borde derecho
const y = 0.randomUpTo(game.height()) // Posición aleatoria en el eje y
position = game.at(x, y)

game.addVisual(self)
}


method teComioMilitar(){
self.habilidad()
game.removeVisual(self)
}

method habilidad() {
inmunidadActivada = true

game.onTick(5000, "deshabilitar inmunidad",{ self.inmunidad() })
militar.image("Soldado_Dorado.png")
game.onTick(5000, "deshabilitar inmunidad",{ self.inmunidad() })
game.schedule(5000, {militar.image("Soldado.png")})

}

method inmunidad(){
Expand Down
16 changes: 10 additions & 6 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,24 @@ import example.*
program defenderBase {
game.height(9)
game.width(16)
game.boardGround("pasto.jpg")
game.boardGround("cortado2.png")
game.cellSize(50)
game.title("Defender la Base")

// Generar enemigos cada 4 segundos
game.onTick(4000, "aparece enemigo", {
const enemigo1 = new Enemigo()
enemigo1.aparecer()
enemigo1.generarEnemigo()
})

game.onTick(10000, "aparece manzana roja", {
game.addVisual(manzanaRoja)
const manzanaRoja1 = new ManzanaRoja()
manzanaRoja1.generarManzanaRoja()
})

game.onTick(15000, "aparece manzana dorada", {
game.addVisual(manzanaDorada)
const manzanaDorada1 = new ManzanaDorada()
manzanaDorada1.generarManzanaDorada()
})
/*
// Actualizar el tiempo jugado y los puntos cada segundo
Expand All @@ -29,13 +31,15 @@ program defenderBase {
game.say(militar, militar.puntosVisual) // Mostrar puntos y tiempo en pantalla
})
*/
// Evento para disparar con la tecla "space"
// Evento para disparar con la tecla "p"
keyboard.p().onPressDo { militar.disparar() }

game.whenCollideDo(militar, { enemigo1 => enemigo1.teTocoEnemigo() })

game.whenCollideDo(militar, { manzanaRoja => manzanaRoja.teComioMilitar() })

game.whenCollideDo(militar, { manzanaDorada => manzanaDorada.teComioMilitar() })

keyboard.e().onPressDo { militar.dimeLasVidasActuales() }

game.addVisualCharacter(militar)
Expand Down
20 changes: 20 additions & 0 deletions pruebas.wtest
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import example.*

test "vida del militar inicial en 3" {
assert.equals(3, militar.cuantaVida())
}

test "La vida es 4 cuando el militar toca una manzana roja" {
const manzanaRoja1 = new ManzanaRoja()
manzanaRoja1.teComioMilitar()
assert.equals(4, militar.cuantaVida())

}

test "Manzana dorada hace inmune a militar" {
const manzanaDorada1 = new ManzanaDorada()
manzanaDorada1.teComioMilitar()
const enemigo1 = new Enemigo()
enemigo1.teTocoEnemigo()
assert.that(manzanaDorada1.inmunidadActivada())
}

0 comments on commit a35d98f

Please sign in to comment.