int main(){ // variables {{{1 int x=10; int y=10; int estado=2; ALLEGRO_DISPLAY *Screen; ALLEGRO_EVENT_QUEUE *qu; ALLEGRO_EVENT Event; ALLEGRO_TIMER *timer; ALLEGRO_BITMAP *Image = NULL; ALLEGRO_BITMAP *background= NULL; bool Exit = false; //}}}1 // Iniciando allegro {{{1 if(!al_init()){ cout<<"eror iniciando allegro"<<endl; return -1; } if(!al_init_image_addon()){ cout<<"error iniciando addon de imagenes"<<endl; return -1; } if(!al_init_primitives_addon()){ cout<<"Couldn't initialize primitives addon!\n"; return -1; } if(!al_install_keyboard()){ cout<<"error iniciando teclado"<<endl; return -1; } //}}}1 // pantalla y resoluciones {{{1 ALLEGRO_DISPLAY_MODE disp_data; int n=al_get_num_display_modes(); bool continuar_resolucion_w=false; bool continuar_resolucion_h=false; for(int i=0;i<n;i++){ al_get_display_mode(i, &disp_data); int w=disp_data.width; int h=disp_data.height; if(w==SWIDTH){ continuar_resolucion_w=true; } if(h==SHEIGHT){ continuar_resolucion_h=true; } } if(continuar_resolucion_w==false && continuar_resolucion_h==false){ cerr<<"resolucion no soportada"<<endl; return -1; } //al_set_new_display_flags(ALLEGRO_FULLSCREEN); Screen = al_create_display(SWIDTH,SHEIGHT); if(!Screen){ cout<<"no se pudo crear el display"<<endl; } //}}}1 // crear queue - timer screen keyboard {{{1 qu= al_create_event_queue(); if(!qu){ cout<<"error creando queue"<<endl; } al_register_event_source(qu, al_get_display_event_source(Screen)); timer = al_create_timer(1.0 / 35); if(!timer){ cout<<"error iniciando timer"<<endl; } al_register_event_source(qu, al_get_timer_event_source(timer)); al_register_event_source(qu, al_get_keyboard_event_source()); //}}}1 // iniciar clases y timer{{{1 // 0 inicio // 1 menu // 2 core Inicio inicio; Menu menu; Core core; inicio.Iniciar(); core.Iniciar_core(Screen); al_start_timer(timer); Image = al_load_bitmap("data/test.png"); ///load the bitmap from a file background= al_load_bitmap("data/background.png"); // ALLEGRO_COLOR clearcol=al_map_rgb(255,255,255); //}}}1 // main loop {{{1 while(Exit == false){ al_wait_for_event(qu, &Event); if(al_is_event_queue_empty(qu)){ if(estado==0){ inicio.Display(Screen); menu.Iniciar_menu(Screen); estado=1; } if(estado==1){ menu.Display(Screen); core.Iniciar_core(Screen); } if(estado==2){ x+=1; core.Animar(); al_draw_bitmap(background,0,0,0); core.Display(Screen); al_draw_bitmap(Image,x,y,0); } al_flip_display(); } if(Event.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { Exit = true; } if(Event.type == ALLEGRO_EVENT_TIMER){ } if(Event.type==ALLEGRO_EVENT_KEY_DOWN){ Exit=true; } } return 0; }
int main(){ // variables {{{1 int fps=50; bool redraw=true; int x=10; int y=10; int mx=0; int my=0; int estado=INTRO; ALLEGRO_DISPLAY *Screen; ALLEGRO_EVENT_QUEUE *qu; ALLEGRO_EVENT Event; ALLEGRO_TIMER *timer; ALLEGRO_BITMAP *Image = NULL; ALLEGRO_BITMAP *background= NULL; ALLEGRO_FONT *font; ALLEGRO_FONT *bigfont; string registro; bool Exit = false; //}}}1 // Iniciando allegro {{{1 if(!al_init()){ cout<<"error iniciando allegro"<<endl; return -1; } if(!al_init_image_addon()){ cout<<"error iniciando addon de imagenes"<<endl; return -1; } if(!al_init_primitives_addon()){ cout<<"Couldn't initialize primitives addon!\n"; return -1; } if(!al_install_keyboard()){ cout<<"error iniciando teclado"<<endl; return -1; } if(!al_install_mouse()){ cout<<"error iniciando raton"<<endl; return -1; } al_init_font_addon(); al_init_ttf_addon(); font=al_load_font("data/helvetica.ttf",24,0); bigfont=al_load_font("data/helvetica.ttf", 48,0); if(!font){ cout<<"font esta vacio"<<endl; return -1; } if(!bigfont){ cout<<"big font esta vacio"<<endl; return -1; } //}}}1 // pantalla y resoluciones {{{1 ALLEGRO_DISPLAY_MODE disp_data; int n=al_get_num_display_modes(); bool continuar_resolucion_w=false; bool continuar_resolucion_h=false; for(int i=0;i<n;i++){ al_get_display_mode(i, &disp_data); int w=disp_data.width; int h=disp_data.height; if(w==SWIDTH){ continuar_resolucion_w=true; } if(h==SHEIGHT){ continuar_resolucion_h=true; } } if(continuar_resolucion_w==false && continuar_resolucion_h==false){ cerr<<"resolucion no soportada"<<endl; return -1; } //al_set_new_display_flags(ALLEGRO_FULLSCREEN); Screen = al_create_display(SWIDTH,SHEIGHT); if(!Screen){ cout<<"no se pudo crear el display"<<endl; } //}}}1 // crear queue - timer screen keyboard {{{1 qu= al_create_event_queue(); if(!qu){ cout<<"error creando queue"<<endl; } al_register_event_source(qu, al_get_display_event_source(Screen)); timer = al_create_timer(1.0 /fps); if(!timer){ cout<<"error iniciando timer"<<endl; } al_register_event_source(qu, al_get_timer_event_source(timer)); al_register_event_source(qu, al_get_keyboard_event_source()); al_register_event_source(qu, al_get_mouse_event_source()); //}}}1 // iniciar clases y timer{{{1 // 0 inicio // 1 menu // 2 core Inicio inicio; Menu menu_principal; Menu_juego menu_juego; Menu_carreras menu_carreras; Core core; Tienda tienda; Registros registros; inicio.Iniciar(); // core.Iniciar(Screen); al_start_timer(timer); Image = al_load_bitmap("data/test.png"); ///load the bitmap from a file background= al_load_bitmap("data/background.png"); // ALLEGRO_COLOR clearcol=al_map_rgb(255,255,255); //}}}1 // main loop {{{1 while(Exit == false){ al_wait_for_event(qu, &Event); //if(al_is_event_queue_empty(qu)){ if(Event.type == ALLEGRO_EVENT_DISPLAY_CLOSE){ Exit = true; } if(Event.type==ALLEGRO_EVENT_KEY_DOWN){ cout<<Event.keyboard.keycode<<endl; if(Event.keyboard.keycode==59){ Exit=true; } if(Event.keyboard.keycode==1){ // a fps+=10; cout<<"fps actual "<<fps<<endl; } if(Event.keyboard.keycode==2){ // b fps-=10; cout<<"fps actual "<<fps<<endl; } if(Event.keyboard.keycode==16){ // core.runner.animando=true; } //cout<<fps<<endl; } if(Event.type==ALLEGRO_EVENT_MOUSE_AXES){ mx=Event.mouse.x; my=Event.mouse.y; } if(Event.type==ALLEGRO_EVENT_MOUSE_BUTTON_DOWN){ //cout<<Event.mouse.x<<endl; } if(Event.type == ALLEGRO_EVENT_TIMER){ if(estado==MENU_PRINCIPAL){menu_principal.Display(Screen, font,mx,my); }; if(estado==MENU_JUEGO){menu_juego.Display(Screen, font, mx,my); }; if(estado==MENU_CARRERAS){menu_carreras.Display(Screen, font, mx,my); }; if(estado==TIENDA){ tienda.Display();}; if(estado==REGISTROS){ registros.Display(); } ; if(estado==MAIN){ x+=1; core.Animar(); core.Mover(); core.Gestion(Event); al_draw_bitmap(background,0,0,0); core.Display(Screen, bigfont); al_draw_bitmap(Image,x,y,0); }; redraw=true; } if(estado==INTRO){ inicio.Display(Screen); // en este estado, cargar todo // // intentar hacer un thread para que que vea la // barra de progreso de carga menu_juego.Iniciar(Screen); menu_carreras.Iniciar(Screen); core.Iniciar(Screen); tienda.Iniciar(); registros.Iniciar(); int n=menu_principal.Iniciar_menu(Screen); if(n==1){ estado=MENU_PRINCIPAL; } } if(estado==MENU_PRINCIPAL){ //menu_principal.Display(Screen, font,mx,my); int next=menu_principal.Gestion(Event); switch(next){ case 0: // estado=CONFIGURACION break; case 1: estado=MENU_JUEGO; break; case 2: // estado=CONTINUAR break; case 3: // estado=GUARDAR break; case 4: Exit=true; break; default: break; } } // en menu juego estan la tienda, las carreras, los registros, etc. if(estado==MENU_JUEGO){ //menu_juego.Display(Screen, font, mx,my); int next=menu_juego.Gestion(Event); switch(next){ case 0: // tienda break; case 1: estado=MENU_CARRERAS; break; case 2: // records break; case 3: estado=MENU_PRINCIPAL; break; default: break; } } if(estado==MENU_CARRERAS){ //menu_carreras.Display(Screen, font, mx,my); int next=menu_carreras.Gestion(Event); if(next>-1 && next<99){ estado=MAIN; } if(next==99){ estado=MENU_JUEGO; } } if(estado==TIENDA){ //tienda.Display(); } if(estado==REGISTROS){ //registros.Display(); } if(estado==MAIN){ core.Gestion(Event); //x+=1; //core.Animar(); //al_draw_bitmap(background,0,0,0); //core.Display(Screen); //al_draw_bitmap(Image,x,y,0); } /* ALLEGRO_COLOR c=al_map_rgb( 25, 25, 25); string s= static_cast<ostringstream*>( &(ostringstream() << fps) )->str(); cout<<"antes del texto"<<endl; al_draw_text(font,c,20,20,0,s.c_str()); cout<<"despues"<<endl; */ //} if(redraw && al_is_event_queue_empty(qu)) { redraw=false; al_flip_display(); } // } } return 0; }