Základní požadavky

Vehicles and Roads (VAR)

Cvičení

OOP (Objektově orientované programování)

SSŠVT

Vehicles and Roads (VAR)

Základní požadavky


Cíl projektu

Vytvořte simulaci provozu na silnicích. K dispozici máte zjednodušenou "mapu" České republiky. Definujte různé dopravní prostředky (vozidla), které se budou pohybovat po mapě, tj. jezdit po silnicích spojujících města v ČR a rozhodovat se na křižovatkách, kam se mají vydat na další cestu. Křižovatky jsou pouze ve městech. Pokud si vozidlo vybere nějakou silnici, tak po ní musí dojet do nejbližšího města. Pak se opět rozhodne, kterou cestou se vydá dál.

Simulaci pojměte jako závod. Vítězí ten dopravní prostředek, který jako první dorazí do svého cíle. Tím celá simulace skončí.

Na začátku si každé vozidlo náhodně zvolí město, ze kterého vyjíždí, a město, do kterého se má dostat. Každé vozidlo bude mít nějakou strategii, podle které se na křižovatce (ve městě) rozhodne, kterým směrem se vydá dál. Každé vozidlo bude mít nějaká omezení (minimální/maximální rychlost, staminu nebo velikost palivové nádrže apod.), podle kterého se rovněž bude řídit jeho pohyb po mapě.

Vozidla v simulaci musejí dodržovat nějaká základní pravidla a dopravní předpisy. Na každé silnici jsou například definovány minimální a maximální rychlost, kterou lze po silnici jet. Tyto požadavky nesmí být porušeny (např. cyklista s max. rychlostí 50 km/h nemůže jet po dálnici, kde je min. rychlost 70 km/h, nebo BMW s max. rychlostí 200 km/h musí i tak dodržet max. rychlost na českých dálnicích, která je 130 km/h). Nelze se pohybovat mimo silnice a města na mapě.

Cyklisté se "staminou" si občas musí odpočinout, když jim "dojdou síly". Auta musejí občas ve městě zastavit a dotankovat apod.


Postup založení projektu a přidání knihovny tříd
  1. Vytvořte nový repozitář na GitLabu. Nazvěte ho VAR (Vehlicles and Roads).
  2. Založte v něm nový konzolový projekt. Nazvěte ho VarCon. VS solution s projektem VarCon pojmenujte VarSol.
  3. Do VS solution ke konzolovému projektu VarCon přidejte knihovnu tříd z repozitáře GpsMapLib. (Repozitář najdete na GitLabu ve složce pro vaši třídu.) Knihovna se jmenuje GpsMapLib...Library. Místo tří teček (...) doplňte kód své třídy a skupiny. Např. pro G3.A 1. skupinu se celý projekt s knihovnou tříd jmenuje GpsMapLibP3Agr1Library. Pro přidání existujícího projektu do vaší VS solution proveďte následující:
    1. Zkopírujte podadresář GpsMapLib...Library z VS-solution adresáře GpsMapLib...Sol do svého VS-solution adresáře VarSol.
    2. Ve Visual Studiu v okně "Solution Explorer" klikněte pravým tlačítkem na vaši solution a zvolte Add ---> Existing Project.
  4. Přidejte závislost vašeho konzolového projektu na projektu z repozitáře GpsMapLib. (Klikněte pravým tlačítkem na "Dependencies" a zvolte "Add Project Reference".)

Co vás z knihovny tříd GpsMapLib...Library zajímá

Hierarchie tříd

Vytvořte následující objektovou hierarchii pro dopravní prostředky, se kterými budete provádět simulaci:


Interface-y

Definujte interface IMovable s těmito metodami:

MoveBy
Metoda způsobí, že se vozidlo posune po zvolené silnici o úsek daný jeho rychlostí a zadaným časovým intervalem.
ChooseWay
Definuje strategii výběru cesty na křižovatce (ve městě) pro pokračování vozidla v jízdě.

Pro metody definované interfacem si sami zvolte vhodné parametry a/nebo návratovou hodnotu.

Interface IMovable pak implementujte v každé specifické třídě vaší hierarchie vozidel (např. Truck, Car, Bicycle apod.).