← Hub Zona Gamer/Módulo de Proyectos Integradores
🏆 Proyectos de Programación Estructurada

PROYECTOSGAMER CLI

Aplica todo lo aprendido desarrollando videojuegos completos interactivos por consola. Utiliza variables, condicionales (if), bucles (while, for), menús interactivos y captura de datos por teclado.

📋 Requisitos de Entrega
  • Código fuente funcional
  • Menú interactivo con salida
  • Comentarios explicativos
  • Plus: Sonidos, reglas extra e inglés

🎮 Selecciona un Proyecto Gamer para Explorar:

⚔️
PROYECTO 1 · RPGDificultad: Básico - Intermedio

Arena RPG: Torneo de Etherion

Simulador de combate por turnos y campamento de entrenamiento

📜 Historia & Contexto Gamer

El reino de Etherion organiza un gran torneo de campeones. Como nuevo combatiente, debes entrenar duramente en el campamento para aumentar tu fuerza y sobrevivir a los feroces duelos en la arena.

🎯 Objetivo de Programación

Desarrollar un programa interactivo por consola con menú principal en bucle while, variables de estado del héroe, entrenamiento con daño a la salud y combate simulado de 3 ataques mediante bucle for.

Entradas por Teclado Requeridas:
⌨️ Nombre del jugador (texto)⌨️ Clase del personaje: Guerrero, Mago o Arquero (texto)

📊 Tabla de Variables Iniciales

VariableTipoValor InicialDescripción
vidaint100Puntos de salud del jugador (HP)
fuerzaint10Poder de ataque físico o mágico
nivelint1Nivel actual del héroe
experienciaint0Puntos de XP acumulados para subir de nivel
monedasint50Oro para comprar pociones (Desafío Extra)
pocionesint2Pociones curativas (+30 HP)

⚠️ Reglas y Condiciones de Juego

  • Si el jugador gana la pelea: aumenta la experiencia (+40 XP).
  • Si la experiencia acumulada es >= 100: sube de nivel, aumenta fuerza en 5 y reinicia/descuenta 100 de XP.
  • Si los puntos de vida llegan a 0 o menos durante una pelea o entrenamiento: mostrar "GAME OVER" y terminar el juego.
  • El menú debe repetirse indefinidamente hasta que el usuario elija la opción Salir.

🌟 Desafíos Extra / Plus

  • Sistema de Monedas: Ganar 25 de oro por cada victoria en la arena.
  • Tienda de Pociones: Agregar opción en el menú para comprar pociones por 20 monedas y usarlas para restaurar 30 HP.
  • Enemigos Aleatorios: Generar nombres de rivales al azar (Orco, Goblin, Nigromante, Dragón Menor).

🧭 Estructura del Menú Interactivo

1

Pelear en la Arena

Simula 3 turnos de ataque usando un bucle for. El enemigo causa daño y el héroe contraataca con su fuerza.

for (int i = 1; i <= 3; i++). Si gana: +40 XP. Si XP >= 100: sube de nivel (+1 nivel, +5 fuerza). Si vida <= 0: GAME OVER.
2

Entrenar en el Cuartel

Mejora las habilidades físicas a cambio de desgaste y fatiga.

fuerza += 5; vida -= 10; Validar que la vida no quede en 0.
3

Ver Estadísticas

Muestra el estado completo del personaje en pantalla.

Imprime: Nombre, Clase, Nivel, Vida actual, Fuerza, Experiencia y Pociones.
4

Salir del Torneo

Finaliza el bucle del juego y se despide.

opcion = 4; Termina el bucle while.
Terminal CLI Preview
OUTPUT
================================================
          ARENA RPG: TORNEO DE ETHERION         
================================================
Ingresa el nombre de tu héroe: Arthas
Elige tu clase (1. Guerrero / 2. Mago / 3. Arquero): 1

Bienvenido, Guerrero Arthas! Nivel: 1 | Vida: 100 | Fuerza: 10

---------------- MENÚ PRINCIPAL ----------------
1. Pelear en la Arena
2. Entrenar en el Cuartel
3. Ver Estadísticas
4. Salir
Elige una opción: 1

--- ¡COMBATE EN LA ARENA! ---
Turno 1: Arthas golpea causando 10 de daño. Rival contraataca y causa 8 de daño.
Turno 2: Arthas golpea causando 10 de daño. Rival contraataca y causa 12 de daño.
Turno 3: Arthas asesta golpe final. ¡Rival derrotado!
¡Has ganado el combate! +40 XP | Vida restante: 80 HP

Checklist Guiado de Construcción

💻

Código Fuente Completo y Funcional

Solución lista para ejecutar en consola, comentar y entregar.

