Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 61 commits into
base: feedback
Choose a base branch
from
Open

Feedback #1

wants to merge 61 commits into from

Conversation

github-classroom[bot]
Copy link

@github-classroom github-classroom bot commented Sep 19, 2024

👋! GitHub Classroom created this pull request as a place for your teacher to leave feedback on your work. It will update automatically. Don’t close or merge this pull request, unless you’re instructed to do so by your teacher.
In this pull request, your teacher can leave comments and feedback on your code. Click the Subscribe button to be notified if that happens.
Click the Files changed or Commits tab to see all of the changes pushed to the default branch since the assignment started. Your teacher can see this too.

Notes for teachers

Use this PR to leave feedback. Here are some tips:

  • Click the Files changed tab to see all of the changes pushed to the default branch since the assignment started. To leave comments on specific lines of code, put your cursor over a line of code and click the blue + (plus sign). To learn more about comments, read “Commenting on a pull request”.
  • Click the Commits tab to see the commits pushed to the default branch. Click a commit to see specific changes.
  • If you turned on autograding, then click the Checks tab to see the results.
  • This page is an overview. It shows commits, line comments, and general comments. You can leave a general comment below.
    For more information about this pull request, read “Leaving assignment feedback in GitHub”.

Subscribed: @GonGarciaFontenla @micarodriguezm @nanoo000 @SofiaBaudo @marcelobuergo @SofiaBaudoUTN

Copy link

@dlopezalvas dlopezalvas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¡Hola @pdepjm/la-logia!

Les dejamos algunos comentarios sobre el código que tienen hasta ahora, van a poder charlalo con Ceci en más detalle si lo necesitan. Cualquier cosa pueden consultar por acá también.

Por otro lado, les consulto ¿tienen algun diagrama de clases hecho?

¡Saludos!

elementos.wlk Outdated
Comment on lines 6 to 8
var property imagen = "Designer.jpeg"

method image() = imagen

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Es necesario tener la imagen como variable si nunca va a cambiar dinámicamente en el objeto? Podríamos directamente tener:

method image() = "Designer.jpeg"

Recordemos que vamos a querer guardanos cosas en variables justamente si necesitamos que cambien dinámicamente (es decir durante ejecución), si siempre es la misma, podemos hacerla constante o más fácil incluso retornar el valor directamente en el método de consulta.

Revisen esto en el resto de los objetos.

elementos.wlk Outdated
Comment on lines 55 to 64
method moverse() {
const x = position.x() + 1
const y = position.y()

if (x < game.width() + 1) {
position = game.at(x, y)
} else {
position = game.at(0, y)
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Entiendo que esto es para que los vehiculos no queden fuera de los límites del mapa, bien 👍. Pero, tengan cuidado que se está repitiendo en todos los vehículos la misma lógica, el jueves vamos a ver un concepto llamado Herencia que les va a servir para resolver esto, revisenlo luego de esa clase (quizás necesitamos una clase abstracta llamada Vehiculo o algo de este estilo).

Un detallito mínimo, relacionado con el tema de declaratividad, es que quizás podrían delegar a un método aparte la idea de "está dentro de los límites" (x < game.width() + 1), es super mínimo pero teniendo if(self.estaDentroDeLimites(x)) hace que se entienda un poco mejor lo que hace el método moverse.

escenarios.wlk Outdated
Comment on lines 23 to 51
class Nivel {
method configuracionInicial() {
}

method configuracionTeclado() {
}

method configuracionFondo() {
}

method instanciarObjetos() {
}

method configuracionVisual() {
}

method configuracionVisualExtra() {
}

method instanciarObjetosExtra() {
}

method configuracionVehiculos() {
}

method finalizarNivel(){}

}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hay un concepto llamado clase abstracta que vamos a ver la clase del jueves (lean esto luego de esa clase para entenderlo mejor), esto que están haciendo acá es una clase abstracta, ya que la están usando para obligar a los niveles a tener estos métodos pero nunca se instanciará esta clase, sirve de alguna forma para tipar.
Con esto en mente, ojo que no es lo mismo tener un método que no hace nada como el siguiente:

method finalizarNivel(){}

A un método abstracto, que se define sin las llaves y lo creamos para decir que las clases hijas tienen que definirlo:

method finalizarNivel()

Aprovechen a poner acá configuraciones generales que sean iguales para todos los niveles (si es que las hay) , que no sea una clase sola de métodos para definir en las subclases.

escenarios.wlk Outdated
}
}

