Általános tudnivalók

Ebben az ismertetésben az osztályok, valamint a minimálisan szükséges metódusok leírásai fognak szerepelni. A feladatmegoldás során fontos betartani az elnevezésekre és típusokra vonatkozó megszorításokat, illetve a szövegek formázási szabályait.

Segédfüggvények létrehozhatóak, a feladatban nem megkötött adattagok és elnevezéseik is a feladat megoldójára vannak bízva. Törekedjünk arra, hogy az osztályok belső reprezentációját a lehető legjobban védjük, tehát csak akkor engedjünk, és csak olyan hozzáférést, amelyre a feladat felszólít, vagy amit azt osztályt használó kódrészlet megkíván!

A beadott megoldásodnak működnie kell a mellékelt tesztprogramokkal, de ez nem elégséges feltétele az elfogadásnak. A megírt forráskód legyen kellően általános és újrafelhasználható!

Használható segédanyagok: Java dokumentáció, legfeljebb egy üres lap és toll. Ha bármilyen kérdés, észrevétel felmerül, azt a felügyelőknek kell jelezni, NEM a diáktársaknak!

A feladat összefoglaló leírása

A feladatban az UNO játékot valósítjuk meg.

A programhoz tartozik egységtesztelő amely az egyes osztályok funkcionalitását teszteli, illetve a várható pontszámot mutatja, és egy segédosztály, amit az egységtesztelő használ (ez utóbbit csak akkor lehet lefordítani, ha a Game osztály már meg van valósítva).

A feladat részletes ismertetése

uno.Color (1 pont)

uno.Game

uno.card.Card

uno.card.ColorCard

uno.card.NumberCard (5 pont)

A ColorCard osztálynak legyen egy leszármazottja, amiben a számozott kártyák lesznek.

uno.card.WildCard (3 pont)

Hozzuk létre a joker laptípust, ami bármely lapra ráhelyezhető. Származzon a Card típusból.

uno.Player (7 pont)

Készítsük el a játékost reprezentáló osztályt.

uno.Game (16 pont)

Folytassuk a Game osztály megvalósítását.

uno.card.SkipCard, uno.card.ReverseCard, uno.card.TakeTwoCard (6 pont)

Hozzuk létre a ColorCard három további leszármazottját.

uno.card.TakeFourCard (3 pont)

Hozzuk létre az értékes négy lapot húzató kártyát. Ez legyen a WildCard leszármazottja.

uno.Game.getAllCards(2 pont)

A Game osztályban most már kiegészíthetjük getAllCards függvény törzsét: a láncolt listába rakjunk be további: - 2 db letiltó, körfordító és +2-es lapot minden színből - 4 db joker és +4-es lapot.

Próba

Írjunk egy main függvényt, ami létrehoz egy új Game objektumot és a startGame() és play() függvények segítségével játsszunk a játékkal (de a mellettünk ülőket ne invitáljuk meg, ha még nem fejezték be a feladatot).

Pontozás

A tesztelő által adott pontszám csak becslésnek tekinthető, a gyakorlatvezető levonhat pontokat, vagy adhat részpontokat.

Ponthatárok:

0 - 13 : elégtelen (1) 14 - 21 : elégséges (2) 22 - 28 : közepes (3) 29 - 35 : jó (4) 36 - 43 : jeles (5)

Jó munkát, jó játékot!