Android - Problema con las animaciones de un videojuego

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 263 puestos en Android (en relación al último mes)
Gráfica de Android

Problema con las animaciones de un videojuego

Publicado por Álvaro (1 intervención) el 25/01/2020 04:25:29
Hola,

¿Cómo están? estoy realizando una práctica para un ciclo de grado superior, esa práctica consiste en realizar un videojuego en android studio. El juego es similar al juego de google play "Duet" (https://play.google.com/store/apps/details?id=com.kumobius.android.duet&hl=es) obviamente más sencillo, aunque me gustaría intentar mover las dos bolas de forma independiente. El caso es que como veis deben caer unos bloques. El problema viene cuando arranco el juego, veo los bloques caer... pero dejan una estela y nunca desaparece. Es como si dibujara de forma indefinida toooodas las coordenadas por las que ha pasado cada una de las figuras, incluso las elimino del arrayList donde las almaceno cuando salen de pantalla... y siguen dibujándose.

El código completo está aquí: https://github.com/AVR185/JuegoAndroidStudio (aunque también lo dejaré para descargar desde el comentario)

Explicando un poco el código:
Tengo una clase abstracta Rectángulo de la que heredan RectanguloX, Cuadrado, Hexagono, cada uno tiene un patrón de movimiento diferente.
En la clase bucle del juego, siguiendo el ejemplo del libro de clase, haces un bucle infinito donde en cada frame actualizas las posiciones de todas las figuras presentes en pantalla y las dibujas (metodo renderizar).
En la clase Juego es donde cargas los bloques y actualizas y llamas al método dibujar de las clases RectanguloX, Hexagono y Cuadrado recorriendo el arraylist de bloques que has ido cargando.
Ese método es tal que así:

1
2
3
4
@Override
public void Dibujar(Canvas c){
    c.drawBitmap(Juego.getHexagono(),this.coordenada_x, this.coordenada_y, null);
}

Y lo llamo de esta forma:

1
2
3
4
5
6
7
public void renderizar(Canvas canvas){
    if(canvas!=null){
        for(Rectangulo r : listaBloques){
            r.Dibujar(canvas);
        }
    }
}


¿Qué es lo que estoy haciendo mal? porque por más vueltas que le doy no pillo donde está el error y el caso es que hago depuración, y el arrayList me guarda los elementos bien, se actualizan bien sus coordenadas... solo encuentro explicación en algo que pase en el método Dibujar.

Muchas gracias y perdon por extenderme tanto jeje
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder