Skrzyżowanie

0

Witam,
Piszę od jakiegoś czasu program, który ma pomóc w obsłudze skrzyżowania (funkcje: Symulacja, Zmiana trybu).

- Tryb będzie określany na podstawie czasu pobranego z systemu (za pomocą biblioteki time.h). Mój pomysł polega na stworzeniu klasy Mode i do konstruktora przekazać jako argument czas pobrany z systemu lub w konstruktorze domyślnym to zrobić i na podstawie czasu ustawić czas trwania cyklu itd. Które rozwiązanie będzie lepsze?

- Symulacja ma przedstawiać pracę skrzyżowania w ustalonym trybie + ruch pojazdów. Napisałem sobie ruch pojazdów jak mają się poruszać po skrzyżowaniu (ustalone trzy możliwe drogi - prosto, lewo, prawo) teraz jednak zastanawiam się jak rozwiązać problem pierwszeństwa... Wymyśliłem by przed każdym sygnalizatorem stworzyć jakąś tablicę, vector, kolejkę lub jakikolwiek inny kontener do niego wrzucać każde "autko". Każdy obiekt "autka" ma swój numerek 1-prosto, 2-prawo, 3-lewo, a następnie porównywać te numerki ze sobą oraz na podstawie tej relacji określać czy autka mogą jechać jednocześnie, czy któreś z nich musi poczekać. Czy jest może jakieś inne, lepsze rozwiązanie?

Dla ułatwienia wrzucam tutaj ilustrację, która ma przypominać graficznie mój pomysł ;)

Obrazek

Dziękuję za odpowiedzi i pozdrawiam wszystkich! :)

0

A spójrz na rzeczywistość: to nie skrzyżowanie czy sygnalizator decyduje o kolejności pojazdów, tylko każdy samochód osobno decyduje za siebie, rozglądając się po otoczeniu i ustalając czy może jechać w danym momencie czy nie.

0
Azarien napisał(a):

A spójrz na rzeczywistość: to nie skrzyżowanie czy sygnalizator decyduje o kolejności pojazdów, tylko każdy samochód osobno decyduje za siebie, rozglądając się po otoczeniu i ustalając czy może jechać w danym momencie czy nie.

Samochód nie potrafi sam decydować, a tym bardziej się rozglądać i ustalić kiedy może jechać:)

0

A to już zależy od samochodu. Ale jak taki co nie potrafi i kierowa ciągle jest to "optymalnie" i tak raczej nie będą jechać. Do autora tematu: Są też drogi z pierwszeństwem i podporządkowane. Swoją drogą co jak przyjadą z przeciwnych kierunków, i obaj skręcają w tą samą stronę? Będzie potrzebny jakiś rand() na taką okoliczność.

0

Tak jak @Azarien napisał nie traktuj samochodów jak jednej całości a osobne byty. W najprostszym przykładzie podziel "trasę" na 2 części. 1 część to moment do którego zaczyna skręcać. A 2 część to wszystko co jest dalej. Każdy pierwszy samochód przy wjeździe może przejechać pierwszą część trasy. Jeśli jedzie prosto może przejechać trasę zawsze, bo ma pierwszeństwo. Jeśli natomiast skręca są 2 możliwości: abo skręca w prawo (czyli może jechać) albo w lewo. Jeśli jedzie samochód z naprzeciwka nie może jechać. Jeśli samochód z naprzeciwka skręca w prawo nie może jechać. Jeśli samochód z naprzeciwka skręca w lewo może jechać bo miną się na ~połowie skrzyżowania. Mam nadzieję że rozumiesz o co mi chodzi.

0

Okej rozumiem, polecacie skorzystać z jakiegoś konkretnego kontenera? Z Vectora czy może coś innego?

0

Samochód nie potrafi sam decydować, a tym bardziej się rozglądać i ustalić kiedy może jechać:)

Samochód na ulicy zachowuje się jak żywa, inteligentna istota. To że tam sieci kierowca to szczegół implementacyjny ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1