arena-rpg.cs
CSHARP
1using System;
2
3class Program
4{
5 static void Main()
6 {
7 Console.WriteLine("================================================");
8 Console.WriteLine(" ARENA RPG: TORNEO DE ETHERION ");
9 Console.WriteLine("================================================");
10
11 // 1. Datos iniciales del jugador
12 Console.Write("Ingresa el nombre de tu héroe: ");
13 string nombre = Console.ReadLine();
14
15 Console.WriteLine("Elige tu clase:");
16 Console.WriteLine("1. Guerrero");
17 Console.WriteLine("2. Mago");
18 Console.WriteLine("3. Arquero");
19 Console.Write("Opción: ");
20 string claseOpcion = Console.ReadLine();
21
22 string clase = "Guerrero";
23 if (claseOpcion == "2")
24 {
25 clase = "Mago";
26 }
27 else if (claseOpcion == "3")
28 {
29 clase = "Arquero";
30 }
31
32 // 2. Variables de estado del héroe
33 int vida = 100;
34 int fuerza = 10;
35 int nivel = 1;
36 int experiencia = 0;
37 int monedas = 50;
38 int pociones = 2;
39
40 int opcion = 0;
41
42 // 3. Bucle interactivo principal
43 while (opcion != 4 && vida > 0)
44 {
45 Console.WriteLine("");
46 Console.WriteLine("---------------- MENÚ PRINCIPAL ----------------");
47 Console.WriteLine("1. Pelear en la Arena");
48 Console.WriteLine("2. Entrenar en el Cuartel (+5 Fuerza, -10 Vida)");
49 Console.WriteLine("3. Ver Estadísticas");
50 Console.WriteLine("4. Salir del Torneo");
51 Console.Write("Elige una opción: ");
52
53 if (!int.TryParse(Console.ReadLine(), out opcion))
54 {
55 Console.WriteLine(">> Opción inválida. Ingresa un número del 1 al 4.");
56 continue;
57 }
58
59 switch (opcion)
60 {
61 case 1:
62 Console.WriteLine("");
63 Console.WriteLine("--- ¡COMBATE EN LA ARENA DE ETHERION! ---");
64 int vidaEnemigo = 30 + (nivel * 5);
65 int fuerzaEnemigo = 6 + (nivel * 2);
66
67 // Bucle for para simular los 3 turnos de ataque
68 for (int turno = 1; turno <= 3; turno++)
69 {
70 Console.WriteLine("Turno " + turno + ": " + nombre + " ataca causando " + fuerza + " de daño.");
71 vidaEnemigo -= fuerza;
72
73 if (vidaEnemigo <= 0)
74 {
75 Console.WriteLine("¡Enemigo abatido antes de que termine el turno!");
76 break;
77 }
78
79 Console.WriteLine(" El rival responde y causa " + fuerzaEnemigo + " de daño.");
80 vida -= fuerzaEnemigo;
81
82 if (vida <= 0)
83 {
84 Console.WriteLine("¡Has caído en combate! GAME OVER.");
85 break;
86 }
87 }
88
89 if (vida > 0)
90 {
91 Console.WriteLine("¡Victoria en la arena! Obtienes +40 XP y +25 monedas.");
92 experiencia += 40;
93 monedas += 25;
94
95 // Subida de nivel al llegar a 100 XP
96 if (experiencia >= 100)
97 {
98 nivel++;
99 fuerza += 5;
100 experiencia -= 100;
101 vida = 100; // Restaurar vida completa al subir de nivel
102 Console.WriteLine("");
103 Console.WriteLine("⭐ ¡SUBISTE DE NIVEL! Ahora eres Nivel " + nivel + " y tu fuerza es " + fuerza + ". HP restaurado.");
104 }
105 }
106 break;
107
108 case 2:
109 if (vida > 10)
110 {
111 fuerza += 5;
112 vida -= 10;
113 Console.WriteLine("");
114 Console.WriteLine("[!] Has entrenado duro en el cuartel.");
115 Console.WriteLine(" Fuerza aumentada a " + fuerza + ".");
116 Console.WriteLine(" Vida actual: " + vida + " HP.");
117 }
118 else
119 {
120 Console.WriteLine("");
121 Console.WriteLine("[!] Estás demasiado débil para entrenar. ¡Peligro de muerte!");
122 }
123 break;
124
125 case 3:
126 Console.WriteLine("");
127 Console.WriteLine("================ ESTADÍSTICAS ================");
128 Console.WriteLine("Héroe: " + nombre);
129 Console.WriteLine("Clase: " + clase);
130 Console.WriteLine("Nivel: " + nivel);
131 Console.WriteLine("Vida: " + vida + " / 100 HP");
132 Console.WriteLine("Fuerza: " + fuerza);
133 Console.WriteLine("Experiencia: " + experiencia + " / 100 XP");
134 Console.WriteLine("Monedas: " + monedas + " oro");
135 Console.WriteLine("Pociones: " + pociones);
136 Console.WriteLine("==============================================");
137 break;
138
139 case 4:
140 Console.WriteLine("");
141 Console.WriteLine("¡Gracias por jugar, " + nombre + "! Hasta la próxima batalla.");
142 break;
143
144 default:
145 Console.WriteLine("");
146 Console.WriteLine(">> Opción no reconocida. Intenta de nuevo.");
147 break;
148 }
149 }
150
151 if (vida <= 0)
152 {
153 Console.WriteLine("");
154 Console.WriteLine("☠️ Tu héroe ha perecido en el reino de Etherion. FIN DEL JUEGO.");
155 }
156 }
157}