Cum de a scrie java dvs. de Tetris timp de o jumătate de oră

Cum de a scrie java dvs. de Tetris timp de o jumătate de oră

Noi, ca de obicei, veți avea nevoie de:

  • Timp liber 30 de minute;
  • Tuned mediu de lucru, adică, JDK și IDE (de exemplu, Eclipse);
  • Biblioteca LWJGL (versiunea 2.x.x) pentru grafică (opțional). Vă rugăm să rețineți că pentru versiunile LWJGL de mai sus 3 nevoie pentru a scrie cod care este diferită de cea dată în articol;
  • Sprite, și anume dale de imagine din toate stările posibile (goale, și cu puterile de două până la 2048). Te poti desena, sau descărcați pentru a utiliza atunci când scrieți articol.

În cazul în care pentru a începe?

Tu ar trebui să înceapă cu clasa manager general că proiectul nostru este mai mare decât restul nivelului de abstractizare. În general, cel mai bun sfat - la începutul scrie întotdeauna un cod ca în cazul în care (getKeyPressed ()) doSomething (). astfel încât să puteți identifica rapid domeniul de activitate.

Toate datele de la intrare ne-am salvat la domeniile de acțiune adecvate, bazate pe ele logica metoda () va efectua.

Acum este lent, devine clar că avem nevoie. În primul rând, avem nevoie de o tastatură și module grafice. În al doilea rând, trebuie să ținem cumva direcția pe care jucătorul a ales să se schimbe. A doua problemă este ușor de rezolvat - a crea enum cu trei stări: Asteptand, stânga, dreapta. De ce am nevoie de AWAITING. Pentru a stoca informații despre modul în care nu este necesară schimbarea (utilizarea nulă pentru programul ar trebui să fie evitate cu orice preț). Să trecem la interfețele.

Interfețe pentru tastatură și modulele grafice

Din moment ce mulți oameni nu le place faptul că scriu aceste module LWJGL, am decis să ia timp în articol numai interfețele acestor clase. Oricine le poate scrie folosind un GUI-bibliotecă, pe care-i place (sau chiar a face versiunea de consolă). Sunt să le realizeze în LWJGL de modă veche, codul poate fi văzut aici, în dosarele de grafica / lwjglmodule și tastatură / lwjglmodule.

Interfețe, după adăugarea lor toate metodele menționate mai sus sunt după cum urmează:

Dacă nu vă decideți să utilizați LWJGL și a scris clasele lor care implementează GraphicsModule și KeyboardHandleModule. Aici trebuie să specificați designeri lor împreună, respectiv noi LwjglGraphicsModule () și noi LwjglKeyboardHandleModule ().

Și acum am ajuns la clasa, care este responsabil pentru stocarea informațiilor de pe terenul de joc și actualizarea acestuia.

clasa gamefield

Această clasă ar trebui să fie, în primul rând, pentru a stoca informații pe teren și forme care se încadrează, și în al doilea rând, să conțină metode pentru actualizarea acestora, și să obțină informații despre ei - cu excepția celor pe care le-am folosit deja, aveți nevoie pentru a scrie o metodă care returnează culoarea celulei coordonatele la modulul grafic ar putea atrage câmpul.

Să începem de la început.

Păstrați informațiile pe teren ...

countFilledCellsInLine = new int [COUNT_CELLS_Y + OFFSET_TOP];

„Ce este aceasta OFFSET_TOP» -? Te întreb. OFFSET_TOP este numărul de celule non-grafice de pe partea de sus, care sunt în scădere cifre. Dacă o cifră nu poate „cădea“ din acest spațiu, și cel puțin o celulă theField deasupra nivelului COUNT_CELLS_Y este plin, aceasta va însemna că domeniul este plin, iar utilizatorul este pierdut, așa că OFFSET_TOP trebuie să fie strict mai mare decât zero.

În continuare, proiectantul trebuie să umple matrice valorile theField EMPTINESS_COLOR constantă. și countFilledCellsInLine - zerouri (a doua în Java nu este necesar pentru a inițializa o matrice a tuturor int „s egal cu 0). Sau puteți crea mai multe straturi de celule deja pline - pe GitHub, puteți vedea punerea în aplicare a doua opțiune.

Și ceea ce este acolo pentru spawnNewFigure (). De ce este cifra mutat la metoda de inițializare separat?

Ai ghicit, spawnNewFigure () inițializează într-adevăr câmp figura. Și într-o metodă separată este făcută, pentru că trebuie să facem pentru a inițializa de fiecare dată când se va crea o nouă figură.

articole similare