Bilard

Stronę tą wyświetlono już: 1067 razy

Jak to zwykle bywa w prawdziwym bilardzie tak i w tym programie znajduje się 15-naście bil do wbicia, które początkowo ułożone są w trójkąt oraz jedna bila biała do wbijania pozostałych bil. Ruch i detekcja kolizji bil są realizowane w zegarze teoretycznie co 10ms, prędkość maksymalna bili białej wynosi 100 pikseli na sekundę. Oznacza to, że bila ta może się przemieścić w jednym kroku maksymalnie o 1 piksel. Bile nie muszą poruszać się z bardzo dużymi prędkościami więc przyjęta prędkość wydaje się być wystarczająca. Dodatkowo wprowadzony został współczynnik mikro określający stratę prędkości pod wpływem tarcia tocznego bili o podłoże.

Gra bilard napisana w C++
Rys. 1
Ilustracja programu bilard.

Celowanie

Aby wprawić w ruch bilę białą należy najechać na nią myszką, nacisnąć i przytrzymać lewy przycisk myszki a następnie przemieścić kursor w dowolnym kierunku co spowoduje pojawienie się linii celownika. Im dalej od bili białej będzie znajdował się kursor myszki podczas gdy zwolniony zostanie jej lewy przycisk z tym większą prędkością bila biała będzie się przemieszczała.

Zderzenia

W programie mamy do czynienia z dwoma typami zderzeń: bili z bandą stołu bilardowego oraz bili z bilą.

Zderzenia bili z bandą stołu

Zderzenie bili z bandą stołu jest bardzo proste, wystarczy sprawdzić, czy krawędź bili nie wystaje poza krawędź stołu, w określonym przypadku zmieniany jest kierunek ruchu bili w osi x lub y (nigdy obu na raz) na przeciwny. Dla przykładu, jeżeli składowa x położenia bili pomniejszona o jej promień R jest mniejsza od zera, to bila przekroczyła lewą krawędź stołu i należy zmienić znak składowej x wektora prędkości bili na znak dodatni. Gdy składowa x położenia bili powiększona o jej promień R przekroczy szerokość stołu W, oznaczać to będzie, że bila wykroczyła poza prawą krawędź stołu a więc należy zmienić znak składowej x wektora prędkości bili na ujemny. Analogicznie postąpić należy w przypadku zderzenia z krawędzią górną i dolną stołu bilardowego.

Zderzenia bili z bilą

Wykrycie zderzenia bili z bilą nie jest trudne, wystarczy określić odległość L dzielącą środki bil i sprawdzić, czy jest ona większa lub równa podwojonej wartości promienia R zderzających się bil. Jeżeli wcześniej wspomniany warunek zostanie spełniony, oczywiste jest, że bile się zderzyły i pozostało jedynie obsłużenie tego zderzenia.

Z lekcji fizyki wiadomo, że zderzenia idealnie sprężyste występują jedynie w przypadku atomów i cząsteczek. W naszym świecie nie występują zderzenia idealnie sprężyste, ponieważ część energii zderzenia zostaje zawsze rozproszona, jednakże niektóre rodzaje zderzeń są bardzo dobrym przybliżeniem zjawiska zderzenia sprężystego i do takich zalicza się zderzenia bil. Czym charakteryzuje się zderzenie idealnie sprężyste? Otóż po zderzeniu sumaryczna energia kinetyczna obydwóch bil jest równa sumarycznej energii bil przed ich zderzeniem. W trakcie prawdziwego zderzenia bil, niewielka część energii zostaje rozproszona w postaci drgań atomów w miejscu ich zderzenia (eneriga cieplna).

Ilustacja zderzenia bil.
Rys. 2
Ilustacja zderzenia bil.

Zderzające się bile z rysunku 2 wymieniają się jedynie składowymi prędkości leżącymi w osi X' łączącej środki bil podczas zderzenia, pozostałe składowe uderzenia pozostają niezmienione. Cała sztuczka polega więc na odpowiednim zrzutowaniu wektorów prędkości bil do układu współrzędnych X'Y' ich zamianie i zrzutowanie tak otrzymanych wektorów do układu współrzędnych XY. Do rzutowania można użyć algorytmu znajdującego się w dziale Programowanie: Algorytmy obliczeniowe: Rzutowanie punktu na prostą.

Bila w łuzie

To już jest banalnie proste, jeżeli środek bili znajdzie się w środku łuzy to bila wpadła do łuzy i można jej już nie rysować. Oczywiście środek bili musi znajdować się w odległości mniejszej od promienia RŁ łuzy.

Rozpoczęcie gry od nowa

Jeżeli bila biała wpadła do łuzy, lub coś poszło nie tak jak trzeba, zawsze można zacząć od początku klikając prawym przyciskiem myszy w obszarze okna programu.

Wideo prezentacja programu

Pobierz program

Załączniki:

Program bilard

Komentarze