Hogyan írjuk meg java Tetris egy fél órát

Hogyan írjuk meg java Tetris egy fél órát

Mi, mint mindig, szükséged lesz:

  • Szabad idő 30 perc;
  • Hangolt munkakörnyezet, azaz JDK és IDE (például, Eclipse);
  • Lwjgl könyvtár (version 2.x.x) grafikus (opcionális). Felhívjuk figyelmét, hogy lwjgl változat fenti 3 kell írni a kódot, amely eltér a megadott cikk;
  • Sprite, azaz kép csempe összes lehetséges állapot (üres, és a hatásköre két 2048). Tudod felhívni magad, vagy töltse le a használni írásakor a cikket.

Hol kezdjük?

Meg kell kezdeni az általános igazgató osztály, hogy a projekt magasabb, mint a többi absztrakciós szinten. Általában a legjobb tanács - az elején mindig kódot írni, mint ha (getKeyPressed ()) doSomething (). így gyorsan azonosítani a munka körét.

Minden adatot a beviteli mi csak menti a megfelelő cselekvési területek a rájuk épülő végre logika () metódust.

Most lassan világossá válik, hogy szükségünk van. Először is, szükségünk van egy billentyűzet és grafikus modulokat. Másodszor, meg kell valahogy tartani az irányt, hogy a játékos úgy döntött, hogy váltani. A második probléma könnyen megoldható - hozzon létre enum három kimondja: AWAITING, bal, jobb. Miért kell AWAITING. Információkat tárolni, hogy a váltás nem szükséges (használat null a program el kell kerülni minden áron). Térjünk át a felületeket.

Interfészek billentyűzet és grafikus modulok

Mivel sokan nem tetszik az a tény, hogy én írom ezeket a modulokat lwjgl, úgy döntöttem, hogy ideje a cikk csak az interfészek ezen osztályok. Bárki írhat őket használó egy GUI-könyvtár, ami tetszik neki (vagy akár a konzol verzió). Én régimódi felismerni őket lwjgl, a kód látható itt a mappák grafikus / lwjglmodule és a billentyűzet / lwjglmodule.

Interfészek, hozzáadása után, hogy őket minden fent említett módszerek a következők:

Ha úgy dönt, hogy nem használja lwjgl és írta a megvalósító osztályoknak GraphicsModule és KeyboardHandleModule. Itt meg kell adni a tervezők együtt, illetve új LwjglGraphicsModule () és az új LwjglKeyboardHandleModule ().

És most jön az osztály, amelynek feladata, amely információkat tárol a játéktéren és a frissítést.

osztály gamefield

Ez az osztály legyen, először is, hogy adatokat tároljon a területen, és a lehulló alakzatokat, másrészt tartalmazza módszerek naprakésszé tétele, valamint információt szerezni róluk - kivéve azokat, amelyek már használják, meg kell írni egy módszert, amely visszaadja a cella színe koordinálja a grafikus modul vonhatna el a pályát.

Kezdjük az elején.

Hogy az információk a pályán ...

countFilledCellsInLine = új int [COUNT_CELLS_Y + OFFSET_TOP];

„Mi ez a OFFSET_TOP?» - kérdezi. OFFSET_TOP az a szám a nem-kijelző sejtek a tetején, amelyek alá a számok. Ha ez a szám nem „esik ki” ezt a helyet, és legalább egy cella the Field felett COUNT_CELLS_Y szint tele van, az azt jelenti, hogy a tér teljes, és a felhasználó elveszett, így OFFSET_TOP kell szigorúan nagyobb, mint nulla.

Ezután a tervező kell kitölteni a tömb the Field értékek EMPTINESS_COLOR állandó. és countFilledCellsInLine - nullák (második Java nem szükséges inicializálni egy tömb összes int „s egyenlő 0). Vagy létrehozhat több sejtréteg már kitöltött - GitHubról, láthatjuk a végrehajtás a második lehetőséget.

És mi van a spawnNewFigure (). Miért van ez a szám költözött külön inicializálási eljárás?

Te találtad ki, spawnNewFigure () beállítja igazán kitalálni területen. És egy külön módszerrel készül, mert meg kell tennünk, hogy inicializálja minden alkalommal, amikor egy új szám jön létre.

Kapcsolódó cikkek