Siema, jestem w trakcie pisania takiej namiastki symulacji ruchu ulicznego w C++, korzystam przy tym z SFML'a.
Program ma po prostu przedstawiać losowy ruch paru samochodzików po mapie, ale z zachowaniem podstawowych zasad (reguła prawej ręki, znak stopu), mapa ma mieć minimum 3 skrzyżowania.
Widok z góry, proste 2D.
O ile sama implementacja w SFMLu jest dosyć łatwa do ogarnięcia na tym poziomie, to już z pomysłem na program mam spore problemy, nie wiem jak to ugryźć. Dotychczas planowałem to robić wg takiego schematu:
-klasa Auto i dziedziczace po niej konkretne autka (wystarcza 2-3), o atrybutach takich jak textura(i sprite) predkosc, aktualny status(jazda albo postoj), aktualny kierunek jazdy (dla uproszczenia tylko UP/DOWN/LEFT/RIGHT), funkcje to respawn(losowy, byle w dozwolonym miejscu), jazda, stop..
-klasa Kafelek, pojedynczy kafelek mapy, dziedziczaca po niej Ulica i Trawa (max uproszczenie, to na zaliczenie)
-klasa Mapa zawierajaca tablice Kafelków, rysujaca je na ekranie
-klasa symulacja odpalajaca odpowiednie funkcje w okienku w zaleznosci od statusu symulacji (menu,symulacja,exit)..
dotychczas stworzylem funkcje ktora rysuje mape z pliku txt (0 to trawa, 1 to ulica), ale to dosyć prymitywne..
problem w tym, że nadal nie potrafię napisać niczego konkretnego..mam taki pomysl:
-każdemu obiektowi nadać ID (osobno trawa, osobno ulica, osobno Audi, Viper, znak stopu itp itd)
-zrobić tablicę 3 wymiarową [x][y][2], gdzie [x][y] to wymiary mapy (w kafelkach tak dopasowanych, żeby wypełniały idealnie całe okno) i płaszczyznę [x][y][0] wypełniać ID obiektow nieruchomych (sama mapa + ew. znaki) a płaszczyzne [x][y][1] wypełniać ID elementów ruchomych (w sumie tylko aut) (3 wymiary dlatego, że samochód jest rysowany na ulicy, a nie zamiast niej)
- cały mechanizm symulacji odgrywałby się w tej 3-wymiarowej tablicy w ktorej zamiast jazdy samochodów przeskakiwały by inty (ID) po komórkach wg. określonych zasad, następnie postarałbym się napisać funkcję, która przy pomocy SFML przenosi to, co dzieje się w tablicy, na okienko symulacji
Co o tym wszystkim myślicie? Poradzicie coś?
Weźcie pod uwagę, że na razie nie zależy mi na żadnej optymalizacji - chodzi mi tylko o działający program.
Z góry dzięki