StudyFiWiki
WikiAplicación web
StudyFi

Materiales de estudio con IA para todos los estudiantes. Resúmenes, tarjetas, tests, podcasts y mapas mentales.

Materiales de estudio

  • Wiki
  • Aplicación web
  • Registro gratis
  • Sobre StudyFi

Legal

  • Términos del servicio
  • RGPD
  • Contacto
Descargar en
App Store
Descargar en
Google Play
© 2026 StudyFi s.r.o.Creado con IA para estudiantes
Wiki💻 Ciencias de la ComputaciónProgramación Orientada a Objetos en JuegosResumen

Resumen de Programación Orientada a Objetos en Juegos

Programación Orientada a Objetos en Juegos: Guía Completa

ResumenTest de conocimientosTarjetasPodcastMapa mental

Introducción

En este material estudiamos cómo desarrollar funcionalidades concretas de un juego (power-ups, obstáculos y sistema de aparición) aplicando principios de programación orientada a objetos como herencia, polimorfismo, abstracción y reutilización de código. Veremos un diseño práctico, ejemplos de implementación y decisiones de diseño para mantener el código claro y mantenible.

Definición: La herencia permite que una clase (subclase) reutilice atributos y métodos de otra (superclase), evitando duplicación de código.

Diseño general: responsabilidades y abstracción

Separación de responsabilidades

  1. Objeto Juego: controla el flujo general, temporizadores y colisiones.
  2. PowerUps y Obstáculos: encapsulan comportamiento específico de cada tipo de objeto que cae.
  3. Cuidador (player): recibe efectos al colisionar.

Definición: El principio de responsabilidad única establece que cada objeto/clase debe tener una única razón para cambiar.

Abstracción con superclases

  • Crear una superclase PowerUp y otra Obstaculo permite implementar una sola vez el comportamiento común: posición, caída, reacción al viento, desaparición al tocar el suelo y método genérico de efecto al colisionar.
  • Las subclases (por ejemplo Mandarina, Calafate, Frutilla, Corazon, Caca1, Caca2, Caca3) implementan únicamente las diferencias: imagen y el efecto concreto de colisión cuando aplica.

Definición: Polimorfismo: enviar el mismo mensaje a diferentes objetos (por ejemplo efectoDeColision()) y permitir que cada objeto responda según su propia implementación.

Implementación de power-ups

Superclase PowerUp (comportamiento común)

  • Atributos típicos: posición $(x,y)$, velocidad vertical, estado (activo/inactivo), sprite/imagen.
  • Métodos comunes:
    • update() o caer(): mueve el power-up según la gravedad y el viento.
    • aplicarViento(fuerza): desplaza horizontalmente según la velocidad del viento.
    • verificarSuelo(): marca para eliminación si llega al suelo.
    • efectoDeColision(): método abstracto que cada subclase redefine.

Subclases y efectos concretos

  • Mandarina: redefine efectoDeColision() para aumentar temporalmente la velocidad del cuidador.
  • Calafate: comportamiento similar a Mandarina (aumenta velocidad).
  • Frutilla: aumenta la velocidad; aparece únicamente en el nivel 2.
  • Corazón: recupera una vida si el jugador no tiene ya el máximo de vidas.

Ejemplo conceptual de llamada polimórfica (en el gestor de colisiones):

  • powerUp.efectoDeColision() — sin preguntar el tipo concreto

Implementación de obstáculos

Superclase Obstaculo

  • Igual estructura que PowerUp: posición, caída, respuesta al viento, desaparición al suelo y efectoDeColision().
  • En este caso el efecto común es reducir la velocidad del cuidador.

Jerarquía de cacas

  • Obstaculo
    • Caca1
    • Caca2
    • Caca3 (aparece solo en nivel 2)

Las subclases sólo cambian la imagen/sprite; el método efectoDeColision() puede estar implementado en la superclase si es idéntico para todas.

Sistema de aparición automática

Temporizadores y game.onTick()

  • Usar un evento de tick global (game.onTick() o similar) para contar tiempo y disparar la aparición de objetos.
  • Implementar métodos:
    1. aparecerPowerUp()
    2. aparecerObstaculo()
  • Ajustar la frecuencia según nivel:
    • Nivel 1: power-ups cada ~4500 ms
    • Nivel 2: power-ups cada ~2500 ms

Definición: Un evento de tick es una función que se ejecuta periódicamente (cada frame o cada intervalo) y permite actualizar el estado del juego y disparar acciones temporizadas.

Control de aparición por nivel

  • Antes de seleccionar aleatoriamente el tipo de objeto, comprobar el nivel actual y restringir las opciones:
    • Nivel 1: posibles = Mandarina, Calafate, Corazon, Caca1, Caca2
    • Nivel 2: añadir Frutilla y Caca3
  • Implementación práctica: variar la distribución aleatoria cambi
Zaregistruj se pro celé shrnutí
TarjetasTest de conocimientosResumenPodcastMapa mental
Empezar gratis

