Me gustaría crear un juego económico basado en una civilización antigua. No estoy seguro de cómo diseñarlo. Si estuviera trabajando en un juego más pequeño, como una copia de "Space Invaders", no tendría problemas para estructurarlo así:
- Clase de control principal
- Clase de gráficos
- Clase de jugador
- Clase enemiga
No entiendo cómo haría esto para proyectos más grandes como mi juego económico. ¿Creo una clase de país que contiene un montón de ciudades? ¿Las ciudades contienen mucha clase de construcción, la mayoría contienen clases de personas? ¿Hago una clase de búsqueda de ruta a la que el jugador pueda acceder para moverse?
java
architecture
Matthew G.
fuente
fuente
Respuestas:
Seguro.
Seguro.
Seguro.
Todo lo que has sugerido anteriormente parece razonable. Puede que no sea la mejor manera para ti a largo plazo, pero está bien. Obviamente tiene sentido que lo sepas, ya que es el modelo organizativo que se te ocurrió por primera vez. Es importante que tome eso y comience una implementación a partir de él. Ambos lo ayudarán a comenzar, superando esta "parálisis de diseño" inicial que a menudo afecta a los desarrolladores al comienzo de una tarea, y (si se demuestra que tiene algún defecto) le enseñará una o dos cosas sobre los pros y los contras. de ese enfoque particular al diseño.
Naturalmente, ha tomado los conceptos en su cabeza y los ha agrupado en código de acuerdo con algunas reglas simples:
Person
clase, pero si el juego solo se preocupa por ellos en conjunto, como en versiones anteriores de SimCity, usted puede que no necesite ese tipo ni instancias de ese tipo para crear un mapeo 1: 1 de la población de una ciudad.int populationCount
Puede ser suficiente).Si bien es simple, responder esas preguntas puede ser de gran beneficio al intentar decidir si y cómo transformar un concepto mental en código fuente. También es posible que desee leer sobre el principios SÓLIDOS del diseño orientado a objetos .
Tenga en cuenta que la sugerencia de un sistema de entidad / componente hecha en los comentarios también es un enfoque válido, aunque lo evitaría aquí a menos que vuelva a definir su proyecto para que sea más pequeño (simplemente porque asumir dos desafíos nuevos y grandes en un proyecto puede ser demasiado desalentador y puede diluir el beneficio educativo que de otro modo recibiría al enfocarse solo en uno). En un modelo orientado a componentes, el "tipo" en las preguntas anteriores se vuelve más implícito: no el tipo concreto en el código, sino el tipo implícito definido por la colección de componentes que forman una entidad. Se pueden aplicar los mismos principios rectores.
fuente
Lo que ha descrito (una clase para cada tipo principal de objeto de juego lógico) tiene mucho sentido para un juego simple. Si es la primera vez que escribes un juego de este tipo, te sugiero que lo hagas de esta manera.
Solo un par de consejos:
En los juegos más complejos, existen técnicas más avanzadas que puede usar, pero le sugiero que no las use hasta que se sienta muy cómodo con el enfoque básico de OOP (es decir, haya realizado un par de juegos completos con éxito). Los enfoques más avanzados pueden incluir:
fuente
Existen pocos métodos que puede utilizar para abordar la organización de sus entidades y conjuntos de datos. Prefiero escribir un documento de hoja de cálculo y probar datos que se mueven de un lado a otro para asegurarme de que soy eficiente. Si está haciendo el juego usted mismo, recuerde que debe tener sentido para usted. A veces, la ruta más eficiente es ser ligeramente menos eficiente en el código para simplificar el proyecto.
Si desea obtener más ayuda para estructurar su contenido, busque un código fuente de juego antiguo que use una estructura o estilo similar y encuentre su solución. Luego refínalo y arréglalo a tu gusto.
fuente