Académique Documents
Professionnel Documents
Culture Documents
24 de Marzo de 2011
Introducci n o
Indice de contenidos
Introduccion
Introducci n o
Indice
Introduccion
Introducci n o
Introduccion
Que es Gosu? Gosu es una biblioteca de desarrollo de videojuegos 2D para C++ y Ruby. Sus principales ventajas son: Completamente orientada a objetos, facilitando el desarrollo. Multiplataforma: Windows, GNU/Linux, Mac OS, iPhone... Aceleracin grca, alcanzando un rendimiento alto. o a Muy amplia, incluye incluso soporte para juego en red. Algunas desventajas... Desarrollo algo irregular en las diferentes plataformas. Al no ser muy famosa, no est en los repositorios pero es fcil a a de instalar.
Introducci n o
Taller introductorio Lectura recomendada: http://code.google.com/p/pong-sdl-advuca/ En esencia, un videojuego es una aplicacin en la que se repiten o una serie de pasos constantemente: Primera etapa: ver qu hace el usuario, est pulsando teclas? e a Segunda etapa: hacer clculos, procesar la lgica. a o Tercera y ultima etapa: mostrar los grcos en pantalla. a Again and again, and again and again...
Introducci n o
Carpeta windows: Ficheros para hacer el taller en Windows con Visual Studio. Carpeta linux: Ficheros para hacer el taller en Linux por l nea de comandos. Carpeta soluciones: Soluciones a los ejercicios que vayamos haciendo.
Introducci n o
Introducci n o
Compilar en Windows
Para compilar en Visual Studio 2008 Express, seguimos estos dos pasos:
1
Tenemos que seleccionar el proyecto que queremos compilar de la lista de la izquierda con el botn derecho y seleccionar o Establecer como proyecto de inicio. A partir de aqu podemos compilar el proyecto pulsando el , botn F5 (nos preguntar si queremos generar el proyecto, o a respondemos que s ).
Introducci n o
Dentro de la carpeta linux encontraris: e Carpeta gosu Carpeta con la distribucin de cheros de Gosu necesarios o para compilar los proyectos. Carpeta Parte 1 Ficheros para la primera parte del taller. Trabajaremos con el chero main.cpp Carpeta Parte 2 Ficheros para la segunda parte del taller. Trabajaremos con el chero src/ventana.cpp
Introducci n o
Compilar en Linux
Para compilar en linux (por l nea de comandos), el proceso es muy sencillo. Estando en cualquiera de las dos carpetas(Parte 1 Parte 2), o ejecutamos make libgosu para compilar Gosu. OJO: Esto solo hay que hacerlo una vez en todo el taller. Luego, cada vez que hagamos cambios en los cheros .cpp, simplemente ejecutamos make para compilar el cdigo. o Podremos lanzarlo utilizando el comando ./programa
Introducci n o
Indice
Introduccion
Introducci n o
Cabeceras Unicamente tendremos que usar #include <Gosu/Gosu.hpp> #include <Gosu/AutoLink.hpp> // Solo windows Con esto ya estaremos incluyendo todos los cheros necesarios.
Introducci n o
La clase principal
Gosu est dividido en clases. La clase Gosu::Window representa la a ventana de juego, la clase principal de nuestro juego heredar de a ella.
Introducci n o
La clase principal
Constructor de Window
show()
bucle principal
class Ventana : public Gosu::Window{ public: Ventana() : Gosu::Window(800, 600, false){ } ~Ventana(){ /* destructor */ }
Juego terminado? S
NO
close()
update(){ Lgica del juego o draw(){ Dibujado de grficos a buttonDown(Gosu::Button B){ Pulsaciones de teclas
Destructor de Window
Introducci n o
Constructor de Gosu::Window
class Ventana : public Gosu::Window{ public: Ventana() : Gosu::Window(800, 600, false){ Ventana hereda de Gosu::Window. En el constructor del padre, indicamos ancho, alto y si queremos pantalla completa.
Introducci n o
Metodos de Gosu::Window
void update(){ // Aqu debe ir la lgica del juego o } void draw(){ // Aqu se deben pintar los grficos a } void buttonDown(Gosu::Button boton){ // Este mtodo se lanza cuando se pulsa un botn e o }
Introducci n o
Introducci n o
Primera tarea
Crear una clase Ventana derivada de Gosu::Window tal y como hemos explicado. Hacer que se muestre la ventana y que se cierre al pulsar una tecla. La solucin la tenis en el chero o e soluciones/Parte 1/main paso1.cpp
Introducci n o
Graficos en Gosu
Los grcos son una de las piezas a ms importantes de un juego. a Cada objeto Gosu::Window tiene un mtodo graphics() que e devuelve el destino donde todos los elementos grcos (imgenes a a y fuentes) se van a pintar.
Introducci n o
Imagenes en Gosu
En Gosu las imgenes se representan con la clase Gosu::Image. a Gosu::Image * miImagen = new Gosu::Image(graphics(), L"rutaDeImagen.png"); Y se dibujan as (dentro del mtodo Ventana::draw): e miImagen -> draw(posX, posY, posZ); Es posible escalar las imgenes y tintarlas utilizando un color: a miImage -> draw(posX, posY, posZ, escalaX, escalaY Gosu::Color(255, 255, 0, 0)); // Tinte rojo
Introducci n o
Introducci n o
Segunda tarea
Aadir a la clase Ventana un atributo Gosu::Image * n imagen. En el constructor de la Ventana, cargar la imagen imagen.png en el atributo que hemos denido. En el mtodo draw de Ventana, pintar la imagen en las e coordenadas que queris. a La solucin la tenis en el chero o e soluciones/Parte 1/main paso2.cpp
Introducci n o
Textos en Gosu
Los textos
tambin son importantes e
para transmitir mensajes.
Utilizaremos la clase Gosu::Font para cargar una fuente y luego escribir un texto con ella. Funciona igual que Gosu::Image.
Introducci n o
Introducci n o
Tercera tarea
Aadir a la clase Ventana un atributo n Gosu::Font * fuente. En el constructor de la Ventana, cargar la fuente arial.ttf en el atributo que hemos denido, con un tamao de 60 n p xeles. En el mtodo draw de Ventana, pintar un mensaje con la e fuente que acabamos de cargar usando su mtodo draw. e La solucin la tenis en el chero o e soluciones/Parte 1/main paso3.cpp
Introducci n o
Introducci n o
Adems, la clase Gosu::Window nos ofrece un mtodo input() a e que nos devuelve un objeto que nos da informacin sobre la o entrada del usuario, como por ejemplo la posicin del ratn: o o input().mouseX(); input().mouseY();
Introducci n o
Cuarta tarea
Aadir a la clase Ventana un atributo entero: int contador n e inicializarlo a 0 en el constructor. Comprobar en el mtodo buttonDown si se ha pulsado la tecla e escape (cuyo cdigo es Gosu::kbEscape). En ese caso, cerrar o la aplicacin (usando close()). o Si se ha pulsado otra tecla, aumentar el contador. Cuando el contador sea mayor que 5, cambiar el mensaje que escribimos en la tarea anterior. La solucin la tenis en el chero o e soluciones/Parte 1/main paso4.cpp
Introducci n o
Indice
Introduccion
Introducci n o
Gosunoid
Es un clon del clsico a Arkanoid, que a su vez fue un clon del juego Breakout de Atari. La idea es acabar con todos los bloques.
Introducci n o
Introducci n o
Figura: media/bloque.png
Utilizaremos una misma imagen para pintar todos los bloques, ya que el mtodo draw de la clase Gosu::Window nos permite indicar e un color con el que tintar el bloque.
Introducci n o
Introducci n o
Introducci n o
Introducci n o
Introducci n o
Introducci n o
Estado inicial
Parece que faltan unas cuantas cosas para que esto salga adelante...
Introducci n o
Parece que el fondo no se est pintando, habr que ver qu pasa a a e en el mtodo draw de nuestra clase Ventana... e Escribe el cdigo necesario para que se pinte el fondo en las o coordenadas (0,0,0)
Introducci n o
Los bloques parece que estn de luto. Se dibujan en pantalla, s a , pero parece que no con el color adecuado. F jate en el mtodo draw de la clase Ventana, hay una variable e bloqueColor que guarda el color asociado al bloque, pero no parece que se utilice luego en ningn lado. u Modica el cdigo que pinta los bloques para que acepte el o atributo de color bloqueColor
Introducci n o
No hay nada ms triste que un marcador de puntos sin puntos. a Parece que se nos ha olvidado cargar la fuente para mostrar el marcador. En el constructor de la clase Ventana, aade el cdigo necesario n o para cargar en el atributo fuente una nueva Gosu::Font que cargue el archivo "media/fuentelcd.ttf" a un tamao de 33 n p xeles y sin negritas.
Introducci n o
Aunque aparentemente todo pinta bien, la pala no sigue al ratn al o moverse, siempre se queda ja en la misma posicin. Esto no pinta o nada bien! Tal vez puedas conseguir leer la posicin horizontal del ratn y o o asignrsela a la variable mouseX dentro del mtodo update de a e Ventana.
Introducci n o