05. Szkeleton tervezése - AdjustmentBeaver/szoftlab GitHub Wiki

Szkeleton tervezése

A szkeleton modell valóságos use-case-ei

Use-case diagram

Szkeleton use-case diagram

Szkeleton use-case diagram

Use-case leírások

Use-case neve start
Rövid leírás Elindítja/folytatja a játékot.
Aktorok user, game
Forgatókönyv Ha a felhasználó szüneteltette a játékot, ezzel tudja folytatni a szimulációt. Ha új játékot indít, vagy betölt egy mentést, akkor a játék indítja el/folytatja a szimulációt betöltés után.
Use-case neve stop
Rövid leírás Megállítja a játékot.
Aktorok user, game
Forgatókönyv A felhasználó szüneteltetheti a játékot. Ha mentés történik, a játék szünetelteti a játékot.
Use-case neve new
Rövid leírás Betöltődik egy új játék.
Aktorok user, game
Forgatókönyv A felhasználó elindít egy új játékot. A pálya és a kezdőállapot betöltődik. (Opcionális: a játékos választhat szintet is.) Ha a játékos megnyer egy pályát, a játék betölti a következő szintet. Ha elveszíti, akkor a játék betölti ugyanazt a szintet.
Use-case neve load
Rövid leírás A játékos betölt egy tetszőleges mentést.
Aktorok user
Forgatókönyv A felhasználó kiválaszt egy mentést, és az alapján töltődik be egy adott pálya és játékállapot.
Use-case neve save
Rövid leírás A játékos elmenti a játék állását.
Aktorok user
Forgatókönyv A játékos elmenthet egy adott játékállapotot. Ekkor a játék a mentés idejére megáll, és elmentődik az aktuális állás.
Use-case neve exit
Rövid leírás A játékos kilép a programból.
Aktorok user
Forgatókönyv A játékos kilép a játékból. A program befejezi a szimulációt, és megfelelő módon leáll.
Use-case neve resume
Rövid leírás Játék folytatása.
Aktorok game
Forgatókönyv Mentést követően a játék automatikusan folytatja a szimulációt, ha a mentés előtti pillanatban a játék futott.
Use-case neve simulate
Rövid leírás Pályaelemek viselkedésének szimulálása
Aktorok game
Forgatókönyv A következő időpillanatra lépteti a játék állását. Az aktuális vonatok elindulnak, a pályán lévők mozognak és az ütközésdetektálás is lezajlik.
Use-case neve init
Rövid leírás A programot inicializálja.
Aktorok game
Forgatókönyv Inicializálja a programot elindításkor. Létrehozza a játékhoz szükséges szimulációs időzítőt, illetve a pályakezelő objektumot.
Use-case neve subscribe
Rövid leírás A megfelelő objektumokat feliratkoztatjuk a szimulációra.
Aktorok -
Forgatókönyv Egy játék kezdésekor a játék feliratkoztatja a szimulációban részt vevő objektumokat (vonatok, vonat-ütemező) a szimulációl időzítőre.
Use-case neve activate
Rövid leírás Speciális Node-okat vezérel felhasználói bemenet alapján.
Aktorok user, node
Forgatókönyv A felhasználói bemenet alapján lehet állítani bizonyos Node-ok tulajdonságait.
Use-case neve activate switch
Rövid leírás Felhasználói bemenetre állítja át egy váltó irányát, ha lehetséges.
Aktorok user, node
Forgatókönyv A felhasználói bemenet alapján az adott váltó irányát állítja. Két állás közül tud választani. Ilyenkor a váltó irányából csak a beállított Node felé tud menni egy vonat. A másik két irányból ettől függetlenül egy irányba lehet továbbhaladni. Csak akkor engedélyezett a váltás, ha a váltón nem tartózkodik vonat.
Use-case neve activate tunnel
Rövid leírás Felépít/lebont egy alagútszájat, ha lehetséges.
Aktorok user, node
Forgatókönyv A felhasználói bemenet alapján lehetőséget nyújt alagútszájak építésére. Maximum két alagútszáj lehet felépítve egy időben, harmadikat már nem tud építeni a felhasználó. Ha volt már egy alagútszáj a pályán, akkor megépül köztük egy alagút, amelyen vonat haladhat át. Egy alagútszájat lebonthat a játékos, ha nincs másik a pályán, vagy nem halad vonat a felépített alagútban. Ellenkező esetben nem tudja lebontani.
Use-case neve collision check
Rövid leírás Megvizsgálja, hogy történt-e a kocsik közt ütközés.
Aktorok -
Forgatókönyv A vonat végigvizsgálja, hogy valamelyik (saját) vonatrésze ütközött-e más vonat részeivel. Ha ütközés történt, felrobbantja magát.
Use-case neve move
Rövid leírás Mozgatja a vonatokat.
Aktorok train
Forgatókönyv A vonat végigmegy az őt alkotó részein, és egyenként megváltoztatja a pozíciójukat a sebesség és a Node-ok által meghatározott irány alapján.
Use-case neve visit node
Rövid leírás A Node megadja a kocsik új irányát.
Aktorok train, node
Forgatókönyv Amikor a vonat egy kocsija csomóponthoz ér, akkor az megadja a kocsi új irányát az alapján, hogy honnan jött és mi a következő szomszédos csomópont. Ha nincs következő ilyen Node (“vakvágány”), a vonatot felrobbantja.
Use-case neve visit station
Rövid leírás A vonat áthalad egy állomáson, az állomás leszállíttatja a megfelelő utasokat, ha lehetséges.
Aktorok train, node
Forgatókönyv Megvalósítja a visit Node feladatait, valamint ha a vonat megfelelő kocsija beérkezik, akkor leszállíttatja annak a kocsinak az utasait - ha ennek feltételei teljesülnek. Akkor szállíthatja le az utasokat, ha a vonat legelső nem üres kocsija az állomással azonos színű.
Use-case neve visit switch
Rövid leírás A vonat áthalad egy váltón, a váltó a megfelelő irányba küldi a vonatot.
Aktorok train, node
Forgatókönyv Megvalósítja a visit Node feladatait, továbbá a váltó beállításaitól függően határozza meg, hogy a váltó melyik irányába haladjon tovább a vonat.
Use-case neve visit tunnel
Rövid leírás A vonat elér egy SpecialPlace Node-ot. Ha van felépítve alagút, átengedi, egyéb esetben felrobbantja a Node a vonatot.
Aktorok train, node
Forgatókönyv Megvalósítja a visit Node feladatait. Ha nincs a pályán két felépített alagútszáj a SpecialPlace-ek helyén, akkor “vakvágányként” viselkedik, a vonat felrobban. Ha van, akkor köztük egy alagút áll fent, amelyen keresztül a vonat szokás szerint közlekedik. Az alagút eltakarja a vonat benne haladó részét.
Use-case neve explode
Rövid leírás Felrobbantja a vonatot.
Aktorok -
Forgatókönyv Ha a feltételek megkövetelik, a vonat felrobbantja magát. A játék véget ér, majd automatikusan újrakezdődik az aktuális pályával.

