Tetris privind introducerea c - ea constată
Tetris - joc clasic creat Alekseem Pazhitnovym. Rămâne relevant și interesant, până în prezent. De ce nu ne dăm seama că nu este la fel de distractiv?
Am pregătit deja un prototip, asa ca am sugera descărca codul sursă de Tetris în C ++. astfel încât să puteți experimenta cu ele. Proiectul demonstrează mecanica generale ale jocului fără detalii inutile. Aspectul aplicației puteți aprecia în captura de ecran de pe partea stângă.
- Sagetile stanga / dreapta - mișcare în direcția corespunzătoare;
- Arrow - rândul său, elementul curent invers acelor de ceasornic;
- Săgeată în jos - pentru a accelera căderea elementului curent;
- Space - on / off pauză.
- Escape - începe din nou jocul.
arhitectura aplicație bazată pe modelul MVC, cu care ne-am dezvoltat deja jocul Minesweeper în Python.
Pentru a face fără mizerie, ținând cont de amploarea jocului, a folosit structura cea mai primitivă a proiectului generat direct în QtCreator.
În arhiva descărcată, veți găsi următoarele fișiere:
- Tetris.pro - descrierea proiectului de fișier;
- main.cpp - punct în care este creat și afișat pe widget ecranul de pornire;
- tetrismodel (h | cpp) - punerea în aplicare a modelului de logica jocului.. Cel mai interesant lucru este aici;
- tetriscontroller (h | cpp) - punerea în aplicare a acestuia.. Aici veți găsi logica de control;
- tetrisview (h | cpp) - realizarea de reprezentare.. desen o concluzie cu standardul Qt înseamnă bazat pe QPainter. Poate că, în viitor, de dragul acestui modul rescrisă folosind OpenGL.
Interacțiunea dintre model și vizualizarea este implementat astfel încât fiecare schimbare de reprezentare Modele complet redesenata. Acest lucru poate simplifica foarte mult punerea în aplicare, ca la nivelul reprezentări ale jocului este complet fixat la un moment dat. Desigur, a fost posibil să se facă de optimizare și de a face retrasarea numai acele părți care au schimbat de la ultima dată. Cu toate acestea, acest lucru doar adaugă problemele noastre, fără o creștere semnificativă a performanței pe computerele moderne.
Tetris este un joc dinamic, astfel încât trebuie să ofere un mecanism pentru automate actualizări de stare funcția de apel. Poate că o abordare mai bună ar fi utilizarea flux bazat pe intervale de timp pentru ajustarea la viteza unui joc FPS. Cu toate acestea, în proiectul vom gestiona un simplu QTimer timer. care funcționează la intervale regulate. Dezavantajul abordării ales este faptul că pe computerele lent, jocul va merge încet. Cu toate acestea, în primul caz, vom obține un rezultat nu mult mai bine. Jocul ar fi mers cu o rată garantată, dar în spurts.
Este important să rețineți că unele C ++ 11 poate fi utilizat în codul de proiect, așa că, dacă există probleme, încercați un compilator diferit. Am compilat în cadrul proiectului Linux cu GCC 4.9.2 și Qt 4.8.6. Pe de altă parte, aveți posibilitatea să eliminați fragmentul de cod utilizând funcțiile lambda și inițializarea simplificată a matrice. Apoi, proiectul se va întâlni aproape oriunde.
La acest lucru încă făcut. Data viitoare când analiza un model static al jocului.