25
<Hallgató neve>, <Neptun kód> 1 Pac-Man játék Szoftvertechnológia házi feladat <Hallgató neve> <Neptun kód>

- iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

  • Upload
    vodang

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Page 1: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 1

Pac-Man játék Szoftvertechnológia házi feladat

<Hallgató neve>

<Neptun kód>

Page 2: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 2

1 A FELADAT LEÍRÁSA

A játékos a Pac-Man-t irányítja egy labirintuson keresztül. A Pac-Man golyócskákat (pac-dot-okat) eszik,

amelyekért egyenként 20 pont jár. Ha minden golyócskát megevett, a Pac-Man a következő szintre jut.

Négy ellenség (Blinky (piros), Pinky (rózsaszín), Inky (kék) és Clyde (narancs)) is járkál a labirintusban,

céljuk, hogy elkapják a Pac-Man-t. A Pac-Man gyorsabb, mint a szörnyek, de ha egy ellenség megérinti a

Pac-Man-t, akkor a Pac-Man meghal és elveszít egy életet. Ha minden életét elveszítette, a játéknak

vége.

Néha, véletlenszerűen, egy rövid időre nagyobb golyócskák (power pellet-ek) jelennek meg a

labirintusban. Ezeknek több fajtája is van, mindegyik valamilyen képességgel ruházza fel a Pac-Man-t. Az

élet golyócska új életet ad, de az életek maximális száma öt lehet. Ha a maximális számot sikerült elérni,

és a Pac-Man megeszik egy élet golyócskát, akkor az mindenféle hatás nélkül eltűnik. A Pac-Man bomba

golyócskákat is gyűjthet, legfeljebb öt darabot. Ha a maximális számot sikerült elérni, a Pac-Man nem

gyűjthet többet, és a golyócska a labirintusban marad. A Pac-Man az összegyűjtött bombákat lerakhatja

a labirintusban. A bombáknak van egy időzítője, amely visszafelé számol. Ha az idő lejárt, a bomba

eltűnik. Ha valaki (a Pac-Man vagy a szörnyek) megérinti a bombát mielőtt az eltűnne, az illető meghal. A

bónusz golyócska 1000 pontot jelent a Pac-Man számára.

A szörnyek nem tudják megenni a golyócskákat, azonban mindegyik a Pac-Man-t üldözi különböző

stratégiák szerint. Blinky mindig követi a Pac-Man-t azon az úton, amelyet a Pac-Man használt. Pinky a

legrövidebb úton üldözi a Pac-Man-t. Inky buta, és csak véletlenszerűen vándorol. Clyde egy kicsit

okosabb: ő is véletlenszerűen vándorol, azonban ha a Pac-Man közel van (öt lépésen belül), akkor a

legrövidebb úton kezdi el üldözni.

2 FUNKCIONÁLIS KÖVETELMÉNYEK

2.1 ELSŐDLEGES KÖVETELMÉNYEK Azonosító Leírás Use-case

R01 A játékos a Pac-Man-t irányítja egy labirintuson keresztül. Move pacman, Place bomb, View maze

R02 A Pac-Man golyócskákat (pac-dot-okat) eszik. Move pacman

R03 A golyócskákért egyenként 20 pont jár. Move pacman

R04 Ha minden golyócskát megevett, a Pac-Man a következő szintre jut. Move pacman

R05 Négy ellenség (Blinky (piros), Pinky (rózsaszín), Inky (kék) és Clyde (narancs)) is járkál a labirintusban.

Control monsters

R06 Az ellenségek célja, hogy elkapják a Pac-Man-t. Control monsters

R07 A Pac-Man gyorsabb, mint a szörnyek. Move pacman, Control monsters

R08 Ha egy ellenség megérinti a Pac-Man-t, akkor a Pac-Man meghal és elveszít egy életet.

Move pacman, Control monsters

R09 Ha a Pac-Man minden életét elveszítette, a játéknak vége. Move pacman

Page 3: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 3

R10 Néha, véletlenszerűen, egy rövid időre nagyobb golyócskák (power pellet-ek) jelennek meg a labirintusban.

Control power pellets

R11 A nagyobb golyócskáknak több fajtája is van. Control power pellets

R12 A nagyobb golyócskák valamilyen képességgel ruházzák fel a Pac-Man-t.

Move pacman

R13 Az élet golyócska új életet ad. Move pacman

R14 Az életek maximális száma öt. Move pacman

R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy élet golyócskát, akkor az mindenféle hatás nélkül eltűnik.

Move pacman

R16 A Pac-Man bomba golyócskákat is gyűjthet. Move pacman

R17 A Pac-Man maximum öt bomba golyócskát gyűjthet. Move pacman

R18 Ha a bomba golyócskák maximális számot sikerült elérni, a Pac-Man nem gyűjthet többet, és a golyócska a labirintusban marad.

Move pacman

R19 A Pac-Man az összegyűjtött bombákat lerakhatja a labirintusban. Place bomb

R20 A bombáknak van egy időzítője, amely visszafelé számol. Control bomb

R21 Ha az idő lejárt, a bomba eltűnik. Control bomb

R22 Ha valaki (a Pac-Man vagy a szörnyek) megérinti a bombát mielőtt az eltűnne, az illető meghal.

Move pacman, Control monsters

R23 A bónusz golyócska 1000 pontot jelent a Pac-Man számára. Move pacman

R24 A szörnyek nem tudják megenni a golyócskákat. Control monsters

R25 A szörnyek a Pac-Man-t üldözik különböző stratégiák szerint. Control monsters

R26 Blinky mindig követi a Pac-Man-t azon az úton, amelyet a Pac-Man használt.

Control monsters

R27 Pinky a legrövidebb úton üldözi a Pac-Man-t. Control monsters

R28 Inky buta, és csak véletlenszerűen vándorol. Control monsters

R29 Clyde egy kicsit okosabb: ő is véletlenszerűen vándorol, azonban ha a Pac-Man közel van (öt lépésen belül), akkor a legrövidebb úton kezdi el üldözni.

Control monsters

2.2 TOVÁBBI KÖVETELMÉNYEK Azonosító Leírás Use-case

R30 Egy labirintus egy mezőkből álló rácsot alkot. View maze, Move pacman, Control monsters

R31 Blinky levághatja az utat, azaz mindig a Pac-Man felé menő lehetséges utak közül a legrövidebbet választja.

Control monsters

Page 4: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 4

3 USE-CASE-EK

3.1 USE-CASE DIAGRAM

3.2 USE-CASE LEÍRÁSOK Cím Move PacMan

Leírás A játékos a Pac-Man-t írányítja egy labirintuson keresztül

Aktorok Player

Főforgatókönyv 1. A játékos a Pac-Man-t balra, jobbra, felfelé vagy lefelé mozgatja

Alternatív forgatókönyv 1.A.1. Ha a Pac-Man megeszik egy golyócskát, pontot kap

Alternatív forgatókönyv 1.A.1.A.1. Ha minden golyócska elfogyott, a Pac-Man a következő szintre lép

Alternatív forgatókönyv 1.B.1. Ha a Pac-Man megeszik egy nagyobb golyócskát, valamilyen képességet kap (pontot, életet vagy bombát)

Alternatív forgatókönyv 1.C.1. A Pac-Man meghal, ha szörnnyel találkozik

Alternatív forgatókönyv 1.C.1.A.1. Ha a Pac-Man minden életét elveszíti, a játéknak vége

Alternatív forgatókönyv 1.D.1. A Pac-Man meghal, ha bombához ér

Alternatív forgatókönyv 1.D.1.A.1. Ha a Pac-Man minden életét elveszíti, a játéknak vége

Cím Place bomb

Leírás A játékos bombát helyez el a labirintusban

Aktorok Player

Főforgatókönyv 1. A játékos a Pac-Man aktuális pozíciójára egy bombát rak le a labirintusban

Player

Move PacMan

View maze

Controller <<internal>>

Control monsters

Control power pellets

Control bombs

<<include>>

<<include>>

<<include>>

Place bomb

Page 5: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 5

Cím View maze

Leírás A játékos megtekinti a labirintust

Aktorok Player

Főforgatókönyv 1. A rendszer kirajzolja a labirintus aktuális állapotát 2. A játékos megtekinti a labirintus aktuális állapotát

Cím Control monsters

Leírás A szörnyek mozognak a labirintusban

Aktorok Controller

Főforgatókönyv 1. A szörnyek balra, jobbra, felfelé vagy lefelé mozognak a saját stratégiájuknak megfelelően

Alternatív forgatókönyv 1.A.1. A Pac-Man meghal, ha szörnnyel ütközik

Alternatív forgatókönyv 1.B.1. A szörny meghal, ha bombának ütközik

Cím Control power pellets

Leírás Nagyobb golyócskák jelenhetnek meg vagy tűnhetnek el a labirintusból

Aktorok Controller

Főforgatókönyv 1. A Controller új nagy golyócskát helyezhet el a labirintusban 2. A Controller csökkenti a nagy golyócskák élettartamát

Alternatív forgatókönyv 2.A.1. Ha egy nagy golyócska élettartama lejár, eltűnik a labirintusból

Cím Control bombs

Leírás A bomba ketyeg, és eltűnhet a labirintusból

Aktorok Controller

Főforgatókönyv 1. A Controller csökkenti a bomba élettartamát

Alternatív forgatókönyv 1.A.1. Ha egy bomba élettartama lejár, eltűnik a labirintusból

Page 6: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 6

4 STRUKTURÁLIS LEÍRÁS

4.1 AZ OSZTÁLYOK LEÍRÁSA

4.1.1 Blinky

Felelősségek

Blinky mindig azon az úton követi a Pacman-t, amin a Pacman korábban elhaladt.

Attribútumok

-

Metódusok

+Step() Lekérdezi a Maze-től a legrövidebb utat, amit a Pacman használt, és ebbe az irányba halad tovább.

4.1.2 Bomb

Felelősségek

Egy bomba megöl egy Monster-tvagy a Pacman-t, ha ütköznek vele. A bomba egy idő után eltűnik.

Attribútumok

-timeCounter: long Az időtartam, mielőtt a bomba eltűnik a labirintusból.

Metódusok

+HitBy(p:Pacman) Megöli a Pacman-t.

+HitBy(m:Monster) Megöli a Monster-t.

+Step() Csökkenti az időzítőt, és ha az eléri a nullát, törli a bombát a mezőről.

4.1.3 BombPellet

Felelősségek

Bombát ad a Pacman-nek, ha begyűjti ezt a golyócskát.

Attribútumok

-

Metódusok

+HitBy(p:Pacman) Bombát ad a Pacman-nek. Ha sikerült, azaz a Pacman-nek ötnél kevesebb bombája volt, a BombPellet eltűnik.

4.1.4 BonusPellet

Felelősségek

Pontokat ad a Pacman-nek, ha begyűjti ezt a golyócskát.

Page 7: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 7

Attribútumok

-

Metódusok

+HitBy(p:Pacman) 1000 pontot ad a Pacman-nek.

4.1.5 Clyde

Felelősségek

Clyde véletlenszerűen sétálgat, de ha a Pacman közel van (öt lépésen belül), elkezdi őt üldözni a

legrövidebb úton.

Attribútumok

-

Metódusok

+Step() Lekérdezi a Maze-től a Pacman-hez vezető legrövidebb utat, és ha annak a hossza legfeljebb öt, akkor ebbe az irányba lép. Ellenkező esetben véletlenszerű irányba lép.

4.1.6 Direction

Felelősségek

Ez az enumeráció egy mező (Field) lehetséges szomszédos irányait reprezentálja: fel (Up), le

(Down), balra (Left) vagy jobbra (Right).

4.1.7 Field

Responsibilities

Tárolja azokat a dolgokat (Things), amelyek előfordulhatnak a labirintusban, illetve ismeri a

szomszédos mezőket. A Field azt is tudja, mennyi ideje járt ott a Pacman.

Attribútumok

-timeSincePacman: long Az időzítő, ami számolja, hogy a Pacman mióta járt itt. Ha a Pacman még sosem járt itt, az értéke -1.

-neighbors[Direction]: Field Tárolja a szomszédos mezőket a lehetséges irányokba.

-things: Thing[0..*] Az éppen a mezőn lévő dolgok.

Metódusok

+Accept(t: Thing) Új dolog érkezik a mezőre, és ütközteti azt a már mezőn lévő dolgokkal.

+Remove(t: Thing) Eltávolítja az adott dolgot a mezőről.

+Step() Növeli az időt, amióta a Pacman itt járt, ha az időzítő értéke legalább 0.

+ResetTimeSincePacman() Beállítja a Pacman itt jártát számoló időzítő értékét 0-ra.

+GetTimeSincePacman():long Visszaadja a Pacman itt jártát számoló időzítő értékét.

+GetNeighbor(d:Direction):Field Visszaadja az adott irányban található szomszédos mezőt.

Page 8: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 8

+SetNeighbor(d:Direction, f:Field) Beállítja az adott irányban szomszédos mezőt.

4.1.8 Game

Felelősségek

A játék szintjeit kezeli.

Attribútumok

-levels: Maze[0..*] A játék szintjei.

-currentLevel: Maze Az aktuális szint.

Metódusok

+StartGame() Elindítja a játékot az első szinttől kezdve.

+NextLevel() A következő szintre lép.

+GetCurrentLevel(): Maze Visszaadja az aktuális szintet.

+EndGame() Befejezi a játékot.

4.1.9 Inky

Felelősségek

Inky véletlenszerűen vándorol.

Attribútumok

-

Metódusok

+Step() Véletlen irányba lép egyet.

4.1.10 LifePellet

Felelősségek

Új életet ad a Pacman-nek, ha az begyűjti ezt a golyócskát.

Attribútumok

-

Metódusok

+HitBy(p:Pacman) Új életet ad a Pacman-nek, majd eltűnik.

4.1.11 Maze

Felelősségek

Egy szintet reprezentál a játékban. Tárolja a mezőket és a még elérhető golyócskákat.

Attribútumok

-fields: Field[0..*] A szint mezői.

-remainingPellets: Pellet[0..*] A szinten még elérhető golyócskák.

Page 9: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 9

-pacman: Pacman A Pacman ezen a szinten.

Metódusok

+AddPellet(p:Pellet) Új golyócskát ad a szinthez.

+RemovePellet(p:Pellet) Töröl egy golyócskát a szintről. Ha már nincs több golyócska, a játékot a következő szintre lépteti.

+GetPacman():Pacman Visszaadja a Pacman-t.

+SetPacman(p:Pacman) Beállítja a Pacman-t.

+GetPacmansPath(from:Field):Path Visszaadja a kapott mezőtől számított legrövidebb Pacman által megtett utat a Pacman-hez.

+GetShortestPathToPacman(from:Field):Path Visszaadja a kapott mezőtől számított legrövidebb utat a Pacman-hez.

+CreatePowerPellet() Új nagy golyócskát hoz létre véletlenszerű fajtával, és elhelyezi azt egy véletlenszerű mezőn.

+Step() Új nagy golyócskákat hoz létre véletlenszerűen.

4.1.12 Monster

Felelősségek

Egy szörny megpróbálja elkapni a Pacman-t. Ha a szörny bombához ér, meghal. Egy szörny nem

tud golyócskákat felvenni.

Attribútumok

-

Metódusok

+CollideWith(t:Thing) Szörnyként ütközik egy dologgal.

+HitBy(p:Pacman) Megöli a Pacman-t.

+Die() Törli a szörnyet a saját mezőjéről.

+Move(d:Direction) A szörnyet az adott irányban szomszédos mezőre lépteti.

4.1.13 Pacman

Felelősségek

A Pacman golyócskákat ehet. Ha bombával vagy szörnnyel ütközik, meghal. Pontokat, életeket és

bombákat gyűjt a nagyobb golyócskák elfogyasztásával. A Pacman-nek nem lehet ötnél több élete

vagy ötnél több bombája.

Attribútumok

-points: long A gyűjtött pontok száma.

-lives: long A gyűjtött életek száma. Legfeljebb 5 lehet.

-bombs: long A gyűjtött bombák száma. Legfeljebb 5 lehet.