¿Ya tienes cuenta? Iniciar sesión

Power-ups y Obstáculos

Klíčové pojmy: Crear superclase PowerUp y Obstaculo para comportamiento común, Redefinir solo efectoDeColision() en subclases, Usar polimorfismo: llamar objeto.efectoDeColision() sin preguntar tipo, Controlar aparición con game.onTick() y contadores de tiempo, Nivel 1: power-ups cada ~4500 ms; nivel 2: cada ~2500 ms, Restringir tipos disponibles según nivel (Frutilla y Caca3 solo nivel 2), Evitar condicionales por tipo en gestor de colisiones, Documentar y testear efectos de cada subclase

## Introducción En este material estudiamos cómo desarrollar funcionalidades concretas de un juego (power-ups, obstáculos y sistema de aparición) aplicando principios de programación orientada a objetos como **herencia**, **polimorfismo**, **abstracción** y **reutilización de código**. Veremos un diseño práctico, ejemplos de implementación y decisiones de diseño para mantener el código claro y mantenible. > **Definición:** La **herencia** permite que una clase (subclase) reutilice atributos y métodos de otra (superclase), evitando duplicación de código. ## Diseño general: responsabilidades y abstracción ### Separación de responsabilidades 1. Objeto Juego: controla el flujo general, temporizadores y colisiones. 2. PowerUps y Obstáculos: encapsulan comportamiento específico de cada tipo de objeto que cae. 3. Cuidador (player): recibe efectos al colisionar. > **Definición:** El **principio de responsabilidad única** establece que cada objeto/clase debe tener una única razón para cambiar. ### Abstracción con superclases - Crear una superclase `PowerUp` y otra `Obstaculo` permite implementar una sola vez el comportamiento común: posición, caída, reacción al viento, desaparición al tocar el suelo y método genérico de efecto al colisionar. - Las subclases (por ejemplo `Mandarina`, `Calafate`, `Frutilla`, `Corazon`, `Caca1`, `Caca2`, `Caca3`) implementan únicamente las diferencias: imagen y el efecto concreto de colisión cuando aplica. > **Definición:** **Polimorfismo**: enviar el mismo mensaje a diferentes objetos (por ejemplo `efectoDeColision()`) y permitir que cada objeto responda según su propia implementación. ## Implementación de power-ups ### Superclase PowerUp (comportamiento común) - Atributos típicos: posición $(x,y)$, velocidad vertical, estado (activo/inactivo), sprite/imagen. - Métodos comunes: - `update()` o `caer()`: mueve el power-up según la gravedad y el viento. - `aplicarViento(fuerza)`: desplaza horizontalmente según la velocidad del viento. - `verificarSuelo()`: marca para eliminación si llega al suelo. - `efectoDeColision()`: método abstracto que cada subclase redefine. ### Subclases y efectos concretos - **Mandarina**: redefine `efectoDeColision()` para aumentar temporalmente la velocidad del cuidador. - **Calafate**: comportamiento similar a Mandarina (aumenta velocidad). - **Frutilla**: aumenta la velocidad; aparece únicamente en el nivel 2. - **Corazón**: recupera una vida si el jugador no tiene ya el máximo de vidas. Ejemplo conceptual de llamada polimórfica (en el gestor de colisiones): - `powerUp.efectoDeColision()` — sin preguntar el tipo concreto ## Implementación de obstáculos ### Superclase Obstaculo - Igual estructura que PowerUp: posición, caída, respuesta al viento, desaparición al suelo y `efectoDeColision()`. - En este caso el efecto común es reducir la velocidad del cuidador. ### Jerarquía de cacas - `Obstaculo` - `Caca1` - `Caca2` - `Caca3` (aparece solo en nivel 2) Las subclases sólo cambian la imagen/sprite; el método `efectoDeColision()` puede estar implementado en la superclase si es idéntico para todas. ## Sistema de aparición automática ### Temporizadores y game.onTick() - Usar un evento de tick global (`game.onTick()` o similar) para contar tiempo y disparar la aparición de objetos. - Implementar métodos: 1. `aparecerPowerUp()` 2. `aparecerObstaculo()` - Ajustar la frecuencia según nivel: - Nivel 1: power-ups cada ~4500 ms - Nivel 2: power-ups cada ~2500 ms > **Definición:** Un **evento de tick** es una función que se ejecuta periódicamente (cada frame o cada intervalo) y permite actualizar el estado del juego y disparar acciones temporizadas. ### Control de aparición por nivel - Antes de seleccionar aleatoriamente el tipo de objeto, comprobar el nivel actual y restringir las opciones: - Nivel 1: posibles = Mandarina, Calafate, Corazon, Caca1, Caca2 - Nivel 2: añadir Frutilla y Caca3 - Implementación práctica: variar la distribución aleatoria cambi

Otros materiales

ResumenTest de conocimientosTarjetasPodcastMapa mental
← Volver al tema