viernes, 27 de mayo de 2011

Tutorial Vibora Parte 3

Tercera parte de este tutorial sobre creacion de videojuegos: Vibora
Parte 1: Tutorial Vibora Parte 1
Parte 2: Tutorial Vibora Parte 2
El codigo fuente se encuentra al final del tutorial.

¿Que es lo que vamos a lograr en este tutorial?


Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)

Breve explicacion:
En este tutorial vamos a continuar con el videojuego de la vibora, en los tutoriales pasados creamos la estructura basica del juego, le pusimos movimiento y control de direccion por medio de las flechas. En este tutorial lo que haremos sera agregar frutas para que crezca la vibora.
Se van a agregar 5 frutas diferentes (aunque una de ellas es un ramo de flores xD).

Archivo con imagenes: http://www.megaupload.com/?d=970JIGJE

Solo se modificaron 2 archivos, snake.cc y snake.hh
---- snake.hh ----


¿Que tenemos de nuevo?
Primero creamos una nueva estructura llamada FRUIT que contendra la informacion de las frutas en la pantalla. Contiene el puntero a la superficie con la imagen de la fruta (SDL_Surface*), la posicion de la fruta (POINT) y los puntos que vale, Los puntos tambien indicaran cuantos cuadros crecera la vibora cuando como esta fruta.
int _maxfruit sirve para guardar el maximo numero de frutas que habra en el juego.
int _pointsleft sirve para guardar el numero de cuadros pendientes que tiene la vibora por crecer.
_surface_frutas aqui se guarda la lista de imagenes cargas (SDL_Surface*). Este lo cree como vector debido a que es mas facil acceder a los elementos.
_frutas aqui guarda la lista de frutas que hay en la pantalla.


---- snake.cc ----


Los cambios en realidad no son muchos, vamos revisando funcio por funcion:
cSnake::cSnake aqui solo se inicializan las 2 nuevas variables que agregamos (_maxfruit y _pointsleft)
cSnake::~cSnake aqui liberamos la memoria de la lista y el vector que creamos.
cSnake::start en esta cargamos las 5 frutas (sandia, platano, fresa, flores y manzana)
cSnake::draw recorremos la lista de frutas en pantalla para dibujarlas
cSnake::actualizar aqui se hacen un poco mas de cosas, se revisa si la vibora "comio" una fruta, si la vibora va a crecer y si falta alguna fruta en pantalla.

¿La vibora 'comio' una fruta?
Se recorre la lista de frutas en pantalla y se compara su posicion con la de la posicion del primer 'cuadro' de la vibora, que seria la cabeza, si son iguales, se elimina y se asigan los puntos a la vibora para que crezca.

¿La vibora va a crecer?
Aqui se realiza una comparacion con los puntos restantes para crecer (_pointsleft), si este es 0 se borra el ultimo cuadro de lo contrario, no se borra y se resta 1 a los puntos puntos restantes para crecer (_pointsleft).

¿Hace falta agregar una fruta en la pantalla?
Se compara la cantidad de frutas en la lista de frutas con las frutas maximas permitidas, si la primera es menor, se agrega una fruta, y asi se van agregando (una por ciclo) hasta que sea igual al maximo permitido. Para sacar la localizacion donde vamos a agregar la fruta generamos 2 numeros pseudo-aleatorios (x,y) y sacamos uno mas para sacar que fruta es la que vamos a agregar y simplemente se agrega a la lista.

Que sigue?
En el siguiente tutorial haremos:
- Mejoraremos un poco la apariencia de la vibora
- Agregaremos una funcion para detectar cuando la vibora choque consigo misma

Codigo Fuente: http://www.megaupload.com/?d=XZTAGNTK

No hay comentarios:

Publicar un comentario