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

[Allegro, C++] Przyciśnięty przycisk myszy nie chce wracaćna swoje miejce.

Ostatnio zmodyfikowano 2012-09-26 09:23
Autor Wiadomość
enzoMatrix
Temat założony przez niniejszego użytkownika
[Allegro, C++] Przyciśnięty przycisk myszy nie chce wracaćna swoje miejce.
» 2012-09-25 00:42:15
Piszę początki ekranu powitalnego, który uruchamia grę. Fanie mi wyszło ze zmianą obrazu itd. Problem mam jednak w tym, że gdy na pierwszym ekranie naciskam przycisk myszy to na drugim jest on dalej wciśnięty. Wskaźnikiem dla tego jest u mnie bitmapa apple.bmp. Niestety zamiast czekać na drugim ekranie na ponowne wciśniecie klawisza myszy jabłuszko od razu się pojawia. Proszę o pomoc.


#include <allegro.h>

BITMAP * bufor = NULL;
BITMAP * mapa = NULL;
BITMAP * jablko = NULL;
int mx = 0, my = 0, mb = 0;
bool bwskaznik = false;

void myszka()
{
if( mx != mouse_x || my != mouse_y || mb != mouse_b )
{
mx = mouse_x;
my = mouse_y;
mb = mouse_b;
}
};

void polozenie()
{
myszka();
textprintf_ex( bufor, font, 20, 20, makecol( 200, 200, 200), -1, "Poz X = %d", mx);
textprintf_ex( bufor, font, 20, 30, makecol( 200, 200, 200), -1, "Poz Y = %d", my);
textprintf_ex( bufor, font, 20, 40, makecol( 200, 200, 200), -1, "Klawisz = %d", mb);
blit( bufor, screen, 0, 0, 0, 0, 800, 600);
clear_keybuf();
};

void jabluszko()
{
jablko = load_bmp( "apple.bmp", default_palette);

masked_blit(jablko, bufor, 0, 0, 600, 300, jablko->w, jablko->h);

};
void EkranPowitalny()
{
BITMAP * MapaEkranPowitalny = NULL;
bool KoniecEkranuPowitalnegobool = false;
MapaEkranPowitalny = load_bmp( "tux.bmp", NULL);
while( KoniecEkranuPowitalnegobool == false )
{
myszka();

clear_to_color(bufor, makecol( 150, 150, 150));
masked_blit( MapaEkranPowitalny, bufor, 0, 0, 0, 0, 800, 600);
blit( bufor, screen, 0, 0, 0, 0, 800, 600);
if( mb == 1 )
{

KoniecEkranuPowitalnegobool = true;
bwskaznik = true;
}


}
};

int main()
{
allegro_init();
install_keyboard();
set_color_depth( 16 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
install_mouse();
show_mouse( screen );
unscare_mouse();
clear_to_color(screen, makecol(128,128,128));

bufor = create_bitmap( 800, 600 );
if(!bufor)
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0);
allegro_message("nie moge utworzyc bufora");
allegro_exit();
return 0;
}
mapa = load_bmp( "mapa2.bmp", NULL );
if(!mapa)
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0);
allegro_message( "nie moge zaladowac mapy" );
allegro_exit();
return 0;
}
bool klik = false;
while( !key[KEY_ESC])
{
if(bwskaznik == false)
{
EkranPowitalny();
}

clear_to_color(bufor, makecol( 150, 150, 150));
masked_blit( mapa, bufor, 0, 0, 0, 0, 800, 600);

if( mb == 1 )
{
klik = true;
}

if( klik == true )
{
jabluszko();
}
   

polozenie();
blit( bufor, screen, 0, 0, 0, 0, 800, 600);


}
destroy_bitmap( mapa );
destroy_bitmap( bufor );
allegro_exit();
return 0;
}
END_OF_MAIN();

P-65493
DejaVu
» 2012-09-25 04:28:53
Nigdzie w pętli nie masz
klik = false;
, więc nie ma szans aby wartość sama z siebie się zmieniła na nią :)
P-65498
enzoMatrix
Temat założony przez niniejszego użytkownika
dalej
» 2012-09-25 07:22:23
tak ale nie chodzi o jabłko. Jak już się pojawi to niech jest. Chodzi żeby nie pojawiało się po kliknięciu na ekran powitalny a dopiero później. A przecież klik używany jest dopiero przy jabłku.
P-65499
enzoMatrix
Temat założony przez niniejszego użytkownika
» 2012-09-25 09:11:32
W takim razie jak zrobić żeby jabłko po wciśnięci klawisza pojawiało się i już nie znikało? Ale jednocześnie żeby po kliknięciu na pierwszej mapie nie było go jeszcze na drugiej widocznego?
P-65503
DejaVu
» 2012-09-25 17:22:57
W zasadzie problem, który teraz opisujesz nie wynika z pierwszego posta. Jeżeli wyświetlasz menu to nie obsługujesz rzeczy związanych z grą. Jeżeli wyświetlasz grę to nie obsługujesz rzeczy związanych z menu. Proste :)
P-65517
enzoMatrix
Temat założony przez niniejszego użytkownika
» 2012-09-26 09:23:09
Aha rozumiem. Dzięki nie myślałem tak o tym.
P-65573
« 1 »
  Strona 1 z 1