Tetris a c érvényesíteni szabályok - emlékeztet

Tetris szabályok meglehetősen egyszerű:

  1. A játék akkor kezdődik a káresemény bekövetkezését véletlen elem felső részének közepén a játékteret. Ez az elem lehet szabályozni a játékos;
  2. Ha az aktív elem tekintetében alsó része vagy alja a játéktábla társasházban, több lépésben játék ez fix és pozícióját már nem feltétele, hogy a játékos;
  3. Ha a játék terén kialakított teljesen kitöltött sorok blokkok nem üres, aztán eltűnnek, és a felső sorok lefelé eltolt;
  4. Miután minden elemnek van egy új játék, mint az elején a játék;
  5. Ha az új elem jelenik meg azonnal egy ütközés, ami van, nem a megfelelő állapotban, a játéknak vége;
  6. Win Tetris, sajnos, nem lehet.

És most nézd meg, hogy minden ilyen teszteket lehet írni C ++ kódot.

A megjelenése az új elem

Amikor inicializálásakor a szerencsejáték-modell aktív elem semleges állapotban egy üres belső mátrix (lásd. Pattern NULL object). Ez az ellenőrzési végezzük IsNull () tagú funkció:

Kialakulását egy új tagja végeztük elején a tag függvény doStep (). amely az úgynevezett minden egyes szerencsejáték-lépésben (időzítő a vezérlő):

Megalakult a véletlen elem történik TetrisItem :: generateRandom () függvényt:

Ellenőrzés Game Over

A doStep () függvény kényelmes hozzáadni és ellenőrizze a játék végén:

Kérdezd meg a modellt, hogy a játéknak vége, akkor isGameOver ():

Az aktív elem alján

Amikor az alsó része az aktív elem valami nyugszik, lehetővé tesszük neki egy kis „csúszás”:

Tetris a c érvényesíteni szabályok - emlékeztet

Hogy támogassa a lépés alján a funkciót, akkor kellett hozzá egy számlálót érinti. Minden alkalommal, amikor az elem aggályok nem üres blokk alsó részén, a számláló értéke növekszik. Ha a számláló értéke elér egy bizonyos határt, az elem van rögzítve (pontosabban addig, amíg csak el nem tűnik). Ha a játékos mozog a tag (balra vagy jobbra), úgy, hogy esni kezd újra, a számláló nullázódik.

Rögzítése a aktív elem

Nem vagyunk elégedettek azzal, amit most az aktív elem egyszerűen eltűnik bukása után. Mi mindent megteszünk azért, hogy az összes egység részévé vált a játéktábla:

A kód teljesen nyilvánvaló. Megjegyzem, csak azt, hogy úgy működik, hogy az aktív elem található, a garantált hálózati játék terén. Ennek eredményeként a szétválás az egyes koordináták alapján pontokon a blokk méretét a blokk, így a kívánt játék terén koordinátákat.

Tisztítás töltött sorok és összetettsége

Modell majdnem kész. Továbbra is hozzá néhány utolsó simításokat. Itt az algoritmus a játéktábla tisztító töltött sorok:

Calling tiszta () szükséges rögtön a kódot rögzítő elemek:

Tetris a c érvényesíteni szabályok - emlékeztet

Minden élj számos pontok száma eggyel nő. Minden szerzett 10 pontot nehéz a játék megnő (növeli a sebességet egységenként):

Tény, incScore () függvény, hogy nem igazán sikeres (lásd az elvet egyetlen felelősséget.): Ez a mellékhatás (növekszik sebesség). Ahhoz azonban, hogy egy ilyen egyszerű játék ez nem volt kritikus. Elképzelhető, hogy ez kell feldolgozni összetettebb projektek.

Az utolsó változás

A sebesség változó elem eshet nemcsak hívás incSpeed ​​(). de az lesz a játékos. Ebből a célból, mi foglalkoztunk az alábbiak szerint:

következtetés

Ez arra a következtetésre jutott a bevezetés a modell a játék Tetris. És a következő alkalommal megy az áttekintést végrehajtásának megtekintése és Controller.


Tetris C ++: egy dinamikus modell


Tetris C ++: ütközésérzékeléssel


Tetris C ++: statikus modell


Tetris C ++: megtekintése és Controller


Tetris C ++: Bevezetés


Távoli számítógépes hálózat üzemeltetés: átvitele billentyűzet események (Linux / X11)


Távoli számítógépes hálózat üzemeltetés: átvitele billentyűzet események (Win32)


Távoli menedzsment egy számítógépes hálózat: Küldés egéreseményeket