COMPARTE ESTE ARTÍCULO

En esta entrada te presento un ejercicio completo de programación orientada a objetos en C#, ideal como simulacro de examen para estudiantes de programación de videojuegos. El objetivo es poner en práctica conceptos como herencia, encapsulamiento, estructuras de datos y uso de listas.

🧩 Enunciado del Ejercicio

En un videojuego ambientado en una ciudad futurista habitada por robots autónomos, diseña las siguientes clases y métodos siguiendo buenas prácticas de programación orientada a objetos:

  1. La ciudad se extiende desde la coordenada (0,0) hasta (XMax, YMax).
  2. Un Robot tiene una posición (x, y), una batería inicial de 100 unidades, y pertenece a una ciudad. Puede moverse aleatoriamente entre -2 y 2 unidades en cada eje, sin salirse del mapa y gastando 1 unidad de batería por movimiento. Tiene un método virtual Actuar().
  3. Un RobotVigilante sobrescribe el método Actuar() para devolver aleatoriamente uno de estos mensajes:
    • “¡Intruso detectado!”
    • “Todo en orden”
    • “Escaneando…”
      (Solo si tiene batería positiva).
  4. Un RobotRecolector mantiene una lista de objetos Recurso. Tiene un método Recolectar() (simulado) y sobrescribe Actuar() para eliminar y devolver aleatoriamente un recurso. Si no hay recursos, devuelve cadena vacía.
  5. Implementa el método DescargarEnergia(List<Robot> robots, int x0, int y0, int n) para reducir batería a los robots cercanos a una posición. Si un robot queda sin batería, se elimina de la lista.
  6. Implementa MensajesRecolectores(Robot[] robots) para concatenar los resultados de Actuar() de todos los recolectores.
  7. Implementa NRobotsMasCargados(int n, Robot[] robots) para devolver los n robots con más batería.
  8. Implementa FiltrarVigilantes(List<Robot> robots) de forma recursiva para obtener los vigilantes de una lista mixta.
  9. Crea una pila de robots usando nodos encadenados (PilaNodosRobots) con métodos Push(Robot r), Pop() y Count.

💻 Código C# Completo

Aquí tienes la implementación completa del ejercicio en C#:



🛠️ ¿Qué Aprendemos con Este Ejercicio?

  • Cómo modelar entidades de un videojuego usando clases.
  • Uso de herencia para personalizar comportamiento (Actuar()).
  • Control de posiciones dentro de un mapa.
  • Listas genéricas, acceso aleatorio y eliminación.
  • Recursividad con listas.
  • Implementación de una estructura tipo pila enlazada.

📚 Recomendación para Estudiantes

Este simulacro es ideal para preparar evaluaciones de Programación Orientada a Objetos o Lógica de Videojuegos. Puedes practicar:

  • Extender las clases con más funcionalidades (e.g., ataques, energía renovable).
  • Simular interacciones entre robots.
  • Usar una interfaz gráfica sencilla con WinForms o Unity.

🧑‍🏫 ¿Eres Profesor?

Puedes usar este ejercicio como base para exámenes o prácticas. Está diseñado para evaluar conocimientos de:

  • Diseño orientado a objetos.
  • Recursividad.
  • Estructuras de datos.
  • Buenas prácticas de codificación en C#.

✍️ ¿Te gustaría más ejercicios como este?

Déjalo en los comentarios o contáctame directamente. También puedes suscribirte para recibir notificaciones de nuevas prácticas, tutoriales y simulacros de examen.


¿Quieres que este post incluya imágenes o fragmentos destacados con formato WordPress (código, bloques, etc.)?


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

INSTAGRAM

TIKTOK


 …Y PRONTO MUCHAS MÁS

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
error: CONTENIDO PROTEGIDO