Aqui comienza el primer curso de crear tu juego, al estilo RPG maker, para ello se utiliza el lenguaje C++ y la librería Allegro Version 4.4.
Cual es el estilo RPG maker, pues para que se entienda mejor mirar la siguiente imagen ...
En este primer tutorial, se hará el manejo del personaje principal. Para ello tendremos en cuenta:
- Se utilizará para la imagen del protagonista un character set del RPG Maker.
- Se utilizará las teclas del cursor para mover al personaje.
Que es un character set del RPG Maker ?
Se trata de una imagen, donde viene dibujado al personaje según las cuatro direcciones, abajo, izquierda, derecha y arriba. Y cada una de ellas tiene tres variantes para hacer una pequeña animación.
Para nuestro tutorial utilizaremos la siguiente imagen, pero si no os gusta o queréis utilizar otra podéis buscar mas en google.
Estas imágenes suelen venir en formato png, pero como el Allegro no trabaja con png, se debe transformar la imagen a BMP. Además para luego no tener problemas el color blanco de fondo se debe sustituir por el color rosa que es el que utiliza Allegro para las transparencia.
Esta imagen la guardaremos con el nombre de "personaje.bmp".
Programación
A continuación se explica paso a paso el programa utilizado.
allegro_init(); install_keyboard(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
Se empieza inizializando la librería y definiendo el tamaño de la ventana que vamos a crear, en este ejemplo será de 800x600.
BITMAP *buffer = create_bitmap(800, 600); BITMAP *prota = load_bmp("personaje.bmp",NULL); bool salir; int x,y; // inicializar vbles x = 10; y = 10; salir = false;
Se inicializan las variables que se van a manejar en el programa. Dos imagenes BITMAP, una de ellas contendrá la imagen del personaje (prota) y la otra la utilizaremos para montarlo todo antes de volcarlo a la pantalla ( buffer ). Las variables x,y contienen la posición del personaje, que inicialmente se le da el valor de 10,10 respectivamente.
El bucle principal se encarga de pintar el fondo, comprobar si el usuario a pulsado alguna tecla para mover al personaje, pinta al personaje y finalmente lo muestra por pantalla.
clear_to_color(buffer, 0xaaaaaa); masked_blit(prota, buffer, 0,0, x, y, 32,32); // teclas control usuario if ( key[KEY_UP] ) { y--; } if ( key[KEY_DOWN] ) { y++; } if ( key[KEY_LEFT] ) { x--; } if ( key[KEY_RIGHT] ) { x++; } // limites if ( x < 0 ) x = 0; if ( x > 800 ) x = 800; if ( y < 0 ) y = 0; if ( y > 600 ) y = 600; blit(buffer, screen, 0, 0, 0, 0, 800, 600); rest(10); // tecla de salida if ( key[KEY_ESC] ) salir = true;
clear_to_color(buffer, 0xaaaaaa);
Borra el contenido de buffer, rellenandolo de un color gris (0xaaaaaa).
masked_blit(prota, buffer, 0,0, x, y, 32,32);
Pinta la imagen prota sobre la imagen buffer, en la posición x,y dentro de la imagen buffer. Con un tamaño de la imagen prota de 32x32.
El apartado de teclas control usuario, se encarga de las teclas definidas para mover el personaje, para ello se modifican los valores de x,y. Siendo "x" para moverlo en horizontal y la "y" para moverlo en vertical, en este caso se utilizan las teclas del cursor.
El apartado limites, se encarga de establecer los limites de las variables x,y , que dependen del tamaño de la ventana que en este caso son 800,600. De esta forma se evita que se salga del campo de vision la imagen prota.
blit(buffer, screen, 0, 0, 0, 0, 800, 600);
Vuelca el contenido de la imagen buffer sobre screen, que es la pantalla, con un tamaño que previamente sea definido, según el ejemplo es 800,600. Es justo en este momento en el que se muestra todo por pantalla.
rest(10);
Hace una pequeña pausa de 10 milisegundos.
CODIGO COMPLETO DEL EJEMPLO
/* Name: RPG Author: Yadok - KODAYGAMES Date: 27/08/15 14:49 Web: http://devcpp-allegro.blogspot.com/ Description: Creacion de un juego al estilo RPG mas informacion en la web */ #include <allegro.h> int main() { allegro_init(); install_keyboard(); set_color_depth(32); set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); BITMAP *buffer = create_bitmap(800, 600); BITMAP *prota = load_bmp("personaje.bmp",NULL); bool salir; int x,y; // inicializar vbles x = 10; y = 10; salir = false; while ( !salir ) { clear_to_color(buffer, 0xaaaaaa); masked_blit(prota, buffer, 0,0, x, y, 32,32); // teclas control usuario if ( key[KEY_UP] ) { y--; } if ( key[KEY_DOWN] ) { y++; } if ( key[KEY_LEFT] ) { x--; } if ( key[KEY_RIGHT] ) { x++; } // limites if ( x < 0 ) x = 0; if ( x > 800 ) x = 800; if ( y < 0 ) y = 0; if ( y > 600 ) y = 600; blit(buffer, screen, 0, 0, 0, 0, 800, 600); rest(10); // tecla de salida if ( key[KEY_ESC] ) salir = true; } destroy_bitmap(prota); destroy_bitmap(buffer); return 0; } END_OF_MAIN();
Si todo esta correcto, se tendrá un programa que muestra un personaje por pantalla que se puede mover con las teclas del cursor.
Si deseas descargar todo lo que se utiliza en este ejemplo pulsa aquí en el link
oye tengo un error con la imagen no me carga las diferentes fases
ResponderEliminaruso codeblocks y no me muestras las faces del personaje.bmp e intente bajar otra me sale una depuracion
ResponderEliminarTu código me da un error extraño: al ejecutar la sentencia "masked_blit" para imprimir el personaje, se "cuelga" el programa y deja de funcionar. No es problema de mi compilador, ya que tengo otro proyecto en allegro, y funciona perfectamente. Espero que me puedas dar una respuesta, me gustaría acabar este curso, parece muy interesante.
ResponderEliminarposiblemente que no encuentra la imagen "personaje.bmp"
EliminarExactamente, era eso. Ayer me di cuenta de que tenía mal convertido el BMP... Se ve que cambiar la extensión funciona sólo a veces... XD Errores de novato :P
Eliminares porque en este ejemplo aun no se hace eso
ResponderEliminarSaludos porfavor me podrias decir como puedo ver las capas de choque como muestras en tus videos.
ResponderEliminarMuchas gracias por los tutoriales.
en donde va el personaje.bmp (la direccion)
ResponderEliminarBITMAP *prota = load_bmp("personaje.bmp",NULL);
EliminarTal como viene en el programa, la imagen personaje.bmp debe encontrarse en la misma carpeta donde este el ejecutable.
Cómo le hago para que Allegro reconozca cualquier imagen bmp.
ResponderEliminarMe descargué la imagen de un Muro, posteriormente la convertí a bmp, de 32*32 bits. Después voy a CodeBlocks y al ejecutar el programa me manda error, dice que Dejó de funcionar. Es problema con la imagen, ya que sólo sustituyo que imagen seleccione, por ejemplo ejemplo -> roca = load_bitmap("roca.bmp", NULL);
roca.bmp si lo agarra, pero cambio a muro.bmp (Es la imagen que te comentaba) y me marca el error antes mencionado.
Espero me puedas ayudad, gracias.
las imágenes que te descargas normalmente son jpg ya que ocupan poco, estas imágenes debes de transformarlas para ello debes abrirlas por ejemplo con el paint de windows, y luego le das a "guardar como" y seleccionas el formato BMP. Y de esta manera no debes de tener ningún problema.
EliminarMe manda el mismo error al compilar y ejecutar el código del RPG 1, la imagen está en BMP con su fondo magenta y todo.
EliminarGracias
Buen día. Dsculpa ¿En qué parte de la pc debo poner el archvo de magen bmp?
ResponderEliminarEn la misma carpeta donde se encuentre el ejecutable de tu programa.
Eliminar
ResponderEliminarno se que e estado haciendo mal pero no me permite compilar
hola a mi me da un error diciendo que la libreria esta mal
ResponderEliminarBuenas tardes, guiense con el siguiente tutorial del siguiente link que les dejo a continuacion para hacer el turtorial de esta pagina, es muy basico y facil para aquello que ya saben programar, solo tienen que estudiar y analizar un poco las funciones de allegro, el codigo y les irá bien ;) Saludos! Este es el link: https://www.youtube.com/watch?v=n1jd6HVTe14
ResponderEliminarAsegúrate de tener bien instalado el allegro, según el error no se encuentra la libreria allegro. Debes indicarle al compilador la ruta de donde instalaste la libreria allegro.
ResponderEliminarY la segunda parte?
ResponderEliminarLa segunda parte:
Eliminarhttps://devcpp-allegro.blogspot.com/2015/08/crear-juego-rpg-en-c-y-allegro-4-2.html
Existe un indice donde está todo ...
http://devcpp-allegro.blogspot.com.es/p/crea-tu-rpg-en-c-y-allegro.html
Hola. Les recomiendo a los que le da error revisar bien los pasos. La mayoría tienen problemas con la imagen, eso es simple, tienen que cambiar el formato a .bmp(bitmap) con algún editor de imágenes. Otros tienen problemas de librería (allegro), debe ser por una mala instalación. Les recomiendo ver un tutorial de como instalar allegro en Dev-C++ o codeblocks según que usen ustedes.
ResponderEliminar