Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}