Metódusok

Page 10: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 10

+CollideWith(t:Thing) Pacman-ként ütközik egy dologgal.

+HitBy(m:Monster) Pacman-ként ütközik egy szörnnyel.

+Move(d:Direction) A Pacman-t az adott irányban szomszédos mezőre lépteti.

+Die() Befejezi a játékot Game.

+PlaceBomb() Lerak egy bombát az aktuális mezőre.

+AddPoints(p:long) A megadott pontszámot hozzáadja a gyűjtött pontokhoz.

+AddLife():boolean Új életet ad a Pacman-nek, de csak ha a szám nem lépi át az 5-öt. Visszaadja, hogy sikerült-e új életet hozzáadni.

+AddBomb():boolean Új bombát ad a Pacman-nek, de csak ha a szám nem lépi át az 5-öt. Visszaadja, hogy sikerült-e új bombát hozzáadni.

4.1.14 Path

Felelősségek

Két mező között egy utat reprezentál.

Attribútumok

-fields: Fields[0..*] Az út mezői a megfelelő sorrendben.

Metódusok

+GetFields(): Field[] Visszaadja a mezőket a megfelelő sorrendben.

+SetFields(fields:Field[]) Beállítja az út mezőit.

4.1.15 Pellet

Felelősségek

Egy golyócskát reprezentál. A Pacman pontokért golyócskákat eszik.

Attribútumok

-maze: Maze A szint, amelyhez a golyócska tartozik.

Metódusok

+HitBy(p:Pacman) 20 pontot ad a Pacman-nek, és törli a golyócskát a mezőről és a labirintusból.

+GetMaze():Maze Visszaadja a szintet.

+SetMaze(m:Maze) Beállítja a szintet.

4.1.16 Pinky

Felelősségek

Pinky a Pacman-t követi a legrövidebb úton.

Attribútumok

-

Metódusok

Step() Lekérdezi a Maze-től a legrövidebb utat a Pacman-hez, és ebbe az irányba lép egyet.

Page 11: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 11

4.1.17 PowerPellet

Felelősségek

Egy speciális golyócska, amely képességekkel ruházza fel a Pacman-t. Egy idő után eltűnik a

labirintusból, ha a Pacman nem ette meg.

Attribútumok

-timeCounter: long Az időtartam, mielőtt a golyócska eltűnik a labirintusból.

Metódusok

+Step() Csökkenti az időzítőt, és ha az eléri a nullát, törli a golyócskát a mezőről.

4.1.18 Steppable

Felelősségek

Egy interfész, ami minden olyan dolgot reprezentál, amely időben lépni tud.

Attribútumok

-

Metódusok

+Step() Az adott lépésben végrehajtandó művelet.

4.1.19 Thing

Felelősségek

Egy általános mezőn lévő dolgot reprezentál (pl. Pacman, Monster, Pellet).

Attribútumok

-field: Field A mező, amin az adott dolog áll.

Metódusok

+CollideWith(t:Thing) A dolog ütközik egy másik dologgal.

+HitBy(p:Pacman) A művelet, amelyet akkor kell végrehajtani, ha a dolognak Pacman ütközött.

+HitBy(m:Monster) A művelet, amelyet akkor kell végrehajtani, ha a dolognak Monster ütközött.

+GetField():Field Visszaadja a mezőt.

+SetField(f:Field) Beállítja a mezőt.

4.1.20 Timer

Felelősségek

Periodikus időzítőt reprezentál a játékban, a léptethető (Steppable) dolgokat lépteti.

Attribútumok

-steppable:Steppable[0..*] A léptethető dolgok.

Page 12: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 12

Metódusok

+Tick() Minden léptethető dolog léptetése.

+AddSteppable(s:Steppable) Új léptethető dolog hozzáadása.

+RemoveSteppable(s:Steppable) Léptethető dolog törlése.

Page 13: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 13

4.2 OSZTÁLYDIAGRAM

(Megjegyzés: a nevesített asszociációvégekhez implicit getter és setter függvények tartoznak, amelyeket a diagram az olvashatóság kedvéért

nem jelöl.)

Direction <<enumeration>>

