LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Qt framework - qt_tetris(1)

V předchozích dílech jsme se naučili základy Qt4 frameworku a ukázali jsme si jak se zachází s dialogovými okny. V dalších dílech si vše ukážeme v praxi na jednoduché velmi známé hře tetris.

21.5.2010 20:00 | Martin Chudoba | Články autora | přečteno 7502×

Aktualizace

Od posledního článku nám uplynul nějaký ten čas a mezi tím nám vyšla nová verze qt knihovny a creatoru. Proto bych Vás všechny chtěl upozornit, než začneme naši práci, aby jste si aktualizovali na poslední verzi ze stránek Qt4 frameworku.

Vytvoření projektu

Projekt si založíme velice jednoduše podle předchozích dílů. Jako typ okna vybereme nám již dobře známé dialogové okno a přepneme se do designeru (klikneme na náš *.ui soubor).

Vytvoření designu

Pro design budeme potřebovat tři tlačítka, widget pro skóre, náhled na příští kostičku, widget s aktuálním levelem a konečně naše hrací pole. Návrh designu by mohl vypadat nějak takto:

nahled.


Naše hrací pole si zkusíme vytvořit pomocí grafického kontextu zařízení a samostatné třídy CGameField. V naší nové třídě si založíme novou public metodu void DrawGameField s parametrem QPainter* painter, který představuje kontext zařízení pro kreslení grafických objektů. Pro ukázku metoda může vypadat takto:

void CGameField::DrawGameField(QPainter* painter) { QColor aColor(90, 90, 90, 255); painter->setPen(aColor); painter->drawLine(138, 10, 138, 522); //L painter->drawLine(138, 10, 443, 10); //T aColor.setRgb(240, 240, 240); painter->setPen(aColor); painter->drawLine(443, 10, 443, 522); //R painter->drawLine(138, 522, 443, 522); //B }

Metodou setPen si nastavíme barvu ve formátu RGBA, a pomocí metod drawLine si vykreslíme 4 hranice našeho hracího pole. Komentáře L, T, R, B určijí o jakou hranu se jedná. Pole je potřeba si rozpočítat podle velikosti jedné kostičky a počtu sloupečků hracího pole. Já jsem pro ukázku zvolil 10x17 kostiček. Naši novou třídu přilinkujeme do hlavní třídy a vytvoříme si na ní objekt CGameField* l_GameField. Inicializujeme v kontruktoru a předefinujeme virtuální metodu:

void CTetris::paintEvent(QPaintEvent *event) { QPainter a_painter(this); l_GameField->DrawGameField(&a_painter); }

Tím jsme si zajistili, že se bude naše hrací pole kreslit do našeho okna.

Příprava proměnných

Pro naši aplikaci si vytvoříme další novou třídu CCube, která nám poslouží pro ovládání každé kostičky našeho hracího pole. Do třídy CGameField si naincludujeme tuto novou třídu a dále přidáme vectorové pole a založíme si structuru sGAME_FIELD, která bude představovat kostičku v našem poli.

struct sGAME_FIELD { CCube* s_Sprite; int l_status; bool l_isFixed; };

Dále si přidáme chráněnou položku sGAME_FIELD l_gameField[10][17] představující kompletní hrací pole (jak jsem se již zmínil, bude o velikosti 10x17).

Zkušební kompilace

Vyzkoušíme si naší aplikaci přeložit. Na výstupu budeme mít dialogové okno s našimi widgety a vykreslenými okraji našeho hracího pole. Zkuste si sami oživit tlačítko konec pomocí předchozích dílů seriálu.

Závěrem

Nyní máme vytvořený výchozí bod naší aplikace. A tak se příště pustíme do stvoření virtuálního hracího pole a vytvoříme si engine pro kreslení našich kostiček ve hře. Ukázku si můžete stáhnout zde: download

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze