Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ allegro goto

Ostatnio zmodyfikowano 2010-03-14 21:52
Autor Wiadomość
Bartaz
Temat założony przez niniejszego użytkownika
C++ allegro goto
» 2010-03-14 20:58:30
Witam napisalem sobie menu i jest takie cos ze gdy klikne lewym przyciskiem (tu zrobilem przypadkiem na wyjscie a powinno byc nowa gra)to wlancza sie pierwsza plansza ale nic sie nie dzieje dlaczego?
Kod:
C/C++
#include <allegro.h>
///*****************************************************************************************
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );

///*********************************************************************************************
BITMAP * bufor = NULL;
BITMAP * menu_tlo_ = NULL;
BITMAP * menu_nowa_gra = NULL;
BITMAP * menu_opcje = NULL;
BITMAP * menu_opcjez = NULL;
BITMAP * menu_nowa_graz = NULL;
BITMAP * menu_wyjscie = NULL;
BITMAP * menu_wyjsciez = NULL;
BITMAP * ziemia = NULL;
SAMPLE * click = NULL;
///*******************************************************************************************
class interfejs
{
public:
    int x;
    int y;
    int w;
    int s;
};
class postac
{
public:
    int x;
    int y;
    int s;
    int w;
};
class kafelki
{
public:
    int x;
    int y;
    int s;
    int w;
};
///*******************************************************************************************
int mx = 0, my = 0, mb = 0;
void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
};

///***************************************************************************************
int main()
{
   
    allegro_init();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT, 1000, 700, 0, 0 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 107 ) );
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 255, 255 );
    ///*********************************************************************************************
    bufor = create_bitmap( 1000, 700 );
    ///*******************************************************************************************
    menu_tlo_ = load_bitmap( "Grafika/Menu/menu_tlo_.bmp", default_palette );
    menu_nowa_gra = load_bitmap( "Grafika/Menu/nowa_gra_n.bmp", default_palette );
    menu_nowa_graz = load_bitmap( "Grafika/Menu/nowa_gra_z.bmp", default_palette );
    menu_opcje = load_bitmap( "Grafika/Menu/opcje_n.bmp", default_palette );
    menu_opcjez = load_bitmap( "Grafika/Menu/opcje_z.bmp", default_palette );
    menu_wyjscie = load_bitmap( "Grafika/Menu/wyjscie_n.bmp", default_palette );
    menu_wyjsciez = load_bitmap( "Grafika/Menu/wyjscie_z.bmp", default_palette );
    ziemia = load_bitmap( "Grafika/Plansza/ziemia.bmp", default_palette );
   
    click = load_sample( "Muzyka/click.wav" );
   
   
   
    ///*******************************************************************************************
    interfejs nowa_gra_, opcje_, wyjscie_;
    kafelki ziemiaa;
    postac ludek;
   
   
   
    ///************************************************************************************************
    nowa_gra_.x = 300, nowa_gra_.y = 107, nowa_gra_.s = 339, nowa_gra_.w = 88;
    wyjscie_.x = 300, wyjscie_.y = 470, wyjscie_.s = 339, wyjscie_.w = 88;
    opcje_.x = 300, opcje_.y = 300, opcje_.s = 167, opcje_.w = 64;
    ziemiaa.x = 0, ziemiaa.y = 500, ziemiaa.s = 50, ziemiaa.w = 50;
    ///*********************************************************************************************
   
   
   
    int menu_tlo_x = 0;
    int menu_tlo_y = 0;
    ///***************************************************************************************
    bool if_play = true;
    bool if_play1 = true;
    bool if_play2 = true;
    bool czy_wyswietlac_menu = true;
    ///******************************************************************************************
    while( !key[ KEY_ESC ] )
    {
        myszka();
       
       
       
        clear_to_color( bufor,( 107, 109, 111 ) );
       
       
        if( czy_wyswietlac_menu == true );
       
        {
            textprintf_ex( bufor, font, 300, 300, makecol( 50, 200, 30 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
            ///*********************************** MENU********************************
            masked_blit( menu_tlo_, bufor, 0, 0, menu_tlo_x, menu_tlo_y, menu_tlo_->w, menu_tlo_->h );
            masked_blit( menu_nowa_gra, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w );
            masked_blit( menu_opcje, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w );
            masked_blit( menu_wyjscie, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w );
            ///**************************KONIEC KOPIOWANIA MENU***********************************************************************
           
           
           
           
            if(( mx > nowa_gra_.x && mx < nowa_gra_.x + nowa_gra_.s &&
            my > nowa_gra_.y && my < nowa_gra_.y + nowa_gra_.w ) )
            {
                if( if_play )
                {
                    play_sample( click, 255, 127, 1007, 0 );
                    if_play = false;
                }
                masked_blit( menu_nowa_graz, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w );
            } else
            {
                if_play = true;
            }
            ///*****************************************************************************************
            if(( mx > opcje_.x && mx < opcje_.x + opcje_.s &&
            my > opcje_.y && my < opcje_.y + opcje_.w ) )
            {
                if( if_play1 )
                {
                    play_sample( click, 255, 127, 1007, 0 );
                    if_play1 = false;
                }
                masked_blit( menu_opcjez, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w );
            } else
            {
                if_play1 = true;
            }
            ///************************************************************************************************
            if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s &&
            my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w ) )
            {
                if( if_play2 )
                {
                    play_sample( click, 255, 127, 1007, 0 );
                    if_play2 = false;
                }
                masked_blit( menu_wyjsciez, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w );
            } else
            {
                if_play2 = true;
            }
            if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s &&
            my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w && mb == 1 ) )
            {
                goto menu;
            }
        }
        blit( bufor, screen, 0, 0, 0, 0, 1000, 700 );
        menu:
        czy_wyswietlac_menu = false;
        masked_blit( ziemia, bufor, 0, 0, ziemiaa.x, ziemiaa.y, ziemiaa.s, ziemiaa.w );
        speed--;
       
    }
   
   
   
    ///***************************************************************************************
    allegro_exit();
    return( 0 );
}
END_OF_MAIN();
Zrobilem to tak ze gdy sie nacisnie na opcje to zmiennia bool o nazwie czy_wyswietlac_menu robi sie na false i wtedy nie powinno sie wyswietlac menu a nadal tam jest no a potem jest gogo plansza...
C/C++
if(( mx > wyjscie_.x && mx < wyjscie_.x + wyjscie_.s &&
my > wyjscie_.y && my < wyjscie_.y + wyjscie_.w && mb == 1 ) )
{
    goto menu;
}
}
blit( bufor, screen, 0, 0, 0, 0, 1000, 700 );
menu:
czy_wyswietlac_menu = false;
masked_blit( ziemia, bufor, 0, 0, ziemiaa.x, ziemiaa.y, ziemiaa.s, ziemiaa.w );
C/C++
if( czy_wyswietlac_menu == true );

{
    textprintf_ex( bufor, font, 300, 300, makecol( 50, 200, 30 ), - 1, "Myszka x = %d, y = %d, klawisz = %d !", mx, my, mb );
    ///*********************************** MENU********************************
    masked_blit( menu_tlo_, bufor, 0, 0, menu_tlo_x, menu_tlo_y, menu_tlo_->w, menu_tlo_->h );
    masked_blit( menu_nowa_gra, bufor, 0, 0, nowa_gra_.x, nowa_gra_.y, nowa_gra_.s, nowa_gra_.w );
    masked_blit( menu_opcje, bufor, 0, 0, opcje_.x, opcje_.y, opcje_.s, opcje_.w );
    masked_blit( menu_wyjscie, bufor, 0, 0, wyjscie_.x, wyjscie_.y, wyjscie_.s, wyjscie_.w );
    ///**************************KONIEC KOPIOWANIA MENU***********************************************************************
P-15041
szyx_yankez
» 2010-03-14 21:05:30
C/C++
if( czy_wyswietlac_menu == true );

Zmień na:
C/C++
if( czy_wyswietlac_menu == true )
P-15042
Bartaz
Temat założony przez niniejszego użytkownika
» 2010-03-14 21:15:21
No dobra pomoglo ale teraz jest tak ze wyswietla sie sam bufor...
Cos chyba z nawiasami ale jak kombinuje to jest coraz gorzej.
xD
P-15043
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-03-14 21:30:11
Troche sobie poradzilem zrobilem bez goto i po najechcaniu na opcje wyswietla sie bufor ale juz bez klocka:(
edit
////////////
Ok juz sobie z tym poradzilem ale mam nowy probelm a szkoda nie warto zakladac nowego tematu mam taki kod:
C/C++
if( czy_wyswietlac_menu == false )
{
    for( int i; i > 7; i++ )
    {
        masked_blit( ziemia, bufor, 0, 0, ziemiaa.x + odstep, ziemiaa.y, ziemiaa.s, ziemiaa.w );
    }
}
i to mam zadanie robic tak ze wyswietla kafelek ziemi dopoki i>7 i i za kazdym wyswietleniem wyswietla go troche dalej ale sie zawiesza...xD
P-15044
malan
» 2010-03-14 21:52:28
C/C++
for( int i = 0; i < 7; i++ )
Zapomniałeś nadać i wartość :).
P-15045
« 1 »
  Strona 1 z 1