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

Kółko i krzyżyk w allegro

Ostatnio zmodyfikowano 2012-07-14 20:51
Autor Wiadomość
ridic14
Temat założony przez niniejszego użytkownika
Kółko i krzyżyk w allegro
» 2012-07-14 18:40:00
zrobiłem pewien programik i nie chce zmienić wyświetlanego bmp zawsze daje kółko
narazie pierwsze trzy pola a pętla się cały czas wykonuje czyli po kliknięciu zmienia gracza i powinno dać inny bmp
C/C++
#include <allegro.h>


void gra()
{
    BITMAP * bufor = NULL;
    BITMAP * mapa = NULL;
    BITMAP * o = NULL;
    BITMAP * x = NULL;
    BITMAP * znak = NULL;
    bufor = create_bitmap( 640, 480 );
    mapa = load_bmp( "mapa.bmp", default_palette );
    x = load_bmp( "x.bmp", default_palette );
    o = load_bmp( "xo.bmp", default_palette );
   
   
    bool wolnya1 = false;
    bool wolnya2 = false;
    bool wolnya3 = false;
    bool wolnyb1 = false;
    bool wolnyb2 = false;
    bool wolnyb3 = false;
    bool wolnyc1 = false;
    bool wolnyc2 = false;
    bool wolnyc3 = false;
   
   
   
   
    while( !key[ KEY_Q ] )
    {
       
        int gracz = 1;
        if( gracz == 1 )
        {
            znak = o;
           
        }
        else if( gracz == 2 )
        {
            znak = x;
           
        }
       
        if( mouse_y < 122 && mouse_y > 26 && mouse_x < 238 && mouse_x > 143 && mouse_b == 1 && wolnya1 == false )
        {
            if( gracz == 1 )
            {
               
                gracz = 2;
            }
            else if( gracz == 2 )
            {
               
                gracz = 1;
            }
           
            masked_blit( znak, mapa, 0, 0, 140, 30, screen->w, screen->h );
            blit( mapa, bufor, 0, 0, 0, 0, screen->w, screen->h );
            blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
            wolnya2 == true;
        }
        if( mouse_y < 119 && mouse_y > 30 && mouse_x < 385 && mouse_x > 248 && mouse_b == 1 && wolnya2 == false )
        {
            if( gracz == 1 )
            {
               
                gracz = 2;
            }
            else if( gracz == 2 )
            {
               
                gracz = 1;
            }
           
            masked_blit( znak, mapa, 0, 0, 258, 30, screen->w, screen->h );
            blit( mapa, bufor, 0, 0, 0, 0, screen->w, screen->h );
            blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
            wolnya2 == true;
        }
        if( mouse_y < 121 && mouse_y > 37 && mouse_x < 483 && mouse_x > 388 && mouse_b == 1 && wolnya3 == false )
        {
            if( gracz == 1 )
            {
               
                gracz = 2;
            }
            else if( gracz == 2 )
            {
               
                gracz = 1;
            }
           
            masked_blit( znak, mapa, 0, 0, 388, 35, screen->w, screen->h );
            blit( mapa, bufor, 0, 0, 0, 0, screen->w, screen->h );
            blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
            wolnya3 == true;
        }
       
       
       
        blit( mapa, bufor, 0, 0, 0, 0, screen->w, screen->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
       
       
    }
   
}
co tu jest źle
P-60030
ridic14
Temat założony przez niniejszego użytkownika
» 2012-07-14 19:36:35
Zauważyłem że pierwsza zmienna int gracz = 1; nie powinna być poza pętlą ale gdy ją tam zabiorę to program rysuje X i O na raz w tym samym polu!!?!!??
P-60039
ridic14
Temat założony przez niniejszego użytkownika
» 2012-07-14 20:22:03
Udało się trochę zmieniłem każdy if oto jeden z nich:

C/C++
if( mouse_y < 122 && mouse_y > 26 && mouse_x < 238 && mouse_x > 143 && mouse_b == 1 && wolnya1 == true && gracz == 1 )
{
   
   
    gracz = 2;
   
   
   
    masked_blit( o, mapa, 0, 0, 140, 30, screen->w, screen->h );
    blit( mapa, bufor, 0, 0, 0, 0, screen->w, screen->h );
    blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    wolnya1 = false;
}

cytat z jednego tematu : specjalnie nic nie odpowiadacie żeby ktoś sam rozwiązał problem???
P-60045
xevuel
» 2012-07-14 20:51:11
To ja zaofftopuję, w (mam nadzieję) słusznej sprawie.

specjalnie nic nie odpowiadacie żeby ktoś sam rozwiązał problem???
Nie, możesz mi wierzyć, że nie dlatego. Powodów nieodpowiadania jest kilka:

  • Używasz mało znanej/rzadko używanej biblioteki, przez co sam sobie ograniczasz szansę pomocy.
  • Nie potrafisz czekać. Nie każdy ma czas na każde Twoje zawołanie lecieć i Ci pomagać.
  • Zakładasz temat w stylu: "Tu mam tak, tu mam inaczej, dlaczego mi to nie działa?".
  • Tworzysz nieczytelny kod, bez wyjaśniania go w komentarzach.
  • Bezsensownie tytułujesz temat.
  • W temacie używasz różnych dziwnych skrótów, nie stosujesz się do gramatyki.
  • Używasz nadmiaru wykrzykników/pytajników.
  • Nie poszukałeś wcześniej rozwiązania w google/w szukajce na stronie.

Jeśli choć jeden z tych punktów dotyczy Ciebie, nie dziw się, że musisz czekać na odpowiedź.

W Twoim przypadku:
  • Na tej stronie preferowane jest raczej SFML
  • Podpunkt 3
  • Kod jest nieczytelny, co to jest wolnya2? Btw., pomyliłeś operatory.
  • Temat jest bezsensowny, tak to sobie możesz go nazwać w "Nasze prace"
  • nie chce zmienić wyświetlanego bmp
  • ale gdy ją tam zabiorę to program rysuje X i O na raz w tym samym polu!!?!!??

Zamykam ponownie.
P-60052
« 1 »
  Strona 1 z 1