Wpis z mikrobloga

Troszku utknąłem z moim małym projektem... ( ͡° ʖ̯ ͡°)

Mam listę ze zbiorem kwadratów, które latają po ekranie i chodzi o to, żeby się od siebie odbijały w miarę normalny sposób.
Mam kłopot żeby po pierwsze opisać same wartości pozycji, bo jeśli w liście jest np.
listakwadratów = [kwadrat, kwadrat, kwadrat....] no to pozycje są np. (kwadrat.positionx, kwadrat.positiony). Nie wiem jak potem walczyć z tym odbijaniem, bo nie mogę zrobić warunków np.
if kwadrat.position
x == kwadrat.position_x itp.

Po drugie zastanawiam się jak zrobić to choć trochę realistyczne odbijanie, żeby jak jeden leci np. (-5, 2) a drugi (1, 5) to żeby odbiły się od siebie odpowiednio.
Nie mogę znaleźć żadnych ciekawych tutoriali w tym temacie. Jedynie co piłeczka odbijająca się od ściany, ale to jest proste i mnie nie urządza.
Czy ktoś może podrzucić jakąś radę? Już myślałem, że kwadraty będą latać zawsze z tą samą prędkością x i y, co sprawi, że będą latać pod kątem 45 stopni i to bardzo ułatwi sam model odbijania ich od siebie.

#naukaprogramowania #python
  • 7
@lukasz1985m: Tak, rozumiem, że muszą być jakieś warunki. Chodziło mi o nazewnictwo zmiennych, bo przecież jeśli weźmiemy dwa kwadraty z listy, to ich pozycje będą się tak samo nazywać i to może być kłopot.
Ogólnie znalazłem taką stronkę: http://gamedevelopment.tutsplus.com/tutorials/when-worlds-collide-simulating-circle-circle-collisions--gamedev-769 i spróbuję coś tu powalczyć, bo wygląda dokładnie na coś takiego o co mi chodzi.
@max1983:
delta = 3 #raczej blisko 1
for ki in listakwadratow:
.for kj in lista
kwadratow:
..if ki == kj:
...continue
..if abs(ki.x - kj.x) < delta:
...if abs(ki.y - kj.y) < delta:
....blisko_kolizji()

Jak masz dużo kwadratów, to można podzielić ekran na mniejsze kwadraty (prostokąty) i wtedy przeszukiwać na okoliczność kolizji tylko obiekty z tych samych kwadratów (kawałków ekranu).
@max1983: Nie napisałeś czy wszystkie kwadraty mają być takiej samej wielkości, czy mogą się obracać (czy ich boki są cały czas równoległe do osi ekranu). Ogólnie - na pewno nie kolidują ze sobą kwadraty o tej samej wielkości, których środki są odległe o pierwiastek z 2 razy długość boku.