no więc tak oto prezentuje się kot w postaci obecnej, z grubsza uprzątnięty:
klawiszologia:
szczały - poruszanie, z altem - przesuwanie lewo-prawo
s - stop
b - wył./wł. odbijania piłeczek. Przydatne, kiedy ktoś chce sobie pooglądać same kolizje na płaszczyźnie.
1/2/3/4/5/6 - zmiana widoku... W sumie są trzy tryby, + trzy kolejne obrócone o 90 stopni. W tej chwili przy przełączaniu widoku nie jest zapisywana aktualna pozycja obserwatora, współrzędne są przypisane na sztywno do każdego trybu.
ctrl + 1/2/... - wł./wył. świateł (obecnie są 2 światła)
esc - qniec.
Problemy z poruszaniem po płaszczyźnie już nie występują. :) Wynikały głównie z równań wyliczających prędkości składowe kulek po zderzeniu, w których jednym z czynników była prędkość wypadkowa przed kolizją, nie uwzględniająca znaków prędkości na osiach X i Z... Stąd brały się czasami kąty odbicia +/-90 stopni i sklejanie piłek. Ostatni test przy ponad 13000 kolizji nie wykazał błędów. :) Dodałem więc analogicznie ruch "wgórny" - to już wydawało się pestką i jak dotąd nie zauważyłem problemów w skakaniu piłeczek - chociaż w tej chwili piłki z każdą kolizją obniżają pułap, co zapewne wynika już jednak z praw fizyki stosowanych w obliczeniach.
Biblioteki GLFW niestety nie udało mi się dodać do projektu - przy próbach kompilacji występują różne "undefined reference", czy coś w ten deseń - nie mam bladego pojęcia czemu. W każdym razie żeby niepotrzebnie nie przeciągać projektu, dałem sobie z tym spokój i wziąłem się za usuwanie błędów. Za to w tej chwili korzystam z bibliotek SDL, głównie w celu wyeliminowania delaya między wciśnięciem klawisza a powtarzaniem ruchu.
Enyłej... Na dzień dzisiejszy najbliższe plany wyglądają tak:
1. Znalezienie sposobu na ustawianie dowolnego rozmiaru siatki na podłodze. Współrzędne siatki są w tej chwili przechowywane w tablicy, a te, jak wiadomo, muszą mieć z góry określony stały rozmiar. Wykorzystanie do tego wektorów niestety nie wchodzi w grę, bo musi być tutaj stosowana ciągła adresacja... (w każdym razie przy obecnie stosowanej metodzie rysowania siatki)
2. Ograniczanie ruchu obserwatora przez ściany. Na to, zdaje się, już znalazłem rozwiązanie, aczkolwiek nie podchodziłem jeszcze do próby jego zastosowania - opierać by to się miało na jakichś dziwnych obliczeniach z iloczynem wektorowym.
3. Dodanie napisów w rogu - informacje o stanie "gry" typu czas trwania, liczba kolizji, współrzędne obserwatora itp.
4. Taki dynks z kierunkami północ-południe-wschód-zachód, obracający się wraz z ruchem obserwatora.
5. Zapis aktualnej pozycji obserwatora przy przełączaniu trybów widoku
6. Teksturki na ściany itp., ale to już sprawy drugorzędne.
7. Zamiana gl_quadsów na trianglesy.
8. Podobno glShadeModel jest deprecated, więc to też by należało czymś zastąpić...
No i to chyba wsio na razie.
Aha, programik do działania wymaga SDL.dll (preferowana wersja 1.2.15) i freeglut.dll. Może się też pluć o jakieś msvc-cośtam-120.dll w windzie.
Ostatnia aktualizacja: 11.07.2018 00:33:26 przez snajper