亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲(附demo)

 更新時(shí)間:2023年10月29日 15:11:28   作者:FreeLikeTheWind.  
本文主要介紹了Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

效果

閑來(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux線程同步之信號(hào)C語(yǔ)言實(shí)例

    Linux線程同步之信號(hào)C語(yǔ)言實(shí)例

    這篇文章主要介紹了Linux線程同步之信號(hào)C語(yǔ)言實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • 詳解C語(yǔ)言中return與exit的區(qū)別

    詳解C語(yǔ)言中return與exit的區(qū)別

    這篇文章主要介紹了詳解C語(yǔ)言中return與exit的區(qū)別的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • c語(yǔ)言實(shí)現(xiàn)系統(tǒng)時(shí)間校正工具代碼分享

    c語(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)算符重載(自增自減)

    淺談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-06
  • C++中std::tuple和std::pair的高級(jí)用法

    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
  • VC對(duì)自定義資源加密解密(AES)的詳解

    VC對(duì)自定義資源加密解密(AES)的詳解

    本篇文章是對(duì)VC對(duì)自定義資源加密解密(AES)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 淺談c++調(diào)用python鏈接的問(wèn)題及解決方法

    淺談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ǔ)言基礎(chǔ) 命名空間

    C++語(yǔ)言基礎(chǔ) 命名空間

    一個(gè)中大型軟件往往由多名程序員共同開(kāi)發(fā),會(huì)使用大量的變量和函數(shù),當(dāng)有兩個(gè)人都同時(shí)定義了一個(gè)名字相同的全局變量或函數(shù)的時(shí)候,若是把他們的代碼整合在一塊編譯,此時(shí)編譯器就會(huì)提示變量或函數(shù)重復(fù)定義,C++為了解決這個(gè)問(wèn)題,便引用了命名空間(namespace)的概念
    2020-01-01
  • 使用C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)數(shù)組Vector

    使用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ì)整理)

    C++符號(hào)優(yōu)先級(jí),我詳細(xì)整理了一下。需要的朋友可以過(guò)來(lái)參考下。希望對(duì)大家有所幫助
    2013-10-10

最新評(píng)論