Qt實現(xiàn)卡牌對對碰游戲(附demo)
效果
閑來無事,實現(xiàn)一個對對碰游戲,卡牌樣式是火影動漫
。
玩法
- 啟動游戲,進入第一關卡,所有卡牌都為
未翻開
狀態(tài),即背面朝上; - 點擊卡牌,則將卡牌翻開;
- 如果當前翻開的卡牌和上一次翻開的卡牌不一致,則1s后,將兩張卡牌再次背面朝上;
- 如果當前翻開的卡牌和上一次翻開的卡牌一致,則兩張卡牌都會正面朝上;
- 全部翻開,本官通關,則進去下一關卡。
UI
上一張初始UI圖:
再上一張通關圖:
示例
可以加個啟動界面;
根據分類原則
,后期可以加一些菜單及快捷工具操作,比如選關卡,關卡通關耗時等操作,因此主窗口選擇QMainWidow
,如果想樣式美觀,可自定義重寫QMainWidow
;
因為是不同關卡,所以選擇??丶鳛橹醒氪绑w,可進行界面切換;
也可以只有一個頁面,根據關卡,動態(tài)刷新;將關卡作為一個類;
將關卡中的各個項作為一個類;
因為得創(chuàng)建,因此后來可以使用工廠模式進行關卡及項創(chuàng)建;
通過定時器與鼠標事件進行界面卡牌打開及關閉;通關后,提示。
由于界面展現(xiàn)效果不好,以下是部分實現(xiàn)代碼,代碼鏈接在下方1,可下載:
item.h
#ifndef ITEM_H #define ITEM_H #include <QLabel> class Step; namespace Ui { class Item; } // 在關卡中創(chuàng)建的項 class Item : public QLabel { Q_OBJECT public: explicit Item(const QString& strItem, Step* pStep, QWidget *parent = nullptr); ~Item(); // 是否翻開 void setOpen(bool b){m_bIsOpen = b;} bool open(){return m_bIsOpen;} protected: // 觸發(fā)鼠標事件 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> // 類前置 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(); // 設置上一個點擊的item void setPreviousItem(Item* pItem){m_pItemPrevious = pItem;} Item* item(){return m_pItemPrevious;} bool check(); private: // 初始化關卡 QList<QStringList> initStep(const QString& strStepPath); // 初始化項 void initItem(const QList<QStringList>& listSL); // 創(chuàng)建關卡內的項 Item *createItem(const QString& strItem); private: Ui::Step *ui; Item* m_pItemPrevious = nullptr; // 上一個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: // 初始化關卡配置文件 void init(); private: Ui::MainWindow *ui; QStackedWidget* m_pSW; }; #endif // MAINWINDOW_H
代碼鏈接
卡牌對對碰: https://gitcode.net/MrHHHHHH/qt-_card/-/blob/master/FlipTheCardGame.rar
到此這篇關于Qt實現(xiàn)卡牌對對碰游戲(附demo)的文章就介紹到這了,更多相關Qt 卡牌對對碰內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
淺談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)
下面小編就為大家?guī)硪黄獪\談C++類型轉化(運算符重載函數)和基本運算符重載(自增自減)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06