Az alábbi feladatok közül a megadottat készítse el objektum-orientált módszerrel. Fontos, hogy objektum-orientált módon gondolkozzon és úgy is valósítsa meg! Például a játékos egy objektum, amelynek vannak tulajdonságai, illetve képes valamilyen műveletekre. Egy dobókocka vagy egy játéktábla is lehet objektum és így tovább. De például lehet egy általános játékos osztály is, amiből származtathatunk egy emberi és egy számítógépes játékos. A következőket kell figyelembe venni a feladat elkészítésénél: · Semmilyen grafikát (OpenGL, DirectX, stb) NE használjon. Minden grafikát csak szövegesen jelenítsen meg. · Működőképes programot kell készíteni! A programot le lehessen fordítani hiba nélkül és azt csinálja ami a feladatban meg van adva. · A programban minden „adatszerkezet” objektum legyen. · Minnél több objektum-orientált megoldást, módszert használjon, de nem kell „túlzásba vinni”. · A programot dokumentálni!!! Be kell mutatni, hogyan, milyen objektumorientált módszert alkalmazott.
1. Számcsata (nim): A játék kezdetekor apró tárgyakat rakunk egy halomba. Felváltva mindegyik játékos (az egyik a felhasználó, a másik a számítógép) elvesz egy, de legfeljebb N darab tárgyar a halomból. N értékében a játék megkezdése előtt állapodnak meg a játékosok. A játékban az veszít, aki az utolsó tárgyat veszi el. Implementálja ezt a játékot. A számítógép stratégiája lehet véletlenszerű, vagy ha ismeri a nyerő stratégiát akkor azt programozza le. 2. Amőba A játékszabályok a következők: Az egyik játékos X a másik játékos pedig O jelet ír a táblára. A tábla négyzet alakú, s 3x3-as elrendezésben mezőkre van osztva. A játék lényege, mindegyik játékos úgy igyekszik elhelyezni a jeleit a táblán, hogy három egy sorba kerüljön belőlük. A játékosok (az egyik a felhasználó, a másik a számítógép) felváltva lépnek. Az nyer aki a saját jeléből hármat tud egymás mellé tenni vízszintesen, függőlegesen vagy átlósan. A program mindig mutatja az aktuális táblát. Implementálja ezt a játékot. A számítógép stratégiája lehet véletlenszerű, vagy ha ismeri a nyerő stratégiát akkor azt programozza le. 3. Elásott kincs: Ezt a játékot egy 10x10-es négyzethálón játsszák. A program véletlenszerűen kiválaszt 4 szomszédos négyzetet mely az "elásott kincset" jelöli. A játékos feladata, hogy gödrök ásásával megtalálja a kincset. Egy alkalommal csak 10 próbát lehet tenni. A lyukak helyét a program felszólítására az x és y koordináták megadásával lehet megadni. A program mindig mutatja az aktuális táblát. Implementálja ezt a játékot. 4. Kitalálos játék: A játékosnak öt egymás utáni kockadobás számait kell kitalálnia. A program kockadobásokat szimulálja. Ha a megadott öt szám közül egyetlen egy sem felel meg a dobott számoknak, a játékos 5 dollárt fizet. Ha egy számot eltalál az öt közül, egy dollárt nyer, két találattal 3 dollárt, három találattal 10, négy találattal 100 és végül 5 találattal 1000 dollárt. A játékos 100 dollárral kezd. A programnak tárolnia kell a nyereséget és a veszteséget, s minden alkalommal ki kell írnia a játék állását. Implementálja ezt a játékot. 5. Morra játék: Ebben a játékban két játékos egyszerre mutatja fel egy vagy két vagy három ujját, s ezzel egy időben hangosan kiáltja, hogy véleménye szerint a másik játékos hány ujját fogja felmutatni. Nincs nyertes, ha a két játékos közül egyik sem talált. Ha az egyik talált, akkor annyi egységet (dollárt) nyer mint a két játékos által felmutatott ujjak számának összege. Implementálja ezt a játékot. A számítógép stratégiája lehet véletlenszerű, vagy ha ismeri a nyerő stratégiát akkor azt programozza le. (Neumann János dolgozta ki a stratégiát.)
6. Pókerkocka A játékhoz 5 kockát használnak. Minden játékos háromszor dob. A cél a legjobb pókerfigura elérése. Első dobáskor a játékos mind az öt kockával dob. Ezután a kockák közül tetszőleges számút félretehet egy esetleges pókerfigurához, s a maradék kockákkal újra dob. A második dobásból ismét félretehet tetszőleges számú kockát, majd harmadszor is újra dob. A játékos bármikor megállhat, nem szükséges mindhárom dobást végrehajtania. A félretett kockákat nem lehet újra használni. A legnagyobb értékű pókerfigura nyer. Ha két játékos azonos értéket ér el, újabb játékot kell játszaniuk. Írjunk egy olyan programot, mely pókerkockát játszik a felhasználóval. A pókerfigurák értékeknek megfelelően felülről lefelé: Öt egyforma (például: 4-4-4-4-4) Póker (például: 1-1-1-1-4) Full (például: 1-1-1-2-2) Magas sor (például: 6-5-4-3-2) Alacsony sor (például: 5-4-3-2-1) Drill (például: 1-1-1-2-3) Két pár (például: 1-1-2-2-3) Egy pár (például: 1-1-2-3-4) Semmi (például: 1-2-3-4-6) 7. Mastermind A játékot ketten játsszák, akik közül az egyik passzív szerepet játszik. Az ő feladata egy kód elkészítése a rendelkezésre bocsátott hatféle színű dugaszok kombinációjából és a másik játékos által nem látható négy lyukba való elhelyezése. (Lehet azonos színű dugaszokat többször is szerepeltetni.) A másik, aktív játékos feldata a kód kitalálása. Ez a játékos olyan módon találgat, hogy először az első négy lyukat tartalmazó sorban – majd egymás után maximum 10 sorban – különböző színű dugaszkombinációkat helyez el. Minden egyes találgatás után a passzív játékostól "választ kap", hogy a találgatás milyen "közel" volt az elrejtett kódhoz. A válasz céljára szolgál a sor melletti négy lyuk. Ide annyi fekete dugaszt helyez a passzív játékos, ahány színes dugasz a találgatásnál a kóddal megegyező színű volt abban az esetben, ha ezek a helyes pozícióban is voltak. Minden olyan dugaszra, amely megfelelő színű, de nincs helyes pozícióban, fehér dugasszal válaszol. E válaszok pozíciói csak azt jelzik, hogy valamit kitalált az aktív játékos, de azt nem, hogy a válasz melyik dugaszra vonatkozik. A játék célja, hogy maximálisan 10 találgatással kitaláljuk az elrejtett kódot a válaszok értelmezésével. A színek: piros (P), kék (K), zöld (Z), sárga (S), barna (B), fehér (F). Implementálja ezt a játékot mindkét szereplővel. A számítógép stratégiája lehet véletlenszerű a találgatásnál, vagy ha ismeri a nyerő stratégiát akkor azt programozza le. 8. Életjáték (game of life) A játék John Conway-től származik. A játék egy négyzethálós táblán játszható. A játéktábla négyzeteit a továbbiakban celláknak nevezzük. A cellába sejt kerülhet. A játék kezdetén tetszés szerinti cellákba sejteket helyezünk. Egy cellának tehát két lehetséges állapota van, vagy üres vagy sejtet tartalmaz. A kezdeti állapotból azután újabb elrendezések sorozata jön létre, ún. genetikai törvények alapján. Conway olyan módon fogalmazta meg a szabályokat, hogy az egymást követő elrendezések
(nemzedékek) egymásutánja minnél változatosabb legyen. Ráadásul, puszta rátekintéssel nem lehet megmondani hogy mi lesz a sorsa a következő nemzedéknek. A szabályok: · Minden olyan sejt, amelynek két vagy három szomszédja van, életben marad és a következő generáció változatlan tagja lesz. · Egy sejt elpusztul, ha a következő két állapot valamelyike jön létre: o négy vagy több szomszédja van (halál oka túlnépesedés) o egy vagy nulla szomszédja van (halál oka elszigetelődés) · Minden olyan üres cellában, amelynek pontosan 3 (nem több, nem kevesebb) sejt szomszédja van, új sejt születik. Fontos, hogy a születések és halálok egyszerre következnek be, nem egymás után. A gyakorlatban: · Először megkeressük azokat a sejteket, amelyek a szabályok szerint elpusztulnak, de nem távolítjuk el őket, csupán megjelöljük őket. · Ezután megkeressük azokat az üres cellákat, ahol a születés feltételei adottak és sejteket helyezünk beléjük. · Végül a megjelölt, elhalt sejteket eltávolítjuk. Implementálja ezt a játékot. 9. Awari Egymással szemben elhelyezkedő játékosoknak 6-6 tálkája van és 1-1 gyüjtő tálkája. A 6-6 tálka mindegyikében 3 "babszem" foglal helyet. Például: | 3 | 3 | 3 | 3 | 3 | 3 | 0|-----------------------|0 | 3 | 3 | 3 | 3 | 3 | 3 | A játékos kiválaszt egy tetszőleges tálkát a hatból, kézbe veszi és elkezd "vetni". Ez annyit jelent, hogy az óramutató járásával ellentétés irányban minden szomszédos tálkába belepottyant egy babot melyet a kiválasztott tálkából vettünk ki. Ha a saját tálkáinak végére ért, akkor egyet a saját gyűjtő tálkába is tesz, majd az ellenfél tálkáinál folytatja. Az ellenfél gyűjtő tálkájába soha nem kell tenni. Ha az utolsó babot a saját gyűjtő tálkánkba dobtuk, akkor még egyszer léphetünk. Minden egyéb esetben az ellenfél következik. Ha az utolsó babot egy üres tálkába tesszük – feltéve hogy az ezzel szemben lévő tálka nem üres – mindkét tálka kiüríthető és a saját gyűjtő tálkába tehető. A játék addig folyik, amíg van bab a 6-6 tálkában.A játék célja hogy több bab legyen a saját gyűjtő tálkánkban mint az ellenfélében. Implementálja ezt a játékot. A számítógép stratégiája lehet véletlenszerű, vagy ha ismeri a nyerő stratégiát akkor azt programozza le. 10. Torpedó A játékot egy 10x10 –es táblán két játékos játssza. A játék elején mindkét játékos elhelyezhet hajókat a játék mezőn. 4 db egy négyzetből álló hajót, 3 db két négyzetből álló hajót, 2 db 3 négyzetből álló hajót és 1 db 4 négyzetből álló hajót. Miután a hajókat elhelyeztük (a gép véletlenszerűen, a játékos koordináták megadásával) a játékosok elkezdenek bombázni négyzeteket felváltva. A játék addig tart ameddig valamelyik játékos minden hajója el nem süllyed. Implementálja ezt a játékot. A számítógép stratégiája lehet véletlenszerű, vagy ha ismeri a nyerő stratégiát akkor azt programozza le.
11. Akasztófa játék A játék során a felhasználónak egy szót kell kitalálnia. A számítógép megadja hogy hány betűből áll a szó. A játékos betűket találgathat. Ha a betű szerepel a szóban akkor a program beírja a helyére. Ha a betű nem szerepel a szóban, akkor azt a program feljegyzi és elkezdi rajzolni az akasztott embert. A program kétféleképpen érhet véget: · A felhasználó kitalálja a szót · A gép a teljes akasztott embert megrajzolja, vagyis nem sikerült kitalálni a a szót adott számú lépésben. A választható szavakat egy file-ból olvassa be. Implementálja ezt a játékot.