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.

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.

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.

Ez a játék a Tetris PyQt5.