10. Prototípus - AdjustmentBeaver/szoftlab GitHub Wiki
Az osztály buildMap függvénye megváltozott, csak a pálya elérési útvonalát kell neki megadni, illetve törlésre került a Statistics osztály használata.
Ez az osztály az RuntimeException osztály leszármazottja, a pálya fájl feldolgozásakor, hiányzó attribútum esetén keletkezik.
-
Attribútumok
- -isConstructed:boolean - Fel van-e építve az alagútszáj
-
Metódusok
- -canConstruct():boolean - Megadja, hogy felépíthető-e a alagútszáj a pályán
Az állomásról, csak egyszer szállhatnak fel utasok. Ezzel biztosítva van, hogy az első megfelelő színű kocsi fog feltöltődni.
-
Attribútumok
- -hasPassengers:boolean - Megadja vannak-e utasok az állomáson
A kocsik kiterjedését reprezentálja. Egy Coordinate és egy irány segítségével meghatározható a vonat kiterjedése, ami alapján vizsgálható az ütközés és a kirajzolásban is segíteni fog.
-
Attríbútumok
-
-middle:Coordinate - Az alakzat közepe
-
-direction:Coordinate - Az alakzat iránya, vektor
-
-points:List - Az alakzat pontjai
-
-
Metódusok
-
+BoundingBox(m:Coordinate, d:Coordinate) - Konstruktor, beállítja a BoundingBoxot
-
+setPos(m:Coordinate, d:Coordinate) - Beállítja az aktuális középpontot és irányt, majd ezek segítségével kiszámolja az alakzat csúcspontjait
-
+getPoints():List - Visszaadja a BoundingBox pontjait
-
+isCollided():boolean - Összehasonlítja, hogy a paraméterben kapott BoundigBox-al ütközött-e
-
-checkAxisCollision(otherBoundingBox:BoundingBox, axis:Coordinate):boolean - Megnézi egy adott irányra van-e átfedés. Ütközés belső logika
-
-getScalarForCollision(Coordinate point, Coordinate axis):double - Mehatározza egy pont vetületét egy tengelyre (irányra)
-
-
Metódusok
-
+normalize():void - Vektorként kezelve a koordinátát normalizálja azt
-
+getLength():double - Helyvektorként kezelve megadja a vektor hosszát
-
+getDistanceTo(p:Coordinate):double - Megadja egy pont távolságát egy másik ponthoz viszonyítva
-
-
Attribútumok
-
-boundingBox:BoundingBox - BoundingBox az ütközésvizsgálathoz
-
-direction:Coordinate - Irány, amiben a kocsi halad
-
isEmpty:boolean - Üres-e a TrainPart
-
-activateRadius:double - Megadja milyen sugarú körben triggelelődik a csomópont, aminek a közelébe ért a TrainPart
-
-
Metódusok
-
setActivateRadius(activateRadius:double) - Beállíja a csomópontokhoz érés sugarát (Ilyen sugarú körben aktiválódik a csomópont)
-
-getBoundingBox():BoundingBox - Visszaadja a kocsi BoundigBoxát
-
A pálya formátumot a könnyebb feldolgozhatóság érdekében megváltoztattuk, a pályák formátuma (DTD) a következő lett:
<!ELEMENT level (nodes,trains)>
<!ELEMENT nodes (node*)>
<!ELEMENT node (position, neighbours)>
<!ATTLIST node type CDATA #REQUIRED>
<!ATTLIST node name CDATA #REQUIRED>
<!ATTLIST node color CDATA #IMPLIED>
<!ELEMENT position EMPTY>
<!ATTLIST position x CDATA #REQUIRED>
<!ATTLIST position y CDATA #REQUIRED>
<!ELEMENT neighbours (neighbour*)>
<!ELEMENT neighbour EMPTY>
<!ATTLIST neighbour name CDATA #REQUIRED>
<!ELEMENT trains (train*)>
<!ELEMENT train (trainPart*)>
<!ATTLIST train start_node CDATA #REQUIRED>
<!ATTLIST train start_time CDATA #REQUIRED>
<!ELEMENT trainPart EMPTY>
<!ATTLIST trainPart type CDATA #REQUIRED>
<!ATTLIST trainPart speed CDATA #IMPLIED>
<!ATTLIST trainPart color CDATA #IMPLIED>
A teszt pálya fájlja ezek alapján a következő:
<level>
<nodes>
<node type="node" name="sin1">
<position x="0" y="1"/>
<neighbours>
<neighbour name="sin2"/>
</neighbours>
</node>
<node type="node" name="sin2">
<position x="1" y="1"/>
<neighbours>
<neighbour name="sin1"/>
<neighbour name="valto"/>
</neighbours>
</node>
<node type="switch" name="valto">
<position x="2" y="1"/>
<neighbours>
<neighbour name="sin2"/>
<neighbour name="sin3"/>
<neighbour name="sin4"/>
</neighbours>
</node>
<node type="node" name="sin3">
<position x="2" y="2"/>
<neighbours>
<neighbour name="valto"/>
</neighbours>
</node>
<node type="node" name="sin4">
<position x="2" y="0"/>
<neighbours>
<neighbour name="valto"/>
</neighbours>
</node>
</nodes>
<trains>
<train start_node="sin1" start_time="0">
<trainPart type="engine" speed="1"/>
<trainPart type="cart" color="blue"/>
</train>
</trains>
</level>- listNodes - A csomópontokat külön sorba írja, az egyes specifikus csomópontokhoz megjeleníti a hozzá kapcsolódó tulajdonságokat is.
Node (0) type=node pos=(1.0,0.0)
Node (1) type=node pos=(2.0,0.0)
Node (2) type=switch pos=(3.0,0.0) active=[type=node pos=(2.0,0.0)]
- listTrains - A vonatról több információt listáz. Új sorokben megjeleníti a vonathoz kapcsolódó kocsikat és azok információit.
Train (0) isRunning = false startTime = 0 exploded = false pos = null
[0] pos = null next = [null] empty = true
Train (1) isRunning = false startTime = 1 exploded = false pos = null
[0] pos = null next = [null] empty = true
- step (lépésszám) - A kiíratás formátuma megváltozott: (Vonat | Következő csomópont, ami felé tart)
Train0 \| type=station pos=(8.0,0.0) color=green
| Fájl neve | Méret (byte) | Keletkezés ideje | Tartalom |
|---|---|---|---|
| compile.bat | 233 | 2017-03-17 22:56 | Fordításhoz szükséges kötegelt állomány. |
| filelist.sh | 72 | 2017-03-17 23:05 | A jelen helyen látható Fájllista legenerálásához szükséges script. |
| magic.bat | 138 | 2017-03-17 22:56 | A fordításhoz és futtatáshoz szükséges kötegelt állomány. |
| run.bat | 121 | 2017-03-17 22:56 | Futtatáshoz szükséges kötegelt állomány. |
| test.bat | 472 | 2017-04-18 07:59 | Autómatikus tesztelést futtató kötegelt állomány. |
| src/Game.java | 5974 | 2017-03-18 16:56 | Game osztály. |
| src/Map.java | 4615 | 2017-03-18 16:56 | Map osztály. |
| src/MapBuilder.java | 4038 | 2017-03-18 16:56 | MapBuilder osztály. |
| src/MapManager.java | 2372 | 2017-03-18 16:56 | MapManager osztály. |
| src/Node.java | 4273 | 2017-03-18 16:56 | Node osztály. |
| src/Notifiable.java | 339 | 2017-03-18 16:56 | Notifiable osztály. |
| src/SimulationTimer.java | 1722 | 2017-03-18 16:56 | SimulationTimer osztály. |
| src/SpecialPlace.java | 1117 | 2017-03-18 16:56 | SpecialPlace osztály. |
| src/Station.java | 1608 | 2017-03-18 16:56 | Station osztály. |
| src/Switch.java | 1661 | 2017-03-18 16:56 | Switch osztály. |
| src/Train.java | 4560 | 2017-03-18 16:56 | Train osztály. |
| src/TrainCart.java | 1617 | 2017-03-18 16:56 | TrainCart osztály. |
| src/TrainCoalWagon.java | 817 | 2017-04-16 21:49 | TrainCoalWagon osztály |
| src/TrainEngine.java | 1267 | 2017-03-18 16:56 | TrainEngine osztály. |
| src/TrainPart.java | 2722 | 2017-03-18 16:56 | TrainPart osztály. |
| src/TrainScheduler.java | 1322 | 2017-03-18 16:56 | TrainScheduler osztály. |
| src/util/BoundingBox.java | 5129 | 2017-04-18 01:01 | BoundingBox osztály |
| src/util/Color.java | 195 | 2017-03-14 19:33 | Color osztály. |
| src/util/Coordinate.java | 101 | 2017-03-18 15:08 | Coordinate osztály. |
| src/util/Speed.java | 187 | 2017-03-14 19:33 | Speed osztály. |
| src/util/NullAttributeException.java | 680 | 2017-04-16 17:46 | NullAttributeException osztály |
| test/input/alagut_mukodes.in | 90 | 2017-04-18 08:18 | Teszt bemenet |
| test/input/hosszu.in | 54 | 2017-04-18 09:40 | Teszt bemenet |
| test/input/jatekallas_betoltes.in | 114 | 2017-04-18 09:54 | Teszt bemenet |
| test/input/jatekallas_mentese.in | 41 | 2017-04-18 09:47 | Teszt bemenet |
| test/input/jatek_megnyeres.in | 28 | 2017-04-18 09:44 | Teszt bemenet |
| test/input/palya_betoltese.in | 50 | 2017-04-18 09:59 | Teszt bemenet |
| test/input/utasok_felszallasa.in | 31 | 2017-04-18 07:55 | Teszt bemenet |
| test/input/utasok_leszallasa.in | 29 | 2017-04-18 05:46 | Teszt bemenet |
| test/input/utkozes.in | 31 | 2017-04-18 05:46 | Teszt bemenet |
| test/input/vakvaganyra_futas.in | 29 | 2017-04-18 05:46 | Teszt bemenet |
| test/input/valto_mukodes.in | 53 | 2017-04-18 07:24 | Teszt bemenet |
| test/input/vonatok_inditasa.in | 28 | 2017-04-18 05:46 | Teszt bemenet |
| test/output/alagut_mukodes.out | 761 | 2017-04-18 08:15 | Teszt kimenet |
| test/output/hosszu.out | 201 | 2017-04-18 09:40 | Teszt kimenet |
| test/output/jatekallas_betoltes.out | 460 | 2017-04-18 09:54 | Teszt kimenet |
| test/output/jatekallas_mentese.out | 56 | 2017-04-18 09:49 | Teszt kimenet |
| test/output/jatek_megnyeres.out | 546 | 2017-04-18 09:43 | Teszt kimenet |
| test/output/palya_betoltese.out | 418 | 2017-04-18 09:59 | Teszt kimenet |
| test/output/utasok_felszallasa.out | 1366 | 2017-04-18 07:56 | Teszt kimenet |
| test/output/utasok_leszallasa.out | 305 | 2017-04-18 05:46 | Teszt kimenet |
| test/output/utkozes.out | 460 | 2017-04-18 05:46 | Teszt kimenet |
| test/output/vakvaganyra_futas.out | 124 | 2017-04-18 05:46 | Teszt kimenet |
| test/output/valto_mukodes.out | 288 | 2017-04-18 09:35 | Teszt kimenet |
| test/output/vonatok_inditasa.out | 224 | 2017-04-18 05:46 | Teszt kimenet |
| levels/alagut_mukodes.xml | 1572 | 2017-04-16 17:46 | Teszt pálya |
| levels/hosszu.xml | 1485 | 2017-04-16 17:47 | Teszt pálya |
| levels/jatekallas_betoltes.xml | 1210 | 2017-04-16 17:46 | Teszt pálya |
| levels/jatekallas_mentes.xml | 678 | 2017-04-16 17:46 | Teszt pálya |
| levels/jatek_megnyeres.xml | 1317 | 2017-04-18 01:27 | Teszt pálya |
| levels/level.dtd | 729 | 2017-04-16 17:46 | Teszt pálya |
| levels/palya_betoltese.xml | 1037 | 2017-04-16 17:46 | Teszt pálya |
| levels/utasok_felszallasa.xml | 1351 | 2017-04-18 01:51 | Teszt pálya |
| levels/utasok_leszallasa.xml | 1044 | 2017-04-18 05:46 | Teszt pálya |
| levels/utkozes.xml | 1180 | 2017-04-16 17:46 | Teszt pálya |
| levels/vakvaganyra_futas.xml | 678 | 2017-04-16 17:46 | Teszt pálya |
| levels/valto_mukodes.xml | 1390 | 2017-04-16 17:46 | Teszt pálya |
| levels/vonatok_inditasa.xml | 1265 | 2017-04-16 17:46 | Teszt pálya |
A fordítás következő parancs kiadásával lehetséges (a feladat mappájában kell
kiadni): compile
A futtatáshoz az alábbi parancsot kell kiadni a feladat mappájában: run
ProTip: A program fordításához, majd futtatásához elegendő csupán a magic
parancsot használni.
A parancsok kiadásához szükséges előzetesen a %JAVA_HOME% környezeti változót
a JDK fő könyvtárára beállítani.
A tesztek autómatikusan futtathatóak a következő paranccsal: test
A parancsot a feladat mappájában kell kiadni. A kimenet a testresult.txt
fájlban tekinthető meg.
Lehetőség van a tesztkészlet bővítésére. A test\input, test\output mappákba
kell felvenni az új teszt bementét illetve elvárt kimenetét azonos néven.
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:10 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | Nem volt rombolható az alagútszáj |
| Változtatások | Rombolhatóság javítása kódban |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:30 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:12 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:00 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | Más tesztekben a pályán egy mozdony volt, autómatikusan teljesült a pálya. |
| Változtatások | Lehet csak egy mozdonyból alló vonat, nem teljesül a pálya (Tesztekhez) |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:00 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Dobai |
|---|---|
| Teszt időpontja | április 17. 17:00 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:00 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | Az újonnan bevezetett módositások miatt (Game, BoundingBox), a sorozítás nem volt megvalósíható |
| Változtatások | Sorosíthatóság hozzáadása a fent megnevezett osztályokhoz. (Bizonyos transient attribútumok megadása.) |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:00 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:14 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:14 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | Kevés node volt felvéve, a vonat előbb kisiklott, minthogy állomáshoz érne |
| Változtatások | Csomópontok felvétele |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:32 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:16 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | Kevés node volt felvéve, a vonat előbb kisiklott, minthogy állomáshoz érne |
| Változtatások | Csomópontok felvétele |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:34 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Dobai |
|---|---|
| Teszt időpontja | április 17. 17:00 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Dobai |
|---|---|
| Teszt időpontja | április 17. 17:00 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:00 |
| Teszt eredménye | Hibás |
| Lehetséges hibaok | A váltó aktíválásnál az aktív irányt nem jelenítette meg. |
| Változtatások | Akítv irány is megjelenik a kimeneten. |
| Tesztelő neve | Földvári |
|---|---|
| Teszt időpontja | 2017.04.17 20:06 |
| Teszt eredménye | Sikeres |
| Tesztelő neve | Kövér |
|---|---|
| Teszt időpontja | 04.18. 0:20 |
| Teszt eredménye | Sikeres |
| Tag neve | Munka százalékban |
|---|---|
| Dobai Botond | 12,5% |
| Dömötör Szilárd | 27,2% |
| Földvári András | 19% |
| Kövér Márton | 17% |
| Telek István | 24,3% |
| Kezdet | Időtartam | Résztvevők | Leírás |
|---|---|---|---|
| április 12. 19:30 | 3.5 óra | Telek | Pálya bemeneti fájl parser |
| április 14. 16:00 | 1.5 óra | Földvári | Station, SpecialPlace, Node, TrainCart, Switch. test outputs, inputs |
| április 15. 13:00 | 1 óra | Földvári | TrainCart, LoaderStation, debug |
| április 16. 15:00 | 7 óra | Dömötör | Game, Map, MapBuilder osztályok, test, bugfix |
| április 16. 17:30 | 3 óra | Földvári | Moves, CollisionCheck, Coordinate, BoundingBox |
| április 16. 17:30 | 4 óra | Kövér | Train, BoundingBox, TrainPart, debug |
| április 16. 13:30 | 7 óra | Telek | MapBuilder, palya xml fajlok, TrainScheduler, Coordinate, Error handling, event handling, output print |
| április 17. 20:00 | 2.5 óra | Földvári | Teszt kimenetek, debug |
| április 17. 23:00 | 2.5 óra | Kövér | Tesztelés, debug |
| április 17. 07:00 | 2 óra | Földvári | Autoteszt, tesztek |
| április 17. 17:00 | 0.5 óra | Dobai | Node, Switch, SpecialPlace, Station, LoaderStation átnézés, debug |
| április 18. 12:00 | 0.5 óra | Kövér | dokumentum szerkesztése |