Crearea unui „Tetris“ Lecții de joc pyqt5 №12
Tetris joc - una dintre cele mai populare jocuri pe calculator create vreodată. Jocul original a fost proiectat și programat de programator română Alekseem Pazhitnovym în 1985. Din acel moment, Tetris este disponibil în aproape fiecare platformă de calculator în mai multe variante.
Acesta numit Tetris joc de puzzle cu blocuri care se încadrează. În acest joc, avem șapte cifre diferite, denumite: S-forma, Z-forma, formă T, formă de L, figura, linie, forma, „Mirror L», iar cifra de pătrat. Fiecare dintre aceste cifre este format cu patru pătrate. Cifrele sunt încadrate în jos pe bord. Scopul jocului Tetris - muta și roti piesele, astfel încât acestea debarcate cât mai mult posibil. Dacă suntem capabili să genereze un număr, un număr de pauze și obținem puncte. Am juca Tetris pentru atâta timp cât vom ajunge în partea de sus.
PyQt5 - instrument conceput pentru crearea de aplicații. Există și alte biblioteci, care au ca scop crearea de jocuri pe calculator. În ciuda acestui fapt, PyQt5 și alte aplicații de bibliotecă pot fi folosite pentru a crea jocuri simple. Crearea unui joc pe calculator - o modalitate foarte bună de a crește abilitățile de programare.
desen
Nu avem nici o imagine pentru Tetris nostru, vom trage Tetrominoes folosind instrumente software disponibile în PyQt5 API desen. In spatele fiecare dintre jocuri pe calculator, există un model matematic. În mod similar, în Tetris.
Unele idei sunt evaluate în joc:
Noi folosim QtCore.QBasicTimer (), pentru a crea o buclă de joc.
Tetrominoes trase
Cifrele muta pe un „cub de cuburi“ (nu „pixel cu pixel“).
Matematic, placa - este doar o listă de numere.
Codul este format din patru clase: Tetris, Consiliul, Tetrominoe și forma. Clasa Tetris organizează jocul. Consiliul de - în cazul în care acest lucru este logica jocului este scris. Clasa Tetrominoe conține numele tuturor pieselor de Tetris și clasa Shape conține codul pentru piese de Tetris.
Jocul este un pic simplificat pentru o înțelegere mai ușoară. Jocul începe imediat după lansare. Putem întrerupe jocul prin apăsarea tastei p. Tasta Space va arunca imediat un bloc de la partea de jos a Tetris. Jocul vine la o viteză constantă, accelerația nu este implementată. Puncte - numărul de linii pe care le șterse.
Consiliul de clasa instanță este creată, și este setat pentru a fi elementul central al unei aplicații widget.
Vom crea o bara de stare, în cazul în care vom afișa un mesaj. Vom arăta trei mesaje posibile: numărul de linii deja la distanță, întrerupeți mesajul, sau mesajul „Game Over“. msgStatusbar - este semnalul de utilizator, care este implementat în Consiliul de clasă. showMessage () - Această metodă încorporată, care afișează un mesaj în bara de stare.
Această linie inițiază jocul.
este creat semnal personalizat. msgStatusbar - un semnal care este activat atunci când vrem să scrie un mesaj sau ochelari în bara de stare.
Această clasă de variabile Board. BoardWidth BoardHeight și de a determina mărimea consiliului în blocuri. Viteza determină viteza de joc. Fiecare ciclu de 300 ms, va începe un joc nou.
Metoda initBoard (), am inițializa unele variabile importante. Parțial self.board - o listă de numere de la 0 la 7. Este locația de diferite forme și lasă piesele de pe bord.
shapeAt () metoda determină tipul de formă în acest bloc.
Placa poate fi redimensionate dinamic. În consecință, mărimea blocului poate varia. squareWidth () calculează lățimea un simplu pixeli pătrați și o returnează. Board.BoardWidth - este dimensiunea consiliului în blocuri.
Desenul jocuri este împărțit în două etape. Primul pas, vom trage toate formele, sau lăsați forme care au fost retrase la partea de jos a plăcii. Toate casetele sunt stocate în lista de self.board variabilă. Accesul la o variabilă este preparat folosind metoda shapeAt ().
Următorul pas - este de desen căzut jos piese.
Metoda keyPressEvent (), vom verifica intrarile de la tastatura. Dacă vom apăsa tasta săgeată dreapta, încercăm să mute partea din dreapta. Noi spunem „încerca“, deoarece unele pot să nu fie în stare să se miște.
Săgeată în sus se va întoarce la partea stângă a incidentului.
Key „Space“ va arunca imediat o piesă care se încadrează în partea de jos.
Apăsând «d», o parte merge în jos cu o unitate. Acest lucru poate fi folosit pentru a accelera ușor căderea.
Metoda tryMove (), vom încerca să se mute piesele noastre. În cazul în care cifra este pe marginea de bord sau este adiacent la o altă parte, ne întoarcem „false“. În caz contrar, vom muta piesa care se încadrează curent într-o nouă poziție.
Timer-ul evenimentului, fie ne crea o nouă parte după partea anterioară, care a scăzut la partea de jos, sau vom muta o piesă care se încadrează în jos pe o singură linie.
clearBoard () metoda curățește Tetrominoe.Noshape bord prin instalarea pe fiecare unitate de bord.
Dacă o parte hit-uri în partea de jos, o numim removeFullLines) metoda (. Vom găsi toate linia completă și ștergeți-le. Facem acest lucru prin mutarea toate liniile de mai sus linia completă curent care eliminate o linie în jos. Vă rugăm să rețineți că am lansat procedura de ștergere a liniilor. În caz contrar, acesta nu va funcționa corect. În cazul nostru, vom folosi gravitația ingenuu. Acest lucru înseamnă că părțile pot trece peste spațiile goale.
newPiece () metoda creează o nouă parte aleatorie a Tetris. În cazul în care partea nu poate intra în poziția sa de pornire, jocul se termină.
Clasa Tetrominoe conține numele de toate formele posibile. De asemenea, avem NoShape pentru spațiul gol.
Clasa Shape stochează informații despre piesele de Tetris.
set CoordsTable conține toate valorile posibile ale coordonatele pieselor noastre de Tetris. Acesta este un șablon din care toate piesele iau coordonatele lor.
Odată creat, vom crea o listă goală de coordonate. Lista va stoca coordonatele părți de Tetris.
Imaginea de mai sus vă va ajuta să înțelegeți un pic mai mult valori de coordonate. De exemplu, setul (0, -1), (0, 0), (-1, 0), (-1, -1) este Z-forma. Schema ilustrează figura.
rotateLeft (), metoda se întoarce la partea stângă. Pătratul nu ar trebui să fie rotit. De aceea, ne întoarcem la doar o referire la obiectul curent. Noua parte este creată, iar coordonatele sale sunt stabilite într-una din părți transformat.
A fost un joc de Tetris în PyQt5.