Giter VIP home page Giter VIP logo

crossroadsmanager's Issues

Stworzyć fabrykę samochodów

Na podstawie tego, co obecnie jest roboczo w Controller, stworzyć fabrykę samochodów.
-Fabryka powinna działać jako oddzielny wątek.
-Co zadany interwał czasu dodawać nowe samochody
-Zlecać wątkowi Javy fx dodanie ich do sceny
-Uruchamiać samochody
-Mozna zrobić, aby dla zadanej drogi tworzyła z zadaną częstotliwością (np. przekazywać jako parametr mapę <RoadModel, int>, gdzie drugim elementem będzie interwał w milisekundach) - takie podejście będzie dobre dla API dla algorytmu.

Metoda isInside(Point2D point) dla RoadModel

Napisać metodę sprawdzającą czy zadany punkt znajduje się na drodze. Można też dodać przeciążoną z dodatkowym parametrem mówiącym o numerze pasa, ponieważ będzie nas bardziej interesowało, czy samochód znajduje się na prawym pasie drogi, przed światłami, niż czy jest na niej w ogóle.

Dodać klasę modelu skrzyżowania

Stworzyć klasę modelu skrzyżowania z użyciem RoadModel. Powinna również implementować StraightLineShapeInterface, żeby można było w łatwy sposób rysowć skrzyżowanie.

Dodać wykrywanie kolizji między samochodami

W klasie TrafficManager w metodzie run() uzupełnić znajdujące się tam TODO. Kolizje między samochodami wykrywać analogicznie jak między samochodem a światłami - za pomocą getBoundsInParent() oraz intersect().

Klasa ustawiająca długości świateł

j.w. na podstawie parametrów z sliderów
Wątki samochodów odpalać w Executorze. Klasa -> scheduledExecutor?? Specjalnie do wywoływania wątków z interwałem. Generator i Managera odpalić z scheduledExecutor

Przesunąć światła nad skrzyżowanie

W klasie CrossroadsView w metodach setLights*() ustawić dobrze współrzędne świateł, tak żeby zawsze
rysowały się nad odpowiednimi drogami. Problem będzie jeśli będzie wiecej pasów, trzeba pomyśleć jak to zrobić, żeby było rozszerzalne ewentualnie na więcej pasów.

Problem jest taki, że teraz rysuje się to w układzie współrzędnych Anchor Pane, który jest inny od Canvasa, na którym rysowana jest droga. Najlepiej by było rozciągnąć Canvas po prostu na cały Stack Pane na którym jest Canvas.

Jest tak Stack Pane, na tym Canvas, na tym przezroczysty AnchorPane, a na nim elementy, które się w jakiś sposób zmieniają - samochody, światła ... Ale w sumie chyba można ten AnchorPane wywalić. Można spróbować tak robić, żeby bezpośrednio dodawać do StackPane, ale nie wiem, czy to będzie działać, bo chyba coś już tak próbowałem.

Zaimplementować sposób zauważania świateł przez samochody.

Czy samochody będą jakoś same to rozpoznawały?
Wtedy można tak:
-dodać informację o światłach do drogi
-samochód będzie sprawdzał na której jest drodze
-jak zobaczy czerwone to zatrzymywał się jak dojedzie do linii
(W takim rozwiązaniu może być problem z najeżdżaniem na siebie samochodó)

Sposób z managerem ruchu:
-Klasa, która kontrolowałaby z góry ruch wszystkich samochodów w zależności od świateł,
mogłaby wtedy też kontrolować zderzenia

Znaleźć sposób na zachowanie odległości między samochodami

Aktualnie jest tak, że Bounds samochodu pokrywają się z tym co widzimy na ekranie. Dobrze by było tak przerobić klasę samochodu, że bazowy kwadrat czy prostokąt, którego Bounds będziemy pobierać był nieco większy niż sam samochód, aby samochody nie zlewały się ze sobą przy zatrzymywaniu.

Usuwanie samochodów

Trzeba by jakoś usuwać samochody po tym jak przejadą swoja trasę. Należałoby dodać do traffic managera sprawdzanie, czy samochód skończył już swoją trasę i jesli tak, to go wywalać. Najlepiej by było, jakby samochody wyjeżdżały poza widok, wtedy na pewno działoby się to płynnie

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.