Létrehozása „Tetris” játék pyqt5 leckét №12

Létrehozása „Tetris” játék pyqt5 leckét №12

Tetris játék - az egyik legnépszerűbb valaha létrehozott számítógépes játékok. Az eredeti játék célja az volt, és programozta a magyar programozó Alekseem Pazhitnovym 1985. Azóta Tetris elérhető szinte minden számítógépes platform számos változatban.

Ez az úgynevezett Tetris puzzle játék tartozó blokkok. Ebben a játékban, van hét különböző számok, a továbbiakban: S-alakú, Z-alakú, T-alakú, L-alakú, alak, vonal, forma, „Mirror L» és ez a szám a téren. Mindegyik számadatok van kialakítva négy négyzet. A számok zuhan a fedélzeten. A cél a Tetris játék - mozgatni és forgatni a darabokat, hogy azok partra, amennyire csak lehetséges. Ha nem vagyunk képesek generálni egy szám, egy szünetek száma és mi kap pontot. Mi játszani Tetris, amíg elérjük a tetején.

Létrehozása „Tetris” játék pyqt5 leckét №12

PyQt5 - eszköz létrehozására tervezték alkalmazásokhoz. Vannak más könyvtárak, amelyek célja a teremtés a számítógépes játékok. Ennek ellenére, PyQt5 és más könyvtári alkalmazások létrehozásához használt egyszerű játékok. Létrehozása egy számítógépes játék - egy nagyszerű módja annak, hogy növelje programozási ismeretek.

tervezés

Jelenleg nincs kép a mi Tetris felhívjuk tetrominoes a rendelkezésre álló szoftver eszközök PyQt5 API rajz. Mögött minden számítógépes játékok, van egy matematikai modell segítségével. Hasonlóképpen, a Tetris.

Néhány ötlet értékelik a játékot:

Az általunk használt QtCore.QBasicTimer (), hogy hozzon létre egy játék hurok.

tetrominoes húzott

A számok lépni a „kocka kocka” (nem „pixelenként”).

Matematikailag a fedélzeten - ez csak számok listáját.

A kód négy osztályban: Tetris, Board, Tetrominoe és alakját. Class Tetris szervezi a játékot. Board - ez az, ahol a játék logikája van írva. Class Tetrominoe neveit tartalmazza az összes alkatrész Tetris és alakja osztály tartalmazza a kód részeit Tetris.

A játék egy kicsit egyszerűsíteni a könnyebb megértést. A játék azonnal megkezdődik elindítása után. Mi szüneteltetheti a játékot, nyomja meg a p gombot. Space gombot azonnal dobja a blokk alján Tetris. A játék állandó sebességgel, a gyorsulás nem valósult meg. Rámutat - a sorok számát, amit el kell hagyni.

Board osztály példány létrehozásakor és van beállítva, hogy a központi egy widget alkalmazás.

Készítünk egy állapotsort, ahol megjelenítünk egy üzenetet. Meg fogjuk mutatni, három lehetséges üzenetek: a sorok száma már távoli, szüneteltetheti az üzenetet, vagy az üzenet „Game Over”. msgStatusbar - a felhasználó jelet, amely végre az osztályban tanács. ShowMessage () - Ez a beépített módszer, amely megjelenít egy üzenetet az állapotsorban.

Ez a vonal kezdeményezi a játékot.

Egyedi jel jön létre. msgStatusbar - jelet, amely akkor aktiválódik, ha azt akarjuk, hogy írjon egy üzenetet vagy szemüveget az állapotsorban.

Ez az osztály változók tanács. BoardWidth BoardHeight és méretének meghatározására a fórumon blokkokat. Sebessége határozza meg a sebességet a játékot. Minden 300 ms ciklus indul egy új játék.

A módszer initBoard (), akkor inicializálni néhány fontos változót. Részben self.board - számok listáját 0-tól 7 Ez a helyét a különböző formájú és elhagyja a darab a fórumon.

shapeAt () módszer meghatározza alakzat típusa ebben a blokkban.

Board dinamikusan átméretezni. Ennek következtében a blokk mérete változhat. squareWidth () számítja ki a szélessége egy egyszerű négyzet alakú pixeleket, és visszaadja azt. Board.BoardWidth - a méret a fórumon blokkokat.

Rajz játékok két lépésre osztható. Az első lépés, felhívjuk a formák, vagy hagyja, hogy a formák ejtették az aljára a fórumon. Minden a dobozok változóban tárolt listában self.board. Hozzáférés egy változó felhasználásával készítenek shapeAt () módszer.

A következő lépés - a rajz leomlott részek.

A módszer keyPressEvent (), akkor ellenőrizze karakternél. Ha megnyomjuk a jobb nyíl gombot, igyekszünk, hogy mozog a rész a jobb oldalon. Azt mondják, hogy „próbálja meg”, mert néhány nem tud mozogni.

Felfelé fog fordulni, hogy a bal oldali része az incidens.

Key „Space” azonnal dobja a csökkenő darab az alján.

Megnyomása «d» rész megy le egy egységgel. Ezt fel lehet használni, hogy némileg felgyorsítja a bukása.

A módszer tryMove (), igyekszünk mozgatni a darabokat. Ha ez a szám szélén a tábla vagy a szomszédos egy másik része, akkor vissza a „hamis”. Máskülönben haladunk a jelenlegi csökkenő darab egy új helyzetbe.

Az esemény időzítő, akkor létrehozhat egy új rész után az előző részben, hogy esett az aljára, vagy haladunk a csökkenő darab egy sorban le.

clearBoard () módszer megtisztítja Tetrominoe.Noshape fedélzeten telepítésével az egyes fedélzeti egység.

Ha részt eléri az alsó, hívjuk removeFullLines () metódust. Találunk a teljes sort, és törölje őket. Tesszük ezt azáltal, hogy minden vonal felett a jelenlegi teljes vonalon, hogy eltávolított egy sorral lejjebb. Felhívjuk figyelmét, hogy az általunk indított eljárást törölni sorokat. Ellenkező esetben nem fog megfelelően működni. A mi esetünkben, az általunk használt ártatlan gravitáció. Ez azt jelenti, hogy a részek felett lebeg az üres tereket.

newPiece () metódus létrehoz egy új véletlenszerű része Tetris. Ha a rész nem jön be a kiindulási helyzetbe, a játék véget ér.

Class Tetrominoe neveit tartalmazza minden lehetséges formában. Mi is NoShape az üres teret.

A Shape osztály információkat tárol a részek Tetris.

CoordsTable készlet tartalmazza az összes lehetséges értékei koordinátáit a darab Tetris. Ez egy sablont, amely az összes darab veszik koordinátákat.

A létrehozott létrehozunk egy üres koordináta listát. A lista tárolja a koordinátákat részeinek Tetris.

Létrehozása „Tetris” játék pyqt5 leckét №12

A fenti kép segít megérteni egy kicsit több koordináta értékeket. Például, a beállított (0, -1), (0, 0), (-1, 0), (-1, -1) a Z-alakú. Reakcióvázlat szemlélteti az ábra.

rotateLeft () metódus fordul bal oldali részén. A tér nem kell forgatni. Ezért csak vissza, a hivatkozás az aktuális objektumot. Az új rész jön létre, és annak koordinátáit állítva az egyik esztergált alkatrészek.

Létrehozása „Tetris” játék pyqt5 leckét №12

Ez a játék a Tetris PyQt5.