class Nivel1 {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿No es un nivel? ¿Por qué no hereda de la clase Nivel?

escenarios.wlk Outdated
Comment on lines 200 to 206
game.onTick(3000, "Oleada autos", {=> carTraffic.generarAutos(autos1,2, -4, 2)})
game.onTick(1000, "Oleada primer auto", {=> carTraffic.generarAutos(autos2, 2, -4, 2)})
// game.onTick(6000, "Oleada autos tres", {=> carTraffic.generarAutos(autos3, 2, -4, 2)})

game.onTick(4500, "Oleada autos", {=> carTraffic.generarAutos(autos1,2, -4, 4)})
game.onTick(1900, "Oleada primer auto", {=> carTraffic.generarAutos(autos2, 2, -4, 4)})
// game.onTick(7000, "Oleada autos tres", {=> carTraffic.generarAutos(autos3, 2, -4, 4)})

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ojo con que estos eventos se llamen igual si representan diferentes cosas, llamarlos igual nos quita control sobre cada evento específico (no tenemos forma de identificarlos por separado).

Por otro lado, por lo que entiendo los objetos vehiculos una vez que desaparecen de la pantalla se reposicionan al principio nuevamente, por lo que siempre serían los mismos objetos que estarían en pantalla, constantemente reposicionandose. Con esto en mente ¿qué solucionan los eventos estos? ¿En qué momento necesitaria instanciar nuevos vehiculos?

estados.wlk Outdated
Comment on lines 3 to 20
object puntos {

method position() = game.at(42,23)

method text() = "Puntos: "
}

object vida {

method position() = game.at(42,24)

method text() = toby.valorVida().toString()
}

object vida2 {
method position() = game.at(41,24)
method text() = "Vida: "
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Estaría bueno (a futuro) para la jugabilidad que el juego me avise visualmente o con un sonido que perdí vida o gane puntos, ahora mismo no se comunica al jugador estas cosas, si bien están los textos no son rápidos de encontrar o ver.

estados.wlk Outdated
Comment on lines 10 to 20
object vida {

method position() = game.at(42,24)

method text() = toby.valorVida().toString()
}

object vida2 {
method position() = game.at(41,24)
method text() = "Vida: "
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Hay alguna razón para tener la vida separada en dos? ¿Por qué no hacer esto?

method text() = "Vida: " + toby.valorVida().toString()

personaje.wlk Outdated

method valorVida() = valorVida

method image() = imagen

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Cambia la imagen dinámicamente? Mismo comentario que las imagenes de los fondos

elementos.wlk Outdated
Comment on lines 98 to 100
method chocasteCon(personaje) {
personaje.modificarVida(10)
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahora mismo todos los vehiculos tienen el mismo efecto: bajar vida. Estaría bueno que alguno tuviera algun otro efecto, como por ejemplo subirle la velocidad a todos los vehículos, o hacer que sangre y pierda vida por segundo el personaje hasta que consiga un kit médico. Eso veanlo para que estemos usando el polimorfismo de forma más copada.

Más allá de esto fijense que cuando tengan una clase Vehiculo, que se repite la lógica de que el personaje pierda vida, lo que debería estar definido en cada tipo de vehiculo es cuánta vida le hace perder.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

También estaría bueno que cuando colisiona, el vehiculo desaparezca de la pantalla, para que se entienda que tuvo un efecto la colisión (a nivel visual).

Comment on lines +7 to +11
describe "Test de personaje" {
test "Personaje colisiona y pierde vida." {
const auto = new Car()
auto.chocasteCon(toby)
assert.that(toby.valorVida() < 100)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¿Pensaron más tests?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants