A NIM játékprogram elemzése

 

1. A program szerkezete

Pedagógiai célként azt tűztem ki, hogy a program segítségével megismertessem a gyerekeket a nim játékkal, érdekességeivel, egy kis gondolkodásra serkentsem őket, fokozatosan megismerjék a játék fortélyait, finomságait, nyerő stratégiáját. A célkitűzések szempontjából három igen lényeges résszel rendelkezik a program:

 

2. Hogyan játszik a gép?

 

A programban természetesen a kettes számrendszert használtam a helyes lépés kiszámolásához, de amennyire lehetséges próbáltam közelíteni a gép „gondolkodását” az emberi gondolkodáshoz, és a megismert stratégiák alkalmazásához. Első lépésként a nim számot vizsgálom meg, ennek függvényében halad tovább a gép lépésének kiszámolása.

Ezeket a szempontokat szem előtt tartva a következő lépésekből áll a további keresés, vizsgálat:

  1. Megkeresem a nim számban első helyen szereplő 1-eshez tartozó kettő hatványát.
  2. Megkeresem a legnagyobb elemszámú kupacot, amelyben szerepel ez a hatvány.
  3. Páros, vagy páratlan darab kupacban van még ugyanennyi elem?
  4. A nim számban előforduló 1-esekhez tartozó kettő hatványait nézem meg a kiválasztott kupacban. Ha az 1-eshez tartozó helyen a kupacban is 1-es található, akkor az elvenni kívánt elemekhez hozzá adom a megfelelő hatványt, ha 0 szerepel, akkor kivonom a megfelelő hatványt. Így mire végignézem a nim szám összes helyén szereplő egyest, megkapom, hogy az adott kupacból mennyit kell elvenni.

Nézzünk meg egy konkrét példát az előbb leírtakra. Az állás legyen: 1,2,3,3. Ebben az esetben két jó lépés is lehetséges lenne. Három kupac marad 1,2,3 elemmel, vagy négy kupac marad két szimmetriával: 1,1,3,3. Menjünk végig az egyes lépéseken, ahogyan a gép gondolkodik:

  1. A nim számban elsőként a kettesek helyén szerepel 1-es, tehá a keresett hatvány a kettő.
  2. A legnagyobb elemszámú kupac, amelyikben szerepel kettes, az a harmadik kupac, ahol az elemszám három.
  3. Ez az elemszám páros számú kupacban fordul elő, ezért nem bántom, hanem meghagyom a szimmetriát. A legnagyobb elemszámú kupac, amelyben a ketteseknél 1-es szerepel, és páratlan darab kupacban fordul elő, a második, ahol az elemszám kettő. Ebből már elvehetek.
  4. Azokat a helyi értékeket vizsgáljuk, ahol a nim számban 1-es szerepel. Az induló szám (amennyit elveszek a kupacból) 0. A kiválasztott kupacban a kettesekből van egy, tehát a számunk 0+2=2 lesz. A nim számban az egyesek helyén is 1-es áll, ezért ezt a helyi értéket is megnézzük a kiválasztott kupacban. A kupacban itt 0 áll, tehát az új szám 2-1=1 lesz. Nincs több helyi érték, ezért ez marad a végleges szám, amennyit elveszünk a kupacból.

Ezzel a gondolatmenettel értem el azt, hogy a szimmetriák minden lehetséges esetben megmaradjanak, a gyerekek minél többször találkozzanak vele, és minél hamarabb rájöjjenek a fontosságára.

 

3. Játékszintek

 

A programban két játéktípus található: tanulójáték, szabadjáték. A tanulójáték célja az, hogy apró lépésenként mutassa meg a játékosnak az egyre nehezedő szinteket, tanítsa meg jól játszani a gyerekeket oly módon, hogy rávezeti őket a helyes lépésekre. A szabadjátékban a gyerekek kipróbálhatják magukat akár a gép ellen, akár egymás ellen. Sőt megnézhetik azt is, hogy a gép hogyan játszik saját magával. Egyéni állásokat is ki lehet próbálni.

 

A szintek növelésével nem a gép játszik egyre jobban, mint sok más programban. Mivel a nim játék rengeteg állásból indulhat, ezért a szintek nehezítése az állások bonyolítását jelenti. A gép mindig jól játszik, de ha a játékos megtalálja a nyeréshez vezető jó lépéseket, akkor le tudja győzni a gépet.

 

Tanulójáték szintjei

 

A tanulójáték szintjeit a lev.dat fájl tartalmazza. Az aktuális szinttől függően olvassa be a program a megfelelő állásokat. Egy-egy szinten 20 ismeretlen induló állás van. A különböző állások egymás után következnek, egyszer a gép kezd, egyszer a játékos. Az első játékot mindig a gép kezdi és nyeri meg, ezzel mintegy megmutatva az adott állásból lehetséges nyerő lépéseket. A második játékban a játékos hasonló induló állást kap, így akár rögtön „válaszolhat a gépnek” egy nyerő játékkal. A további játékokban kb. egyforma arányban kap a játékos nyerő, ill. vesztő helyzeteket, kivéve azokon a szinteken, ahol az induló állások mindig nyerők.

A játékos kérhet segítséget a géptől. A szintugrás feltétele 6, segítség nélkül megnyert játék. Minden ily módon befejezett játék után az üzenetablakban felvillan egy újabb lámpa.

A 3. lámpa felvillanása után:

Ha egy játékosnak sikerül az utolsó szintet is végigjátszania, akkor a gép gratulál, és a következő, új játékot már a szabadjáték haladó szintjének megfelelő beállítással adja be.

 

1. szint

Kupacok száma: 2 – egyforma v. különböző kupacok.

Cél: két, azonos elemszámú kupac létrehozása. A gyerek vegye észre a szimmetria fontosságát, különböző elemszámból hozzon létre szimmetriát!

 

2. szint

Kupacok száma: 3 – legalább két kupac egyforma elemszámú (csak nyerő induló állások)

Cél: a három kupacból két azonos elemszámú kupac létrehozása Vegye észre, hogy az összes állás nyerő helyzet, és egy teljes kupacot el kell venni. Azonos elemszámú kupacok esetén mindegy melyiket, különböző elemszám esetén azt, amelyik elemszáma nem egyezik a másik kettőével.

 

3. szint

Kupacok száma: 4 – mindegyik kupac egyforma elemszámú v. három kupac egyforma elemszámú, a negyedik kupac különböző elemszámú.

Cél: négy azonos elemszámú kupac, vagy két szimmetria létrehozása. Vegye észre, hogy mind nyerő helyzet, és egy lépésben két szimmetriát is létre lehet hozni.

 

4. szint

Kupacok száma: 4 – két kupac egyforma elemszámú, a másik kettő az előzőekhez képest és egymáshoz képest is különbözőek.

Cél: két szimmetria létrehozása. Vegyék észre, hogy mind nyerő helyzet, és nagyon hasonlóak az állások az előző szint állásaihoz, hiszen egy lépésből két szimmetria létrehozható.

 

5. szint

Kupacok száma: 4-5 – az előző két szinthez hasonló állások 4 kupac esetén, minimum két szimmetria megléte 5 kupac esetén.

Cél: két szimmetria létrehozása. Vegyék észre, hogy mind nyerő állás. A 4 kupacos állások semmiben nem különböznek az előző szintektől, az 5 kupacos állásnál a szimmetriákból „kilógó” teljes kupacot el kell venni.

 

6. szint

Kupacok száma: 3 – mindegyik kupac különböző elemszámú. A kupacok közül kettő 1,2, vagy 1,3, vagy 2,3 elemszámú.

Cél: Vegyék észre, hogy mindegyik állás nyerő, és egy lépésből el lehet jutni az 1,2,3 vesztő helyzethez. (A szintek között ez egy kicsivel nagyobb ugrás az előzőekhez képest)

 

7. szint

Kupacok száma: 3 – különböző elemszámú kupacok, de az egyik mindig 1 elemű.

Cél: Vegyék észre, hogy azok a vesztő helyzetek, amelyekben a két nagyobb elemszámú kupac között 1 a különbség, és a nagyobbik elemszám páratlan, a többi nyerő helyzet. Vegyék észre a párosítás lehetőségét.

 

8. szint

Kupacok száma: 3 – különböző elemszámú kupacok, de az egyik mindig 2 elemű.

Cél: Vegyék észre, hogy nem mindig az a vesztő helyzet, ahol a két nagyobb elemszámú kupac esetén 2 a különbség, párosításnál figyeljenek a kettő hatványaira.

 

9. szint

Kupacok száma: 3 – különböző elemszámú kupacok, de az egyik mindig 3 elemű.

Cél: Vegyék észre, hogy nem minden állás nyerő helyzet. Vegyék észre, hogy csak 3,4,7 esetén érdemes a hármast meghagyni, a többi esetben 2-re, vagy 1-re kell csökkenteni. Próbáljanak minél többször figyelni a kettő hatványaira.

 

10. szint

Kupacok száma: 3 – különböző elemszámú kupacok 1-10 elemszámmal.

Cél: Az eddig tapasztaltak hasznosítása, gyakorlása. Vegyék észre az újonnan megjelenő hatványt, amire figyelni kell (8).

 

Szabadjáték szintjei

 

Ebben a játéktípusban négy szint található, amelyből három a tényleges nehézségi szint. A szintek induló állásait nem fájlból olvassa be a program, mint a tanulójáték esetében, hanem a gép generálja a megadott feltételeknek megfelelően (kivéve az egyéni állásokat). Szintugrás ennél a típusnál nincs, a játékos egészen addig játszik egy szinten, amíg más beállítást nem ad meg. A szabadjátékban nincs segítség, hiszen akinek sikerült végigjátszania a tanulójátékot, annak a kezdő, ill. haladó szint nem jelenthet gondot, a profi szintre pedig mindenkinek hagyok egy kis gondolkodnivalót.

Kezdő szint : Ez a szint nagyjából magában foglalja a tanulójáték 2-5 szintjeit. A kupacok száma lehet 3-4, és legalább két kupacban egyforma elemszám található.

Haladó szint: Itt a tanulójáték 6-10 szintjeinek megfelelő állások vannak. A kupacok száma 3. Minden kupac különböző elemszámú, kupaconként 1-10 elemmel.

Profi szint: Ennek a szintnek nincs más megfelelője. A kupacok száma 4-5 lehet különböző elemszámmal, kupaconként 4-10 elemmel.

Egyéni állások: Nincs semmiféle megkötés. Minden egyes új játék bekérésekor a játékos határozza meg, hogy hány kupaccal (2-5), kupaconként mennyi elemmel szeretné indítani a játékot.

 

4. Segítségnyújtás

 

A tanulójátékban, ha a játékos elakad, lehetősége van segítség kérésére. A segítség nem lépéssegítséget jelent, hanem egy-egy jelölést a gyufákon, egy-egy gondolatébresztő megjegyzést. A segítségnyújtásnak több típusa van, amelyek szintektől és állásoktól függenek. A segítség nem konkrét állásokhoz kapcsolódik, mert ez szinte lehetetlen lenne, annyi a variáció, hanem tipikus helyzetekhez. Most nézzük meg a segítségnyújtást a különböző helyzetekhez

Egy kupac maradt

Teljesen egyértelmű helyzet, az egész kupacot el kell venni, és a játék véget ér.

 

Szimmetrikus elrendezésű vesztő helyzet

A segítség itt abból áll, hogy megmutatom a szimmetriá(ka)t. Az is segítség, hogy megmondom, ez az elrendezés vesztő helyzet, így ha legközelebb hasonló állással találkozik a játékos, már tudni fogja, hogy nem nyerhet. Arra is rá kell jöjjön, hogy ezeket a helyzeteket kell a gépre hagynia.

 

Egy lépésből alkotható szimmetria

Itt észre kell vennie a játékosnak, hogy egyetlen lépésből előállítható a gép számára a szimmetrikus vesztő helyzet, ezzel előnybe kerül.

 

Kettő hatványai párosíthatók

Ezeknél az állásoknál már gondolkodni kell, és észre kell venni, hogy mindig kettő valamelyik hatványa van párosítva. Azt is észre kell venni, hogy a jelölésből kimaradt gyufák milyen lépéslehetőséget nyújtanak.

 

Nincs szimmetria, nincs lehetőség párosításra

Ha korábban sikerrel használta a játékos a segítséget, akkor ebben a helyzetben arra kell rájönnie, hogy egy pár sem hozható létre ebben az állásban, így azokat neki kell kialakítania.

 

Több fajta segítségre nincs is szükség, mert ha a játékos folyamatosan halad végig a tanulójátékon, akkor a nehezebb szinteken már magától is észreveszi azoknak a helyzeteknek a megoldását, melyeknél a korábbiakban segítséget kért.