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

[Allegro] Problem ze stałą zmianą wartości

Ostatnio zmodyfikowano 2011-11-15 13:02
Autor Wiadomość
Alcarin
Temat założony przez niniejszego użytkownika
[Allegro] Problem ze stałą zmianą wartości
» 2011-11-15 00:55:34
Witam, mam problem z stałym przypisaniem wartości po kliknięciu przycisku. Oto kod:
[kostka_idle] - kostka w stanie poczatkowym
[kostka] - kostka z wartoscia


C/C++
blit( kostka_idle, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
int xx = 0;
if( mx > 590 && mx < 740 && my > 385 && my < 515 && mb == 1 )
{
    srand( time( NULL ) );
    xx = rand() % 6 + 1;
   
}
if( xx == 1 || xx == 2 || xx == 3 || xx == 4 || xx == 5 || xx == 6 )
{
    blit( kostka, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
}
Po wciśnięciu LPM wartość zmienia się tak jak powinna, jednak tylko na czas, gdy LPM jest przycisnięty, po puszczeniu wraca do dawnej wartości, i kostka jest wyrysowana tylko w czasie, gdy LPM jest wciśnięty.


Porządane działanie:
-wciśnięcie LPM / losowanie liczby 1-6
-przypisanie losowej liczby do zmiennej
-jesli, któraś z tych liczb została wylosowana to rysuje kostke.

W skrócie chodzi o to, żeby po wciśnięciu LPM komenda :
blit( kostka, bufor, 0, 0, 665-75, 450-65, 800, 600 );
rysowała kostkę na stałe, a nie tylko na czas przycisnięcia LPM.


P-44061
akwes
» 2011-11-15 01:28:33
C/C++
bool Visible = false;

// some lines of yours code

if(...)
     Visible = true;

// some lines of yours code

if( Visible )
     blit(...);

 ?
P-44062
Alcarin
Temat założony przez niniejszego użytkownika
» 2011-11-15 01:31:33
Jeśli kod miałby wyglądać w ten sposób:
C/C++
bool Visible = false;
srand( time( NULL ) );
int xx = 0;
if( mx > 590 && mx < 740 && my > 385 && my < 515 && mb == 1 )
{
    Visible = true;
}
if( Visible ) {
    xx = rand() % 6 + 1;
    textprintf_ex( bufor, font, 559, 374, makecol( 255, 255, 255 ), - 1, "%d", xx );
    if( xx == 1 || xx == 2 || xx == 3 || xx == 4 || xx == 5 || xx == 6 )
    {
       
        blit( kostka, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
    }
   
}
To wciąż jest tak samo.
P-44063
Gabes
» 2011-11-15 02:07:02
Jeśli dobrze zrozumiałem
 
C/C++
int xx = 1; bool klik = false;
while( !key[ KEY_ESC ] )
{
    clear_to_color( bufor, makecol( 128, 128, 128 ) );
    blit( kostka_idle, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
    if( mx > 590 && mx < 740 && my > 385 && my < 515 && mb & 1 && klik == false )
    {
        srand( time( NULL ) );
        xx = rand() % 6 + 1;
        klik = true;
    }
    if( mb == 0 ) klik = false;
   
    blit( kostka, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
    textprintf_ex( bufor, font, 40, 40, makecol( 0, 255, 255 ), - 1, "wylosowano %d", xx );
    blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
}
P-44064
sikora9300
» 2011-11-15 02:33:05
C/C++
int xx = 1; bool klik = false;
bool kostka = false;
while( !key[ KEY_ESC ] )
{
    clear_to_color( bufor, makecol( 128, 128, 128 ) );
    blit( kostka_idle, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
    if( mx > 590 && mx < 740 && my > 385 && my < 515 && mb & 1 && klik == false )
    {
        srand( time( NULL ) );
        xx = rand() % 6 + 1;
        klik = true;
        kostka = true;
    }
    if( mb == 0 )
    {
        klik = false;
    }
   
    if( kostka == true )
    {
        blit( kostka, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); //rysowanie kostki
    }
    textprintf_ex( bufor, font, 40, 40, makecol( 0, 255, 255 ), - 1, "wylosowano %d", xx );
    blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
}
P-44065
Drraven
» 2011-11-15 06:29:59
Kurs STC przeczytaj:
[ cpp ] code
.
Robisz warunek i go zmieniasz zależnie od sytuacji.
P-44067
Alcarin
Temat założony przez niniejszego użytkownika
» 2011-11-15 12:08:16
Sprawdziłem Wasze podpowiedzi i niestety wciąż kostka zmienia się tylko na czas wciśnięcia LPM, po puszczeniu przycisku wszystko wraca do swoich poczatkowych form.
P-44071
DejaVu
» 2011-11-15 12:50:17
W złym miejscu masz wstawioną zmienną
int xx = 0;
 - koledzy napisali Ci gdzie powinna znajdować się ta zmienna by Twoje położenie nie wracało do stanu początkowego.
P-44072
« 1 » 2
  Strona 1 z 2 Następna strona