crea un juegoi de terror y aventura
Aquí te presento un ejemplo básico de un juego de terror y aventura en C++. Este juego se llama "La Casa Abandonada" y consiste en explorar una casa abandonada y encontrar la salida antes de que te capturen los fantasmas. **La Casa Abandonada** ### Estructuras de datos Definimos las siguientes estructuras de datos para representar el juego: ```cpp #include <iostream> #include <string> #include <vector> // Estructura para representar un objeto struct Objeto { std::string nombre; std::string descripcion; }; // Estructura para representar un personaje struct Personaje { std::string nombre; int salud; int inventario; }; // Estructura para representar una habitación struct Habitacion { std::string descripcion; std::vector<Objeto> objetos; std::vector<Personaje> personajes; std::vector<Habitacion> salidas; }; // Estructura para representar el juego struct Juego { Habitacion habitacionActual; Personaje personaje; }; ``` ### Funciones del juego Definimos las siguientes funciones para manejar el juego: ```cpp // Función para mostrar la descripción de la habitación actual void mostrarHabitacion(Juego &juego) { std::cout << juego.habitacionActual.descripcion << std::endl; } // Función para mostrar los objetos en la habitación actual void mostrarObjetos(Juego &juego) { std::cout << "Objetos en la habitación:" << std::endl; for (const auto &objeto : juego.habitacionActual.objetos) { std::cout << objeto.nombre << std::endl; } } // Función para mostrar los personajes en la habitación actual void mostrarPersonajes(Juego &juego) { std::cout << "Personajes en la habitación:" << std::endl; for (const auto &personaje : juego.habitacionActual.personajes) { std::cout << personaje.nombre << std::endl; } } // Función para mover al personaje a otra habitación void mover(Juego &juego, int direccion) { if (direccion == 1) { juego.habitacionActual = juego.habitacionActual.salidas[0]; } else if (direccion == 2) { juego.habitacionActual = juego.habitacionActual.salidas[1]; } else if (direccion == 3) { juego.habitacionActual = juego.habitacionActual.salidas[2]; } else if (direccion == 4) { juego.habitacionActual = juego.habitacionActual.salidas[3]; } } // Función para agregar un objeto al inventario del personaje void agregarObjeto(Juego &juego, std::string nombre) { for (auto &objeto : juego.habitacionActual.objetos) { if (objeto.nombre == nombre) { juego.personaje.inventario++; juego.habitacionActual.objetos.erase(std::remove(juego.habitacionActual.objetos.begin(), juego.habitacionActual.objetos.end(), objeto), juego.habitacionActual.objetos.end()); return; } } } // Función para mostrar el inventario del personaje void mostrarInventario(Juego &juego) { std::cout << "Inventario:" << std::endl; for (int i = 0; i < juego.personaje.inventario; i++) { std::cout << "Objeto " << i + 1 << std::endl; } } ``` ### Función principal del juego La función principal del juego es la siguiente: ```cpp int main() { // Inicializar el juego Juego juego; juego.habitacionActual.descripcion = "Estás en la entrada de la casa abandonada."; juego.habitacionActual.objetos.push_back({ "Lámpara", "Una lámpara encendida." }); juego.habitacionActual.personajes.push_back({ "Fantasma", 100 }); juego.habitacionActual.salidas.push_back({ "Sala de estar", "Una sala de estar con un sofá y una mesa." }); juego.habitacionActual.salidas.push_back({ "Cocina", "Una cocina con una nevera y un fregadero." }); juego.personaje.nombre = "Jugador"; juego.personaje.salud = 100; juego.personaje.inventario = 0; // Bucle principal del juego while (true) { // Mostrar la descripción de la habitación actual mostrarHabitacion(juego); // Mostrar los objetos en la habitación actual mostrarObjetos(juego); // Mostrar los personajes en la habitación actual mostrarPersonajes(juego); // Mostrar el inventario del personaje mostrarInventario(juego); // Pedir la acción del jugador std::cout << "¿Qué deseas hacer? (1-4 para mover, 5 para agregar objeto, 6 para mostrar inventario)" << std::endl; int accion; std::cin >> accion; // Manejar la acción del jugador if (accion == 1) { // Mover al personaje a otra habitación int direccion; std::cout << "¿A qué dirección deseas mover? (1-4)" << std::endl; std::cin >> direccion; mover(juego, direccion); } else if (accion == 2) { // Agregar un objeto al inventario del personaje std::string nombre; std::cout << "¿Qué objeto deseas agregar al inventario?" << std::endl; std::cin >> nombre; agregarObjeto(juego, nombre); } else if (accion == 3) { // Mostrar el inventario del personaje mostrarInventario(juego); } else if (accion == 4) { // Salir del juego break; } else if (accion == 5) { // Agregar un objeto al inventario del personaje std::string nombre; std::cout << "¿Qué objeto deseas agregar al inventario?" << std::endl; std::cin >> nombre; agregarObjeto(juego, nombre); } else if (accion == 6) { // Mostrar el inventario del personaje mostrarInventario(juego); } } return 0; } ``` ### Ejemplo de uso Para jugar al juego, simplemente compila el código y ejecuta el programa. El juego comenzará en la entrada de la casa abandonada. Puedes moverte a otras habitaciones, agregar objetos al inventario del personaje y mostrar el inventario del personaje. El juego terminará cuando el personaje salga de la casa abandonada. Recuerda que este es un ejemplo básico y puedes agregar más características y funcionalidades al juego según tus necesidades.