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ù)分類原則,后期可以加一些菜單及快捷工具操作,比如選關(guān)卡,關(guān)卡通關(guān)耗時(shí)等操作,因此主窗口選擇QMainWidow,如果想樣式美觀,可自定義重寫QMainWidow;
因?yàn)槭遣煌P(guān)卡,所以選擇棧控件作為中央窗體,可進(jìn)行界面切換;
也可以只有一個(gè)頁(yè)面,根據(jù)關(guān)卡,動(dòng)態(tài)刷新;將關(guān)卡作為一個(gè)類;
將關(guān)卡中的各個(gè)項(xiàng)作為一個(gè)類;
因?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>
// 類前置
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)電子木魚小游戲
- 基于PyQt5制作一個(gè)猜數(shù)字小游戲
- Qt實(shí)現(xià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-04
c語(yǔ)言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具代碼分享
這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具,大家參考使用吧2014-01-01
淺談C++類型轉(zhuǎn)化(運(yùn)算符重載函數(shù))和基本運(yùn)算符重載(自增自減)
下面小編就為大家?guī)?lái)一篇淺談C++類型轉(zhuǎn)化(運(yùn)算符重載函數(shù))和基本運(yùn)算符重載(自增自減)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
C++中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-01
C++符號(hào)優(yōu)先級(jí)(詳細(xì)整理)
C++符號(hào)優(yōu)先級(jí),我詳細(xì)整理了一下。需要的朋友可以過(guò)來(lái)參考下。希望對(duì)大家有所幫助2013-10-10

