Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲(附demo)
效果
閑來(lái)無(wú)事,實(shí)現(xiàn)一個(gè)對(duì)對(duì)碰游戲,卡牌樣式是火影動(dòng)漫
。
玩法
- 啟動(dòng)游戲,進(jìn)入第一關(guān)卡,所有卡牌都為
未翻開(kāi)
狀態(tài),即背面朝上; - 點(diǎn)擊卡牌,則將卡牌翻開(kāi);
- 如果當(dāng)前翻開(kāi)的卡牌和上一次翻開(kāi)的卡牌不一致,則1s后,將兩張卡牌再次背面朝上;
- 如果當(dāng)前翻開(kāi)的卡牌和上一次翻開(kāi)的卡牌一致,則兩張卡牌都會(huì)正面朝上;
- 全部翻開(kāi),本官通關(guān),則進(jìn)去下一關(guān)卡。
UI
上一張初始UI圖:
再上一張通關(guān)圖:
示例
可以加個(gè)啟動(dòng)界面;
根據(jù)分類(lèi)原則
,后期可以加一些菜單及快捷工具操作,比如選關(guān)卡,關(guān)卡通關(guān)耗時(shí)等操作,因此主窗口選擇QMainWidow
,如果想樣式美觀,可自定義重寫(xiě)QMainWidow
;
因?yàn)槭遣煌P(guān)卡,所以選擇??丶鳛橹醒氪绑w,可進(jìn)行界面切換;
也可以只有一個(gè)頁(yè)面,根據(jù)關(guān)卡,動(dòng)態(tài)刷新;將關(guān)卡作為一個(gè)類(lèi);
將關(guān)卡中的各個(gè)項(xiàng)作為一個(gè)類(lèi);
因?yàn)榈脛?chuàng)建,因此后來(lái)可以使用工廠模式進(jìn)行關(guān)卡及項(xiàng)創(chuàng)建;
通過(guò)定時(shí)器與鼠標(biāo)事件進(jìn)行界面卡牌打開(kāi)及關(guān)閉;通關(guān)后,提示。
由于界面展現(xiàn)效果不好,以下是部分實(shí)現(xiàn)代碼,代碼鏈接在下方1,可下載:
item.h
#ifndef ITEM_H #define ITEM_H #include <QLabel> class Step; namespace Ui { class Item; } // 在關(guān)卡中創(chuàng)建的項(xiàng) class Item : public QLabel { Q_OBJECT public: explicit Item(const QString& strItem, Step* pStep, QWidget *parent = nullptr); ~Item(); // 是否翻開(kāi) void setOpen(bool b){m_bIsOpen = b;} bool open(){return m_bIsOpen;} protected: // 觸發(fā)鼠標(biāo)事件 virtual void mouseReleaseEvent(QMouseEvent *ev) override; virtual void mousePressEvent(QMouseEvent *ev) override; private: Ui::Item *ui; Step* m_pStep; bool m_bIsOpen = false; }; #endif // ITEM_H
step.h
#ifndef STEP_H #define STEP_H #include <QWidget> // 類(lèi)前置 QT_FORWARD_DECLARE_CLASS(Item) namespace Ui { class Step; } class Step : public QWidget { Q_OBJECT public: explicit Step(const QString& strStepPath, QWidget *parent = nullptr); ~Step(); // 設(shè)置上一個(gè)點(diǎn)擊的item void setPreviousItem(Item* pItem){m_pItemPrevious = pItem;} Item* item(){return m_pItemPrevious;} bool check(); private: // 初始化關(guān)卡 QList<QStringList> initStep(const QString& strStepPath); // 初始化項(xiàng) void initItem(const QList<QStringList>& listSL); // 創(chuàng)建關(guān)卡內(nèi)的項(xiàng) Item *createItem(const QString& strItem); private: Ui::Step *ui; Item* m_pItemPrevious = nullptr; // 上一個(gè)Item }; #endif // STEP_H
mainWindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class QStackedWidget; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: // 初始化關(guān)卡配置文件 void init(); private: Ui::MainWindow *ui; QStackedWidget* m_pSW; }; #endif // MAINWINDOW_H
代碼鏈接
卡牌對(duì)對(duì)碰: https://gitcode.net/MrHHHHHH/qt-_card/-/blob/master/FlipTheCardGame.rar
到此這篇關(guān)于Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲(附demo)的文章就介紹到這了,更多相關(guān)Qt 卡牌對(duì)對(duì)碰內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Qt實(shí)現(xiàn)抽獎(jiǎng)小游戲的三種方式
- Qt項(xiàng)目實(shí)戰(zhàn)之方塊游戲的實(shí)現(xiàn)
- 基于Qt實(shí)現(xiàn)電子木魚(yú)小游戲
- 基于PyQt5制作一個(gè)猜數(shù)字小游戲
- Qt實(shí)現(xiàn)棋盤(pán)游戲
- QT實(shí)現(xiàn)貪吃蛇游戲代碼詳解
- python編程使用PyQt制作預(yù)覽窗口游戲中的小地圖
- QT實(shí)現(xiàn)簡(jiǎn)單五子棋游戲
- QT實(shí)現(xiàn)貪吃蛇游戲
- QT實(shí)現(xiàn)簡(jiǎn)單打地鼠游戲
- Qt實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲
相關(guān)文章
Linux線程同步之信號(hào)C語(yǔ)言實(shí)例
這篇文章主要介紹了Linux線程同步之信號(hào)C語(yǔ)言實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下2015-04-04c語(yǔ)言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具代碼分享
這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具,大家參考使用吧2014-01-01淺談C++類(lèi)型轉(zhuǎn)化(運(yùn)算符重載函數(shù))和基本運(yùn)算符重載(自增自減)
下面小編就為大家?guī)?lái)一篇淺談C++類(lèi)型轉(zhuǎn)化(運(yùn)算符重載函數(shù))和基本運(yùn)算符重載(自增自減)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06C++中std::tuple和std::pair的高級(jí)用法
本文主要介紹了C++標(biāo)準(zhǔn)庫(kù)中std::pair和std::tuple的使用,包括它們的基本概念、使用場(chǎng)景、區(qū)別以及高級(jí)用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11淺談c++調(diào)用python鏈接的問(wèn)題及解決方法
下面小編就為大家?guī)?lái)一篇淺談c++調(diào)用python鏈接的問(wèn)題及解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03使用C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)數(shù)組Vector
這篇文章主要為大家詳細(xì)介紹了使用C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)數(shù)組Vector的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01C++符號(hào)優(yōu)先級(jí)(詳細(xì)整理)
C++符號(hào)優(yōu)先級(jí),我詳細(xì)整理了一下。需要的朋友可以過(guò)來(lái)參考下。希望對(duì)大家有所幫助2013-10-10