Autor Wątek: [Rozwiazane][pygame] kolizje  (Przeczytany 1101 razy)

Offline madi_siela

  • Użytkownik

# Sierpień 20, 2008, 14:26:19
nie wiem czy w dobrym miejscu umieściłem temat, no ale dobra.

Zainteresowało mnie ostatnio pygame, a z racji tego, że ucząc się nowych rzeczy często pisze sobie przy okazji w nich jakiś ćwiczebny program to też po przeczytaniu kilku stron tutka postanowiłem napisać skromną grę w założeniach przypominającą arkanoida, ale mniejsza z tym bo nie jest to istotne. Doszedłem do momentu w którym mam kilka piłek odbijających się po pustej planszy i chciałem również, żeby odbijały się one od siebie na wzajem, ale pojawił się tutaj drobny problem. Otóż nie zawsze się od siebie odbijają, a właściwie prawie nigdy.



do zderzeń używałem czegoś takiego:

Kod: (python) [Zaznacz]
def kolizje(self):
        lista=self.sprites()
        i=0               
        for x in lista:
                i2=0                       
                for y in lista:
                        obszar=x.rect.inflate(10,10)
                        if obszar.colliderect(y.rect.inflate(5,5)) and i != i2:
                                x.kolizja_pilka()
                                y.kolizja_pilka()
                        i2=i2+1
                i=i+1


Z początku myślałem, że to przez to, że kulki są za małe dlatego je powiększyłem. Sądziłem,że mimo iż widzę jak przez siebie przechodzą wcale tak nie jest, bo jest to tylko iluzja ruchu zrobiona przez moje oko, ale jednak to nie to.

tutaj jest cały kod

Rozwiązanie problemu w moim przypadku:

udało mi się rozwikłać łamigłówkę. nie prędkość piłek była tutaj przyczyną, ale moje przekombinowanie, bo zrobiłem tak, że każda piłka miała inne odświeżanie. jedna co 20 milisekund, druga co 25 itp. miało to służyć temu, żeby różne piłki poruszające się z tym samym kontem miały różną prędkość, ale jak widać za dużo chciałem. teraz wszystko działa ok, a ja mogę się zabrać za skończenie gierki.
 ???
« Ostatnia zmiana: Sierpień 20, 2008, 22:47:04 wysłana przez madi_siela »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych