WebProg-2014/Gyakorlat10

A MathWikiből
A lap korábbi változatát látod, amilyen Kkovacs (vitalap | szerkesztései) 2015. április 29., 11:49-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

BattleSudoku

KeyboardController

Írjunk egy KeyboardController nevû osztályt, mely örököl a KeyAdapter-bõl és a segítségével a játék érzékeli, ha egy számot nyomtunk le. (KeyEvent.VK_1 az 1-es gomb és KeyEvent.VK_9 a kilences, a többinek az értéke ezek között van)

  • Legyen egy Game adattagja és konstruktora, hasonlóan a MouseController-hez.
  • Írjuk meg a keyPressed metódusát, mely ha szám lenyomását érzékeli akkor hívja meg a tárolt Game adattag keyPress metódusát, paraméterként adja át neki a lenyomott számot. (Kiszámolható a szám a következõ módon, ha keycode a lenyomott gomb kódjának változóneve: keycode - KeyEvent.VK_0)
  • Hibát kapunk hisz a keyPress metódusa a Game-nek még nem létezik, hozzuk ezt létre (létrehozhatjuk gyorsan ha a hiba felé visszük az egeret és a create...-ot választjuk)
  • A keyPress metódus hívja meg a gameBoard-nak a writeToSelectedIfPossible metódusát a kapott számmal, majd hívja meg magán a repaint metódust (mint a mouseClick-nél).
  • Hozzuk létre a writeToSelectedIfPossible metódust a GameBoard osztályban.
  • Ez ellenõrizze, hogy ki van-e választva valami, ha nincs akkor ne csináljunk semmit, ha van valami, akkor nézzük meg, hogy üres-e a mezõ, ehhez írjunk a Field osztályba egy isEmpty metódust.
  • Az isEmpty adjon vissza true-t ha a number adattagja 0, különben false-t
  • Fejezzük be most a writeToSelectedIfPossible metódust úgy, hogy ha üres a mezõ (azaz 0 van rajta), akkor hívja meg a setNumber metódusát a selectedField-nek, paraméterként adjuk meg a kapott számot.
  • Írjuk meg a setNumber metódust, ami a Field number adattagját átállítja a kapott számra.
  • Mindezek csak akkor fognak bármit is csinálni, ha a KeyboardController-t hozzáadjuk a Frame-hez. Szóval menjünk a Game initUI metódusához és az addMouseListener után írjátok az alábbit:
addKeyListener(new KeyboardController(this));

Ezzel hozzáadja az új osztályunkat, mint KeyAdapter-t.

Ezek után a kiválasztott mezõkben a 0-kat át tudjuk írni más számra.

Személyes eszközök