Dawidsoni |
» 2011-11-01 10:06:24 A rysujesz ją co klatkę? Robisz tak: tworzysz nową zmienną czy_rysowac, ustawiasz ją na true (inicjalizujesz), jeśli zaszła kolizja ustawiasz ją na false. A przy rysowaniu gruszki robisz tak: if(czy_rysowac) rysuj_gruszke |
|
Przemok123 Temat założony przez niniejszego użytkownika |
» 2011-11-01 10:20:22 if(( gruszka_y <= 768 ) ) { gruszka_y++; }
else { gruszka_x =( rand() % 950 ) + 50; gruszka_y = 0; } masked_blit( gruszka, bufor, 0, 0, gruszka_x, gruszka_y, gruszka->w, gruszka->h );
tak mam co do gruszki |
|
SeaMonster131 |
» 2011-11-01 11:46:40 if( wyswietl_gruszke ) masked_blit( gruszka, bufor, 0, 0, gruszka_x, gruszka_y, gruszka->w, gruszka->h );
Czyli: bool wyswietl_gruszke = true;
if( wyswietl_gruszke ) masked_blit( gruszka, bufor, 0, 0, gruszka_x, gruszka_y, gruszka->w, gruszka->h );
if(( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka_x, gruszka_y, 80, 80 ) == true ) && wyswietl_gruszke ) { pkt += 10; wyswietl_gruszke = false; }
I będzie Ci działac. a mam jeszcze taki problem co do tej punktacji gruszki, działa ,ale tylko raz, czyli gdy spada gruszka, nastepuje kolizja z postacią i dodaje 10 punktów ,ale gdy ta sama gruszka spada drugi raz to już nie dodaje. |
Jeżeli nie wiesz jak działają wartości zmiennych, instrukcja if, to wróć do kursu. Inaczej długo nie zajedziesz. Nawet @Dawidsoni Ci już to napisał: Zrób jak powiedział SeaMonster, a jak chcesz, żeby można było kilka razy zrobić kolizje z tą samą gruszką (i dostać za nią punkty), to zrób tak, że jeśli zmienna wyswietl_gruszke = false to odlicza czas np. do 0,1 sekundy i po tym czasie zmienna wyswietl_gruszke = true. |
|
Przemok123 Temat założony przez niniejszego użytkownika |
» 2011-11-01 11:48:39 no fakt mój błąd, jest napisane, ale nie wiem jak zrobić te odliczanie czasu, bo jak zrobie Sleep to mi sie zatrzyma cała gra. Zrobiłem tak, ale coś nie działa: if(( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka_x, gruszka_y, 80, 80 ) == true ) && wyswietl_gruszke ) { pkt += 10; if( wyswietl_gruszke = false ) { Sleep( 1 ); wyswietl_gruszke = true; } }
|
|
Dawidsoni |
» 2011-11-01 21:53:47 Nie korzystam z Allegro, ale myślę, że jest coś tam takiego jak timery. Poszukaj w internecie albo dokumentacji Allegro. Ja korzystam z SFML i tam jest specjalna klasa Clock do takich rzeczy. |
|
SeaMonster131 |
» 2011-11-01 22:01:50 Kod który dałeś jest bez sensu. Bo po 1. tak nie porównuje się zmiennych, = to operator przypisania, po 2. pierwszy if się wykona gdy nastąpi kolizja i wyswietl_gruszke to prawda, wiec drugi if w tym pierwszym sie nie wykona, bo.. to nie logiczne:
if(kiss_my_ass == true) // pierwszy if { zrob_to();
if(kiss_my_ass == false) //drugi if { zrob_tamto(); }
}
Drugi if się nie wykona, bo jest w pierwszym if, więc kiss_my_ass musi być true, a drugi if się wykona kiedy kiss_my_ass będzie false, tylko nie będzie false, bo może być tylko true.
Hahahah :)
I jak chcesz odliczanie czasu to jej... dajesz zmienną czas, kiedy wyswietl_gruszke to fałsz, czas++, i kiedy czas >= 200, to dajesz wyswietl_gruszke jako prawdę...
Wsio, powodzenia ;) |
|
Przemok123 Temat założony przez niniejszego użytkownika |
» 2011-11-01 22:15:10 dziękuje w ogóle za pomoc, zrobiłem tak: if(( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka_x, gruszka_y, 80, 80 ) == true ) && wyswietl_gruszke ) { pkt += 10; wyswietl_gruszke = false; czas++; if( czas >= 200 ) { wyswietl_gruszke = true; } }
ale nie działa :( |
|
SeaMonster131 |
» 2011-11-01 22:30:49 bo czas się zwiększy tylko wtedy gdy nastąpi kolizja i wyswietl_gruszke to prawda, a Ty przecież podczas kolizji ustawiasz że wyswietl_gruszke to falsz... |
|
1 « 2 » 3 |