Informatika2-2016/Gyakorlat9

A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „=Feladatok= == Overload == # Írjunk egy függvényt, aminek az első argumentuma '''n''', egy '''int''' típusú változó. A függvény térjen vissza '''True'''-val,…”)
 
(Sakk)
14. sor: 14. sor:
 
Legyen most egy '''Board''' osztályunk! Két listát tároljunk: '''white''' és '''black''', a játékosok bábuival!
 
Legyen most egy '''Board''' osztályunk! Két listát tároljunk: '''white''' és '''black''', a játékosok bábuival!
 
* Legyen a '''Board''' osztálynak egy '''move(player, pos1, pos2)''' metódust, ami a '''pos1''' pozícióban álló bábut a '''pos2''' helyre mozgatja, ha a lépés szabályos!
 
* Legyen a '''Board''' osztálynak egy '''move(player, pos1, pos2)''' metódust, ami a '''pos1''' pozícióban álló bábut a '''pos2''' helyre mozgatja, ha a lépés szabályos!
** A normál szabályok mellett vegyük figyelembe, hogy áll-e ott más bábu! Ha saját bábu áll a mezőn, a lépés szabálytalan, ha ellenfél bábuja, akkor távolítsuk el a pályáról!
+
** A normál szabályok mellett vegyük figyelembe, hogy áll-e ott más bábu! Ha az a bábu sajátunk, a lépés szabálytalan, ha az ellenfél bábuja, akkor távolítsuk el a pályáról, hiszen leütöttük!
** Ha maradt időnk, kezdjük el írni a '''Knight, Rook, Bishop''' és '''Queen''' osztályokat.
+
** Írjuk meg a '''Knight, Rook, Bishop''' és '''Queen''' osztályokat.
 +
*** Kezdjük a '''Rook'''-kal, ez a legegyszerűbb. Ügyeljünk rá, hogy a ne lépjünk át másik bábun, hiszen ez szabálytalan.
 +
*** Másodikként a '''Knight''' osztályt írjuk meg. A ló ugorhat, tehát a szabályok írásánál ezt nem kell figyelembe venni.
 +
*** A '''Bishop''' után a '''Queen''' lépését könnyű összerakni.
 
** Oldjuk meg, hogy a '''Pawn''' ne állhasson az ellenfél alapvonalán!
 
** Oldjuk meg, hogy a '''Pawn''' ne állhasson az ellenfél alapvonalán!

A lap 2016. április 13., 13:41-kori változata

Feladatok

Overload

  1. Írjunk egy függvényt, aminek az első argumentuma n, egy int típusú változó. A függvény térjen vissza True-val, ha annyi extra paraméterrel hívták meg, mint az első bemeneti paraméter értéke, egyébként térjen vissza False-szal.
  2. Definiáljunk egy szumma függvényt, ami tetszőlegesen sok bemeneti paraméterének összegével tér vissza!
    1. Kezeljük le a kivételt, ha a paraméterek típusa nem azonos!
  3. Definiáljunk egy print_words függvényt, úgy, hogy a megadott (akármennyi) szavakat annyiszor írja ki, amennyit megadunk bemenetnként (szavanként)!
    1. Kezejük le kivételként, ha a bemeneten nem egész számot adtak meg a szó gyakoriságára!

Sakk

Ha még maradt idő. Definiáljuk a Piece osztályt. Ez reprezentál egy sakkbábut, tároljuk a pozícióját a táblán két koodinátával, a színét (black/white), illetve a __repr__ írja ki, hogy hol áll (A2, G3 etc.)!

  • Definiáljuk a bábu leszármazottjaként a King és a Pawn osztályokat!
  • Minden leszármazottnak legyen egy move(pos) metódusa, ahol a pos egy sztring (A3, G2 etc.)! Mozgassuk el a bábut, ha szabályos a lépés!
  • Definiáljuk a PieceMoveError osztályt. Ha szabálytalan a lépés, dobjunk egy ilyen exceptiont és kezeljük le!

Legyen most egy Board osztályunk! Két listát tároljunk: white és black, a játékosok bábuival!

  • Legyen a Board osztálynak egy move(player, pos1, pos2) metódust, ami a pos1 pozícióban álló bábut a pos2 helyre mozgatja, ha a lépés szabályos!
    • A normál szabályok mellett vegyük figyelembe, hogy áll-e ott más bábu! Ha az a bábu sajátunk, a lépés szabálytalan, ha az ellenfél bábuja, akkor távolítsuk el a pályáról, hiszen leütöttük!
    • Írjuk meg a Knight, Rook, Bishop és Queen osztályokat.
      • Kezdjük a Rook-kal, ez a legegyszerűbb. Ügyeljünk rá, hogy a ne lépjünk át másik bábun, hiszen ez szabálytalan.
      • Másodikként a Knight osztályt írjuk meg. A ló ugorhat, tehát a szabályok írásánál ezt nem kell figyelembe venni.
      • A Bishop után a Queen lépését könnyű összerakni.
    • Oldjuk meg, hogy a Pawn ne állhasson az ellenfél alapvonalán!
Személyes eszközök