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

[Allegro] 1000 punktów przy jednej kolizji, problem ?

Ostatnio zmodyfikowano 2011-11-01 23:06
Autor Wiadomość
Przemok123
Temat założony przez niniejszego użytkownika
[Allegro] 1000 punktów przy jednej kolizji, problem ?
» 2011-10-31 23:31:53
Witam

Mam taki problem , robię sobie kolizję "gruszki" z "postacią" i chce ,aby podczas tej kolizji dodawały się mi punkty( oraz wyświetlały) i napisałem tak kolizje:
C/C++
if(( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka2_x, gruszka2_y, 80, 80 ) == true )
||( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka_x, gruszka_y, 80, 80 ) == true )
||( kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka3_x, gruszka3_y, 80, 80 ) == true ) )
{
    pkt += 10;
   
}
mój problem polega na tym ,że gdy nastąpi ta kolizja to dodaje punkty ,ale przechodzi przez całą gruszkę i wtedy dodaje tych punktów z 1000 ,a chce żeby dodawało raz 10 (a nie tak dużo) i żeby gruszka znikła (w tym też możecie pomóc, ale ewentualnie w innym temacie). Nie wiem czy dobrze wytłumaczyłem, jak nie , to postaram się jeszcze raz. Z góry dziękuje i pozdrawiam
P-43162
SeaMonster131
» 2011-10-31 23:37:25
Można np tak:
C/C++
bool wyswietl_gruszke = true;

if( kolizja( postac, gruszka ) && wyswietl_gruszke )
{
    pkt += 10;
    wyswietl_gruszke = false;
}
P-43163
Przemok123
Temat założony przez niniejszego użytkownika
» 2011-10-31 23:49:33
czyli za kolizja( postac, gruszka ) muszę wstawić kolizja( ludek.x, ludek.y, ludek.s, ludek.w, gruszka2_x, gruszka2_y, 80, 80 ) ,a za wyswietl_gruszke , masked_blit( gruszka, bufor, 0, 0, gruszka_x, gruszka_y, gruszka->w, gruszka->h ); ?
P-43164
SeaMonster131
» 2011-10-31 23:56:36
nie do końca,
wyswietl_gruszke
, to po prostu zmienna bool. Bo przecież wyświetlasz już tą gruszke tak?

Tylko jak widze, masz tutaj 3 gruszki, więc korzystając z mojego sposobu to musisz stworzyć 3 zmienne bool, albo po prostu klasę gruszki.
P-43165
Dawidsoni
» 2011-11-01 09:41:11
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.
P-43176
Przemok123
Temat założony przez niniejszego użytkownika
» 2011-11-01 09:46:01
chce zrobić tak ,że jak dotknie się postać z gruszką wtedy ma mi punktacji dodać 10 punktów, a mi dodaje z 1000 , znaczy gruszka "przepływa" przez naszą postać i wtedy szybko dodaje 10+10 , aż do około 1000 gdy już przepłynie przez postać.

Zrobiłem tak:

C/C++
bool wyswietl_gruszke = true;

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 nadal mam ten sam problem.
P-43177
Dawidsoni
» 2011-11-01 09:48:50
Może po prostu tworzysz zmienną wyswietl_gruszke co obieg pętli i wtedy zawsze jest true, bo tak ją inicjalizujesz. Zrób tą zmienną jako daną składową klasy albo zmienną statyczną.
P-43178
Przemok123
Temat założony przez niniejszego użytkownika
» 2011-11-01 10:02:05
ooo dzięki , nawet zapomniałem o tej pętli, teraz działa. A teraz nie wiem czy w tym temacie pisać czy w nowym, bo chciałbym ,aby dodatkowo gdy nastąpi ta kolizja i mi sie dodają te punkty to żeby ta gruszka zniknęła.
P-43179
« 1 » 2 3
  Strona 1 z 3 Następna strona