+Up +Down +Right +Left

Path Field -timeSincePacman: long

+Accept(t: Thing) +Remove(t: Thing) +Step() +ResetTimeSincePacman() +GetTimeSincePacman(): long +GetNeighbor(d: Direction): Field +SetNeighbor(d: Direction, f: Field)

-neighbors 0..1 -Direction -Direction

-fields

0..*

Steppable <<interface>>

+Step()

Thing

+CollideWith(t: Thing) +HitBy(p: Pacman) +HitBy(m: Monster)

-field -things

1 0..*

Pacman -points: long -lives: long -bombs: long +CollideWith(t: Thing) +HitBy(m: Monster) +Move(d: Direction) +Die() +PlaceBomb() +AddPoints(p: long) +AddLife(): boolean +AddBomb(): boolean

Monster

+CollideWith(t: Thing) +HitBy(p: Pacman) +Die() +Move(d: Direction)

Pellet

+HitBy(p: Pacman)

PowerPellet -timeCounter: long

+Step()

BonusPellet

+HitBy(p: Pacman)

LifePellet

+HitBy(p: Pacman)

BombPellet

+HitBy(p: Pacman)

Bomb -timeCounter: long

+HitBy(p: Pacman) +HitBy(m: Monster) +Step()

Blinky

+Step()

Clyde

+Step()

Pinky

+Step()

Inky

+Step()

Timer <<singleton>>

+Tick() 0..*

Maze

+AddPellet(p: Pellet) +RemovePellet(p: Pellet) +GetPacmansPath(from: Field): Path +GetShortestPathToPacman(from: Field): Path +CreatePowerPellet() +Step()

Game <<singleton>>

+StartGame() +NextLevel() +EndGame()

-fields 0..*

-levels 0..*

-remainingPellets

-maze

0..*

1

-pacman 0..1

-currentLevel 0..1

Page 14: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 14

5 VISELKEDÉS LEÍRÁSA

5.1 SZEKVENCIA DIAGRAMOK

5.1.1 Pacman moves

Pacman moves sd

loop

[for all t:Thing]

p : Pacman f1 : Field f2 : Field t : Thing

Move(d) GetNeighbor(d)

f2

Remove(p)

Accept(p)

CollideWith(t)

HitBy(p)

ResetTimeSincePacman()

Page 15: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 15

5.1.2 Eat pellet

5.1.3 Eat bonus pellet

Eat pellet sd

p : Pacman f:Field pt : Pellet m : Maze

HitBy(p)

AddPoints(20)

Remove(pt)

RemovePellet(pt)

Eat bonus pellet sd

p : Pacman bp : BonusPellet f : Field m : Maze : Timer

HitBy(p)

AddPoints(1000)

Remove(bp)

RemovePellet(bp)

RemoveSteppable(bp)

Page 16: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 16

5.1.4 Eat life pellet

5.1.5 Eat bomb pellet

Eat life pellet sd

f : Field p : Pacman lp : LifePellet m : Maze : Timer

HitBy(p)

AddLife()

Remove(lp)

RemovePellet(lp)

RemoveSteppable(lp)

Eat bomb pellet sd

opt

[bombAdded]

f : Field p : Pacman bp : BombPellet m : Maze : Timer

HitBy(p)

AddBomb(p)

bombAdded=result

Remove(bp)

RemovePellet(bp)

RemoveSteppable(bp)

Page 17: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 17

5.1.6 Place bomb

Megjegyzés: az UML eszköz nem támogatja a szabványos create jelölést, így az metódushívásként van

modellezve.

Place bomb sd

loop

[for all t:Thing]

p : Pacman f : Field

b : Bomb

: Timer t : Thing

PlaceBomb()

Bomb() <<create>>

AddSteppable(b)

Accept(b)

CollideWith(t)

Page 18: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 18

5.1.7 Pacman hits bomb

5.1.8 Time step

Pacman hits bomb sd

opt

[lives==0]

f : Field p : Pacman b : Bomb : Game : Timer

CollideWith(b)

HitBy(p)

Remove(b)

RemoveSteppable(b)

Die()

EndGame()

Time step sd

loop

