Zombies sin Receso

Integrantes:

Profesor: Agustín Gonzalez

Problema/Descripción

Las actividades lúdicas son fundamentales en el desarrollo como personas
particularmente como estudiantes. Estas permiten liberar el estrés y producir satisfacción en el jugador a medida que va logrando objetivos. De aquí surge
Zombies sin receso, un videojuego de plataformas en el que uno controla a Don Fede, para poder convertir a los zombies en los estudiantes que eran previo al estrés universitario y encontrar todas las paltas que le permitan sumar un 100 en los certámenes.

Análisis del Problema

El usuario interactúa por primera vez con el juego por medio del mouse, donde puede comenzar el tutorial clickeando en start. Luego se le muestran los atajos de teclado y sus funcionalidades, y clickeando en end tutorial puede comenzar a Don Fede, el protagonista.

Por medio del teclado el usuario interactúa con Don Fede, siendo capaz de darle movimiento y pudiendo lanzar proyectiles. Don Fede actúa como el intermediario entre los otros entes y el usuario, ya que Don Fede puede colisionar con las estructuras y los enemigos (zombies) e interactuar con los coleccionables y las puertas.

- Elementos de la solución

Definición de Requerimientos

        Nombre: Abriendo el juego

        Propósito: El usuario desea iniciar el juego por primera vez.         

Actor: Jugador novato.

        Pre-condición: El jugador descargó e instaló el juego

        Evento:

        

Actor

Sistema

  • Jugador abre el juego con doble click
  • Se abre el juego y muestra pantalla principal
  • Aprieta el botón START
  • Se muestra el tutorial
  •  Aprieta botón END TUTORIAL
  • Fin tutorial, jugador puede jugar

        Nombre: Aprendiendo a jugar.

        Propósito: El usuario desea probar los botones indicados en el tutorial para ver su funcionamiento.

        Actor: Jugador novato.

        Pre-condición: El jugador apretó el botón de START, leyó el tutorial y presionó END TUTORIAL.

        Evento:

        

Actor

Sistema

  • Aprieta flecha derecha
  • Personajes se mueve a la derecha
  • Aprieta fleta izquierda
  • Personaje se mueve a la izquierda
  • Aprieta botón X
  • Personaje lanza un proyectil
  • Aprieta botón Z
  • No ocurre nada
  • Aprieta Espacio
  • Personaje salta

        Nombre: Fin del juego

        Propósito: Proporcionar un riesgo al jugador

        Actor: Jugador

        Pre-condición: El jugador ya no tiene vidas extra

        Evento:

        

Actor

Sistema

  • Colisiona con el Zombie
  • Muestra pantalla de GAME OVER
  • Aprieta la pantalla
  • Se vuelve a mostrar la pantalla de inicio

Diseño

 

Pruebas

Se abre el juego y se muestra el menú principal

        Se muestra el tutorial

Fin del tutorial, el jugador puede jugar

No quedan más vidas y el actor choca al jugador con el zombie

Se muestra pantalla de GAME OVER

Se retorna al menú principal

El sistema de colisiones de la clase QGraphicsPixmapItem usa los píxeles de las imágenes para detectar una colisión, por lo que no es suficientemente consistente para nuestro uso. Además, solo puede saber si hay colisión o no, y no en qué lado.

Debido a esto, se crearon hitbox laterales, superiores e inferiores, que se unen al personaje y son los que se usan para detectar colisiones. Estos permiten que la superficie del personaje sea uniforme y que se puede saber con cual de los hitboxes se colisionan, logrando saber donde está esta.

El lanzamiento de proyectiles es una prestación difícil de implementar. Para ello, se definió que el jugador crea una instancia proyectil al lanzarlo. Luego,  se conecta la bala con todos los zombies de la escena, de manera que emite una señal si colisiona con uno de ellos y debido a esto el zombie colisionado se desactiva y “vuelve a ser humano”. Esta colisión es revisada cada vez que el proyectil avanza en el eje X. Por último, el objeto se elimina una vez haya colisionado con un zombie o haya recorrido su distancia máxima.

Link al archivo