A szkeleton kezelői felületének terve, dialógusok

A felhasználó által futtatható szekvenciák a következőek:

  1. Start

    • sd_startGame
  2. Stop

    • sd_stopGame
  3. New -> Subscribe

    • sd_newGame, sd_mapBuilding, sd_subsciption
  4. Load -> Subscribe

    • sd_loadGame, sd_subScription
  5. Save -> Resume

    • sd_saveGame, sd_resumeGame
  6. Exit

  7. Simulate -> Move, Collision Check, Explode, Visit Node

    • sd_notifying, sd_trainMoving, sd_collisionChecking, sd_trainExplode, sd_unloading
  8. Move/Visit node

    • sd_trainMoving, sd_unloading, sd_trainExplode
  9. Collision Check

    • sd_collisionChecking, sd_trainExplode
  10. Explode

    • sd_trainExplode
  11. Activate

    • sd_activate

A számok bevitelével választhatja ki a felhasználó melyik részt szeretné futtatni.
Egy rész lefutása után a bevitelre újra lehetőség van.

A felhasználónak az egyes műveletek alkalmával lehetősége lesz a szekvencia zajlásának a befolyásolására.
A következő szekvenciák érintettek:

  • Collision Checking: Megadható történt-e ütközés

  • Train Movinging: Megadható, hogy a vonat milyen típusú csomóponthoz érkezett, majd ezeknek a specializált változatai (pl.: fel van-e építve az alagút)

  • Unloading: Az utasok leszállásának feltételének teljesülése adható meg.

  • Activate: Megadható a csomópont típusa és a művelet (váltás, építés) teljesülésének feltétele.

  • Resume Game: A játék futott-e előző állapotában.

  • Notifying: Van-e elindítandó vonat.

A szekvenciák ellenőrizhetősége érdekében az egyes metódusok kiírják az osztályukat és a nevüket:

TrainPart.setNextNode

A döntési helyzetekben a következő felhasználói reakciók érkezhetnek:

  • Eldöntendő kérdés esetén: Yes, No

  • Csomópont típusára vonatkozó kérdés esetén: Station, Switch, Tunnel

A döntéseket a parancsok első néhány betűjének bevitelével lehet végrehajtani, ekkor a szekvencia annak megfelelően fut le.

Game.resumeGame
[?] Futott a játék a mentés előtt?
[>] **Y**
SimulationTimer.start

Szekvencia diagramok a belső működésre

Init

New Game

Map Building

Load Game

Save Game

Start Game

Stop Game

Resume Game

Train Explode

Train Moving

Unloading

Subscription

Notifying

Activate

Collision Checking

Kommunikációs diagramok

Init

New Game

Map Building

Load Game

Save Game

Start Game

Stop Game

Resume Game

Train Explode

Train Moving

Unloading

Subscription

Notifying

Activate

Collision Checking

Napló

Kezdet Időtartam Résztvevők Leírás
március 7. 16:30 2 óra Dobai, Dömötör, Földvári, Kövér, Telek Megbeszélés: use casek, cli formátum
március 7. 17:00 1 óra Dobai Use-case diagram
március 8. 14:00 2 óra Dobai, Dömötör, Földvári, Kövér, Telek Megbeszélés: hibajavítások, cli formátum
március 8. 18:00 2 óra Dobai Use-case leírások
március 8. 23:00 1 óra Dömötör init, newGame, subscription szekvencia és kommunikációs diagramok
március 9. 15:30 1 óra Kövér, Telek Kommunikációs diagramok
március 9. 20:00 2 óra Dömötör collision, load, start, exlplode, notifying, mapBuilding szekvencia, kommunikációs diagramok
március 12. 15:00 1,5 óra Földvári A szkeleton kezelői felületének terve, dialógusok, szerkesztés
március 12. 16:00 1 óra Telek Kommunikációs és use-case diagram formázás
március 12. 19:00 1 óra Dobai, Földvári, Telek Megbeszélés
március 12. 19:00 0,5 óra Földvári Bugfix
március 12. 19:00 0,5 óra Telek Use-case és kommunikációs diagram javítás
március 12. 20:00 0,5 óra Telek Dokumentum összeszerkesztése