[for all s:Steppable]

: Timer s : Steppable

Tick()

Step()

Page 19: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 19

5.1.9 Bomb steps

5.1.10 Power pellet steps

Bomb steps sd

opt

[timeCounter==0]

: Timer b : Bomb f : Field

Step()

Remove(b)

RemoveSteppable(b)

Power pellet steps sd

opt

[timeCounter==0]

: Timer p : PowerPellet f : Field

Step()

Remove(p)

RemoveSteppable(p)

Page 20: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 20

5.1.11 Maze steps

5.1.12 Blinky steps

Maze steps sd

opt

[random]

: Timer m : Maze f : Field

pp : PowerPellet

Step()

CreatePowerPellet()

PowerPellet() <<create>>

AddSteppable(pp)

Accept(pp)

Blinky steps sd

b : Blinky m : Maze : Timer f : Field

p : Path Step()

GetPacmansPath(f) Path(fields)

<<create>>

p

GetFields()

Move(d)

fields

Page 21: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 21

5.1.13 Clyde steps

5.1.14 Inky steps

Clyde steps sd

c : Clyde m : Maze : Timer f : Field

p : Path Step()

GetShortestPathToPacman(f) Path(fields) <<create>>

p

GetFields()

fields

Move(d)

Inky steps sd

i : Inky : Timer

Step()

Move(d)

Page 22: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 22

5.1.15 Pinky steps

5.1.16 Monster moves

Pinky steps sd

c : Clyde m : Maze : Timer f : Field

p : Path Step()

GetShortestPathToPacman(f) Path(fields) <<create>>

p

GetFields()

fields

Move(d)

Monster moves sd

loop

[for all t:Thing]

m : Monster f1 : Field f2 : Field t : Thing

Move(d)

GetNeighbor(d)

f2

Remove(m)

Accept(m)

CollideWith(t) HitBy(m)

Page 23: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 23

5.1.17 Monster kills Pacman

5.1.18 Monster hits bomb

Monster kills Pacman sd

opt

[lives==0]

m : Monster p : Pacman : Game

HitBy(p)

Die()

EndGame()

Monster hits bomb sd

m : Monster f : Field b : Bomb : Timer

HitBy(m)

Remove(b)

RemoveSteppable(b)

Die()

Remove(m)

RemoveSteppable(m)

Page 24: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 24

5.1.19 Next level

5.2 ÁLLAPOTGÉP DIAGRAMOK

5.2.1 Bomb state

5.2.2 Power pellet state

Next level sd

opt

[no more pellets]

m : Maze : Game p : Pellet

RemovePellet(p)

NextLevel()

Ticking

Step [ timeCounter>0 ]

Step [ timeCounter==0 ]

Visible

Step [ timeCounter>0 ]

Step [ timeCounter==0 ]

Page 25: - iit.bme.hu · PDF fileR14 Az életek maximális száma öt. Move pacman R15 Ha a maximális számot sikerült elérni, és a Pac-Man megeszik egy

<Hallgató neve>, <Neptun kód> 25

6 NAPLÓ

Kezdet Időtartam Elvégzett munka Hivatkozások

2017.09.15. 16:00 2 óra Követelmények listájának elkészítése, use-case-ek megrajzolása és leírása

2, 3

2017.09.21. 10:00 2 óra Az osztálydiagram megtervezése 4.2

2017.09.22. 14:00 4 óra Szekvencia diagramok rajzolása, javítások az osztálydiagramban

5.1.1-5.1.10, 4.2

2017.09.23. 10:00 4 óra Szekvencia diagramok rajzolása, javítások az osztálydiagramban

5.1.11-5.1.19, 4.2

2017.09.25. 14:00 2 óra Az osztálydiagram dokumentálása, állapotgépek megrajzolása

4.1, 5.2

2017.09.26. 10:00 2 óra A dokumentáció formázása, apróbb javítások

teljes dokumentum

Összes elvégzett munka: 16 óra

Modellező eszköz: WhiteStarUML

Megjegyzés: az UML eszköz nem támogatja a szabványos create jelölést, így azt metódushívásként

modelleztem.

Egyéb eszközök: Word