A beadandókat a küldjétek el e-mailben is, egyetlen ZIP fájlként mellékelve. A levél fejléce a következőképp nézzen ki:
csop<csoportszám>_<EHA kód>_bead1
Példa:
csop4_LERIAAT_bead1
Készítsük el a klasszikus Hunt the Wumpus játék egy egyszerűbb változatát Javaban!

Az eredeti játékot Gregory Yob írta az 1970-es években, és a mai napig megtalálható
a legtöbb Linux disztribúcióban (például a Caesar klaszteren is kipróbálható egy
variáns a wump paranccsal).
Adott egy NxN-es kétdimenziós világ, amely a Wumpus barlangja. A barlangban
a következő dolgok találhatók:
Player)Wumpus)Pit)Treasure)A játékos minden körben léphet egyet egy tetszőleges, a jelenlegi pozíciójával szomszédos mezőre. Minden lépés előtt a következő dolgokat érzékelheti:
Miután a játékos lépett, a Wumpus is léphet egy véletlenszerű irányba. Amennyiben nem tud továbblépni (mert pl. elérte a barlang legszélét), helyben marad, és csak a következő körben lép újra.
Ha a játékos rálép egy mezőre, ahol gödör van, beleesik, és a játéknak vége (a Wumpus tapadókorongos lábbal rendelkezik, ő nem esik bele).
A Wumpus előszeretettel fogyaszt fiatal kalandozókat, akik betévednek a barlangjába, emiatt egy mezőn tartózkodni vele erősen ellenjavallt magatartás. Ebben az esetben szintén vége a játéknak.
Ha a játékos megtalálja a kincset, a játéknak vége, és nyert. A Wumpust nem érdekli a kincs, számára az nem több terepakadálynál.
N = 5, de készítsd fel a programot, hogy ez később akár
tetszőlegesen állítható legyen!1 játékost, 1 Wumpust, 1 kincset és 3
gödröt tartalmaz, véletlenszerű pozíciókban (egy pozícióra lehetőleg egy
kerüljön).Készíts egy egyszerű konzolos felületet, ahol a játékos irányíthatja a játékot.
Legyen egy cheat funkció is, amely megjeleníti a teljes térképet!
Az alábbi példajáték szemlélteti a csalás funkciót is. A . üres területeket,
a @ a játékost, a P a gödröket, a W a Wumpust, a T pedig a kincset
jelöli a kirajzolt térképen. Az irányítás az n (north), s (south), e
(east) és w (west) karakterekkel történik.
$ java wumpus.Game
=== Welcome to the Wumpus Lair ===
You are at the edge of the world.
Perception: -, -, -
Which direction to go? cheat
.P..P
..T..
...P.
....W
...@.
You are at the edge of the world.
Perception: -, -, -
Which direction to go? n
Perception: breezy, smelly, -
Which direction to go? cheat
.P..P
..T..
...P.
...@W
.....
Perception: breezy, smelly, -
Which direction to go? w
Perception: -, -, -
Which direction to go? cheat
.P..P
..T..
...PW
..@..
.....
Perception: -, -, -
Which direction to go? n
Perception: breezy, smelly, gloomy
Which direction to go? n
Congratulations! You have found the treasure!
r = 1).[-1, 1]
intervallumból, majd a saját koordinátáihoz külön-külön hozzáadja. Így
előfordulhat, hogy nem lép tovább az adott körben. Biztos talált valamely
előző kalandorból 1-2 csontot, amelyen elnyammoghat :-)A feladat számos megközelítéssel megoldható, ebből egyhez található egy példa tesztfájl itt: GameTest.java. Amennyiben ez segít, nyugodtan használjátok, de bátran térjetek el tőle, ha indokoltnak találjátok, vagy csak más megközelítést kényelmesnek találtok! A hangsúly most a kísérletezésen van!
GameObject leszármazottai (Pit, Player,
Treasure, Wumpus).GameObject legfontosabb tulajdonsága a pozíció (Position), ahol
található (ehhez megfelelő elérő és beállító függvényekkel is rendelkezik).Position példány tudja az x, y értékeket, megfelelő equals(),
hashCode(), és toString() implementációkkal rendelkezik, valamint néhány
segédfüggvénnyel megkönnyíti a használatot (pl. szomszédság, lekérdezése,
eltolás, véletlenszerű módosítás).Tile tömb.Tile példányon egyszerre több GameObject is előfordulhat (pl. a
játékos, a kincs és maga a Wumpus is), ezeket érdemes egy tetszőleges
adatszerkezetben tárolni (lista, halmaz).Tile néhány segédfüggvénnyel is rendelkezik, pl. van-e rajta
csillogó, szeles vagy bűzlő GameObject.Az irányokat reprezentálhatod egy egyszerű felsorolási típussal. Ez sokban
hasonlít a C++ enum típusaihoz, azonban vannak specialitásai (részletek
itt és itt):
public enum Direction {
NORTH, SOUTH, EAST, WEST;
}
k = 3-5). Ezeket ellőheti egy tetszőleges irányba, és ha a Wumpus az
adott irányban lévő szomszédos területen tarózkodik, a játékos eltalálja és
megnyerte a játékot (a nyílvesszők korlátozottan Wumpus-követőek). Ha nincs
ott a Wumpus, a nyílvessző zajt csap, és a Wumpus mozoghat.