#include <stdio.h>
#include <allegro.h>
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
#define ROJO 0x1AA9D1
#define GRIS 0x333333
#define BLANCO 0xFFFFFF
inline void iniciarSistemas(int ANCHO, int ALTO){
allegro_init(); //Inicia la librería Allegro
install_keyboard(); //Instala el controlador de interrupciones de teclado de Allegro
set_color_depth(32); //Establece el formato de píxel para ser utilizado por las llamadas posteriores.
set_gfx_mode(GFX_AUTODETECT_WINDOWED, ANCHO, ALTO, 0, 0); //Pixeles utilizados
install_mouse(); // Para usar el ratón
}
int main() {
iniciarSistemas(800, 531);
BITMAP *buffer = create_bitmap ( 800, 531 );
BITMAP *cursor = load_bitmap ( "cursor.bmp", NULL );
//escena1
BITMAP *escena1Fondo = load_bitmap ( "escena1fondo.bmp", NULL );
BITMAP *escena1Jugar = load_bitmap ( "escena1jugar.bmp", NULL );
BITMAP *escena1Salir = load_bitmap ( "escena1salir.bmp", NULL );
//otras escenas
BITMAP *menu = load_bitmap ( "escena2menu.bmp", NULL );
BITMAP *instrucciones = load_bitmap ( "escena3instrucciones.bmp", NULL );
BITMAP *creditos = load_bitmap ( "escena4creditos.bmp", NULL );
if (buffer == NULL || escena1Fondo == NULL || escena1Jugar == NULL || escena1Salir == NULL ||
menu == NULL || instrucciones == NULL || creditos == NULL || cursor == NULL ) {
cout << "ERROR al cargar alguna de las imagenes" << endl;
destroy_bitmap ( buffer );
destroy_bitmap ( cursor );
destroy_bitmap ( escena1Fondo );
destroy_bitmap ( escena1Jugar );
destroy_bitmap ( escena1Salir );
destroy_bitmap ( menu );
destroy_bitmap ( instrucciones);
destroy_bitmap ( creditos );
return 1;
}
clear_to_color ( buffer, 0x000000 );
int tiempo_ticks = 0;
int ticks = CLOCKS_PER_SEC / 20;
int op = 0;
int sw = 0;
int escena = 1; //escena inicial
bool salida = false;
while ( !salida ) {
if ( clock() > tiempo_ticks
+ ticks
) {
clear_to_color ( buffer, 0x000000 );
switch ( escena ) {
case 1: //escena1. Es la inicial.
if ( mouse_x > 176 && mouse_x < 326 && mouse_y > 410 && mouse_y < 485 ) {
blit ( escena1Jugar, buffer, 0, 0, 0, 0, 800, 531 ); // Imprime fondo 2 sobre el buffer (0,0,0,0 para que se imprima toda la pantalla)
if ( mouse_b & 1 ) { // Si se presiona el botón izquierdo se realiza la acción
escena = 2; //****la accion segun entendi es pasar al menu no?****
}
} else if ( mouse_x > 472 & mouse_x < 619 && mouse_y > 412 & mouse_y < 483 ) {
blit ( escena1Salir, buffer, 0, 0, 0, 0, 800, 531 ); // Imprime fondo 3 sobre el buffer (0,0,0,0 para que se imprima toda la pantalla)
if ( mouse_b & 1 ) { // Si se presiona el botón izquierdo se realiza la acción
salida = true;
}
} else {
blit ( escena1Fondo, buffer, 0, 0, 0, 0, 800, 531 ); // Si no se cumple lo anterior queda el fondo 1
}
masked_blit ( cursor, buffer, 0, 0, mouse_x, mouse_y, 13, 22 ); //Para colocar transparencia al cursor, se imprime en el buffer con las cordenadas del mouse.
break;
case 2: //escena2
//Controla el movimiento de arriba abajo del menu
if ( !key[KEY_UP] && !key[KEY_DOWN] && sw == 1 ) {sw = 0;}
if ( key[KEY_UP] && sw == 0 ) { op--; if ( op == 0 ) op = 5; sw = 1; }
if ( key[KEY_DOWN] && sw == 0 ) { op++; if ( op == 6 ) op = 1; sw = 1; }
//averigua si se pulsa enter segun en que posicion esteamos en el menu
if ( op == 1 && key[KEY_ENTER] ) { escena = 5; }
if ( op == 2 && key[KEY_ENTER] ) { escena = 6; }
if ( op == 3 && key[KEY_ENTER] ) { escena = 3; }
if ( op == 4 && key[KEY_ENTER] ) { escena = 4; }
if ( op == 5 && key[KEY_ENTER] ) { escena = 1; }
blit ( menu, buffer, 0, 0, 0, 0, 800, 531 );
//Animacion de las letras del menu
if ( op == 1 ) { textout_centre_ex ( buffer, font, "Nueva Partida" , 390, 260, ROJO, GRIS );
} else { textout_centre_ex ( buffer, font, "Nueva Partida" , 390, 260, BLANCO, GRIS ); }
if ( op == 2 ) { textout_centre_ex ( buffer, font, "Niveles" , 385, 318, ROJO, GRIS );
} else { textout_centre_ex ( buffer, font, "Niveles" , 385, 318, BLANCO, GRIS ); }
if ( op == 3 ) { textout_centre_ex ( buffer, font, "Instrucciones" , 390, 368, ROJO, GRIS );
} else { textout_centre_ex ( buffer, font, "Instrucciones" , 390, 368, BLANCO, GRIS ); }
if ( op == 4 ) { textout_centre_ex ( buffer, font, "Creditos" , 380, 417, ROJO, GRIS );
} else { textout_centre_ex ( buffer, font, "Creditos" , 380, 417, BLANCO, GRIS ); }
if ( op == 5 ) { textout_centre_ex ( buffer, font, "Volver" , 381, 467, ROJO, GRIS );
} else { textout_centre_ex ( buffer, font, "Volver" , 381, 467, BLANCO, GRIS ); }
break;
case 3:
if ( key[KEY_ESC] ) {escena = 2; }
blit ( instrucciones, buffer, 0, 0, 0, 0, 800, 531 );
break;
case 4:
if ( key[KEY_ESC] ) {escena = 2; }
blit ( creditos, buffer, 0, 0, 0, 0, 800, 531 );
break;
case 5:
if ( key[KEY_ESC] ) {escena = 2; }
textout_centre_ex ( buffer, font, "Aqui deberia ir el juego XD" , 390, 260, ROJO, GRIS);
break;
case 6:
if ( key[KEY_ESC] ) {escena = 2; }
textout_centre_ex ( buffer, font, "No implementado" , 390, 260, ROJO, GRIS);
break;
default:
break;
}
blit ( buffer, screen, 0, 0, 0, 0, 800, 531 );
}
}
destroy_bitmap ( buffer );
destroy_bitmap ( cursor );
destroy_bitmap ( escena1Fondo );
destroy_bitmap ( escena1Jugar );
destroy_bitmap ( escena1Salir );
destroy_bitmap ( menu );
destroy_bitmap ( instrucciones);
destroy_bitmap ( creditos );
return 0;
}END_OF_MAIN();