Porque lo bueno tambien viene en paquetes pequeños.
Con ganas de presumir lo que llevo hecho XD
Bueno andaba con ganas de mostrar. Lo que tenia hecho:
En primer lugar el logo :) .
En segundo lugar se ve un fondo aplicado con alpha a la mitad con repeticion vertical y horizontal ademas de con hspeed y vspeed (Anque no se note en una screenshot obviamente).
Luego se ve escrito "tecla esta suelta" lo que muestra varias cosas, en primer lugar que tecla esta suelta (jeje) y lo otro es la clase MaquinaDeEscribir y la Clase Teclado funcionando al 100%!
Otra cosa más, casi imperceptible, es un pixel blanco en la esquina superior derecha. Bueno este pequeño pixel queire decir que tuve éxito incorporando (para lo cual soy malisimo) la libreria SDL_gfx! Que conoci gracias por la recomendacion de Adva como siempre.
Bueno eso era lo que queria presumir.... no mentira tambien tengo algo de codigo fuente para presumir :O:
Es un ejemplo de "Hola mundo" animado con D+D Engine:
Codigo:
#include
#include "Pantalla.h"
#include "ControlFPS.h"
#include "TrueFont.h"
#include "MaquinaDeEscribir.h"
#include "Teclado.h"
Pantalla * pantalla;
Teclado * teclado;
TrueFont * fuente;
MaquinaDeEscribir * maquina;
ControlFPS * timer;
int main (int argc, char *argv[])
{
bool termino=false;
int xTexto=0;
/* esto es temporal, pero por ahora funciona asi, este es el color negro y el blanco */
SDL_Color negro, blanco;
negro.r = 0;
negro.g= 0;
negro.b = 0;
blanco.r = 255;
blanco.g= 255;
blanco.b= 255;
/*Se inicializa el subsitema de video y se crea la surface de dibujo, de tamaño 640,480 con
Bufer y superficie por software, mas un modificador extra para las banderas de inicializar
SDL_video en este caso nada extra */
pantalla = new Pantalla(640,480, 0);
teclado = new Teclado(); /* Se crea el objeto teclado */
timer = new ControlFPS(); /* Se crea el objeto que se encargara de controlar los FPS*/
fuente = new TrueFont("fuente.ttf",16); /* Se crea la fuente especificando ruta y tamaño*/
maquina = new MaquinaDeEscribir(); /* Se crea el objeto que se encarga de escribir */
maquina->setFuente(fuente); // se asigna la fuente.
while (!termino) {
timer->actualizarTimer(); // se toma la medida
teclado->actualizar(); // se lee el estado de las teclas
xTexto+=4; // para mover el texto
if (xTexto>640) {xTexto=0};
/* si se presiona la tecla escape sale del juego. */
if (teclado->isTeclaSePresiona[SDL_ESCAPE] ) { termino = true;};
// limpia la pantalla
pantalla->limpiar(negro);
// escribe el texto en pantalla
maquina->escribir("¡Hola mundo!",xTexto, 240, blanco, pantalla);
// vuelva el buffer en pantalla
pantalla->renderizar();
timer->controlarTiempoMax(30);// hace que el timer haga durar cada
// step comominimo 30
}
};
Los mismos objetos se encargan de inciar y de dar de baja los modulos de SDL.
Ahora si eso es todo! Espero que les parezca interesante, comenten y critiquen todo lo que quieran!
Un saludo!
2 comentarios:
No deberías colocar un atexit(SDL_Quit) y la liberación de los sprites al final?
Por lo demás genial, me encanta tu implementación xD. Lo único es que algunas funciones como por ejemplo teclado->isTeclaSePresiona() son poco intuitivas. Quizás con algo como teclado->TeclaPresionada() sería más intuitivo.
Del atexit, se encargan aquellos objetos que hagan una iniciacion de SDL porque el engine esta pensado para usarse si es necesario en forma separada.
Con respecto a la liberacion de sprites, bueno en el ejemplo no use ninguno pero esta en el destructor de la clase ImagenFuente.
Del lado de isTeclaSePresiona() es porque esta funcion es la que se solo cuando esta presionada y antes no, y la otra isTeclaPresionada() es eso, si esta presionada XD. Igual todavia la interfaz va a sufrir cambio para hacerla mas bonita y amigable e intuitiva porque esta un poco rustica como bien notaste jeje.
Gracias por comentar Darth, todavia no me conecte al msn xD
Un saludo!
Publicar un comentario en la entrada