¿Cuáles son las razones a favor y en contra de que un objeto del juego dibuje y actualice por sí mismo? Por ejemplo, si tiene un juego donde el jugador tiene una posición en la pantalla, por qué no tener una clase que lo abarca todo:¿Qué tiene de malo la arquitectura de un objeto de juego al dibujarse y actualizarse?
public class Player {
private int x, y, xVelocity, yVelocity;
private Sprite s;
//...
public Player() {
// load the sprite here, somehow?
}
public void draw(CustomGraphicsClass g) {
g.draw(s, x, y);
}
public void update(long timeElapsed) {
x += (xVelocity * timeElapsed);
y += (yVelocity * timeElapsed);
}
}
Lo que está mal con este diseño? ¿Cuáles son las caídas o las preocupaciones? ¿Cómo sería mejor escribir algo como esto, o mejor diseñar este tipo de cosas en un juego?
Además, algo conectado, ¿cómo implementarías la carga de esa imagen de Sprite?
Y, además, ¿cómo implementaría la colisión entre dos Player
s?
(probablemente debería separar estos extra de dos preguntas en nuevas preguntas, ¿eh?)
¡Me encanta la página a la que vinculó con "mucha más información"! Todavía estoy pensando en todo esto, pero es ** definitivamente ** útil no solo que se me diga qué hacer, sino que se me da un ejemplo decente y una discusión sobre las trampas y otras consideraciones. – Ricket
¡Gracias! Es un libro en el que estoy trabajando, pero está más o menos en pausa en este momento. Avíseme si algo no está claro en el capítulo. – munificent
+1 Solo para el punto 3, que es la razón principal, especialmente en las consolas. La encapsulación puede conducir a un pobre rendimiento del caché, especialmente cuando se almacenan indicadores como IsVisible por objeto, luego se carga toda la línea de caché para ese obj solo para comprobar si se debe dibujar, etc. – zebrabox