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
blit( kostka_idle, bufor, 0, 0, 665 - 75, 450 - 65, 800, 600 ); 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 ); }
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.
|
|
akwes |
» 2011-11-15 01:28:33 bool Visible = false;
if(...) Visible = true;
if( Visible ) blit(...);
? |
|
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:
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 ); } }
To wciąż jest tak samo. |
|
Gabes |
» 2011-11-15 02:07:02 Jeśli dobrze zrozumiałem
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 ); 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 ); textprintf_ex( bufor, font, 40, 40, makecol( 0, 255, 255 ), - 1, "wylosowano %d", xx ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } |
|
sikora9300 |
» 2011-11-15 02:33:05 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 ); 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 ); } textprintf_ex( bufor, font, 40, 40, makecol( 0, 255, 255 ), - 1, "wylosowano %d", xx ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); } |
|
Drraven |
» 2011-11-15 06:29:59 Kurs STC przeczytaj: [ cpp ] code . Robisz warunek i go zmieniasz zależnie od sytuacji. |
|
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. |
|
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. |
|
« 1 » 2 |