Así que esta es una gran tarea y definitivamente no soy el que está proporcionando una respuesta definitiva. Pero aquí hay una puñalada.
El objetivo de los objetos es agrupar cosas por agrupaciones lógicas o del mundo real, o por función común. Ahora no especificó cómo mostrará los resultados de las elecciones, qué nivel de control tendrá el usuario, etc. Por esta razón, trataré de dar algunas ideas generales sobre cómo diseñar la estructura de su clase.
Para mi ejemplo:
Cada aventura constituirá una historia. La historia se cuenta usando varias páginas. Cada página tiene una imagen y un cuerpo de texto. El usuario solo puede seleccionar dos opciones al final de cada página.
- ¿Cuál es la mejor historia corta que puedes escribir en menos de 25 palabras?
- Estoy escribiendo una historia corta sobre crimen y sadismo, así que mi pregunta es: ‘¿cómo se siente realmente un sádico cuando tortura a su víctima?’
- Quiero escribir, y me preguntaba si este era un buen comienzo para una historia.
- ¿Cuáles son algunos consejos para escribir historias narrativas de la mejor manera posible?
- Cómo escribir una historia de vida extremadamente conmovedora sobre mí
Ya podemos ver algunas clases bastante obvias de esta descripción. Miremos de nuevo.
Cada aventura constituirá una historia . La historia se cuenta usando varias páginas . Cada página tiene una imagen y un cuerpo de texto. El usuario solo puede seleccionar dos opciones al final de cada página.
Entonces comenzaré con una clase de cuentos. Esto contendrá una variedad de páginas (cada historia puede variar en longitud). Esto controlará la gestión de la memoria de las páginas.
Luego crearé una clase de página. Elijo almacenar el texto para la historia, el texto para cada opción y la imagen asociada. Podrías dividir el texto de la historia en una nueva clase, pero no voy a hacerlo por ahora. Principalmente una clase de datos.
Tal vez se pregunte por qué hice de la imagen su propia clase. La respuesta es que probablemente será una clase virtual pura. Esto me permitirá crear una clase derivada para cada tipo de imagen, lo que me permitirá controlar cómo se representa. De esta forma, puedo descargar cosas aleatorias de Internet por ahora (JPEG, GIF, TIFF, PDF) y escribir una clase para almacenar los datos y mostrarlos en la pantalla.
Hasta ahora tengo los conceptos básicos de la estructura de datos, pero ¿qué hay de cómo interactúa el reproductor con el software? Aquí podemos crear algunas clases más. Uno podría ser la clase UI y otro es el motor del juego. La clase UI podría manejar todas las entradas del usuario y realizar llamadas a la clase Game Engine. La clase de motor del juego en realidad podría estar a cargo de administrar el estado del juego. Llamaría a los diversos métodos desde la página y las clases de historia para controlar el juego.
Sé que este no es el mejor ejemplo, pero así es como empezaría a abordarlo. Hice este diseño en unos 10 minutos y fue básicamente uno de los primeros, así que perdóname. Esto sigue aproximadamente el patrón de diseño del controlador de vista modelo.
Es un concepto interesante y si fuera más creativo con la narración definitivamente lo consideraría un buen proyecto paralelo.