如切如磋,如磨如琢。|

RaceGame-Qt游戏项目构建-游戏控制

RaceGame-Qt游戏项目构建-游戏控制

控制概述

控制类,控制游戏进程,例如游戏读秒、开始游戏、退出游戏、游戏暂停、继续等。玩家可以通过游戏窗口上的按钮控制这些过程。因此链接游戏界面的成员函数要么是公共的槽函数,要么是带有带有 Q_INVOKABLE 声明的函数。 Q_INVOKABLEQT 的宏定义,决定了这个函数可以被 QML 调用。

class GameControl

游戏控制类,控制游戏设置、开始游戏、退出游戏、游戏暂停、继续等。具有各种管理器类的对象指针,用来控制游戏过程。

class GameControl : public QObject {
Q_OBJECT
Q_PROPERTY(int playerNum READ getPlayerNum WRITE setPlayerNum NOTIFY playerNumChange FINAL)
Q_PROPERTY(int mapId READ getMapId WRITE setMapId NOTIFY mapIdChange FINAL)
public:
GameControl(QQmlContext * context);
int getPlayerNum();
void setPlayerNum(int n);
int getMapId();
void setMapId(int id);
void setPlayerContextProperty();
void setGameMapContextProperty();
void setToolContextProperty();
void setBeatControlProperty();
QList<QString> backgroundColorList;
std::shared_ptr<playersManager> playerRoot;
std::shared_ptr<mapsManager> mapRoot;
std::shared_ptr<ToolsManager> toolRoot;
std::shared_ptr<playersMove> moveRoot;
std::shared_ptr<BeatControl> beatRoot;
QQmlContext * context;
Q_INVOKABLE void entryGame();
private:
int playerNum;
int mapId;
signals:
void playerNumChange();
void mapIdChange();
void refreshmap();
void overGameSignal();
public slots:
void startGame();
void backGame();
void pauseGame();
void overGame();
void continueGame();
bool getToolClick(int playerId);
void toolClick(int playerId);
void turnNext();
bool chosePreMap();
bool choseNextMap();
bool addPlayer();
bool removePlayer();
};

class BeatControl

节拍管理器,用于控制游戏过程中存在的读秒过程。例如玩家获取工具之后,需要在 PRE_LAUNCH_SEC 之内释放,否则该管理器会自动将玩家的工具释放。

// 不具体实现功能 只发出信号
// 节拍管理器 singleton
class BeatControl : public QObject {
Q_OBJECT
Q_PROPERTY(int preLaunchSecond READ getPreLaunchSecond WRITE setPreLaunchSecond NOTIFY preLaunchSecondChanged FINAL)
public:
private:
BeatControl();
static std::shared_ptr<BeatControl> btControl;
QTimer * preLaunchTimer;
int preLaunchSecond;
public:
int getPreLaunchSecond();
void stopPreLaunchTimer();
void startPreLaunchTimer();
void setPreLaunchSecond(int second);
static std::shared_ptr<BeatControl> getInstance();
signals:
void preLaunchSecondChanged();
void toolAutoLaunchSgn();
};

本文作者:北纬31是条纬线哦

本文链接:https://www.cnblogs.com/beiwei31/p/18695142

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   北纬31是条纬线哦  阅读(8)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 If 丁可
If - 丁可
00:00 / 00:00
An audio error has occurred.

I came your danger soul 我靠近你危险的灵魂

Think so you'll say hello 想着你会主动打招呼

Breaking you find to go 忽然你想要转身离去

Break down you might be lone 黯然神伤或许你也会孤独吧

Angel you down thinking 天使如你可否冷静思虑

Think so you freaking down 还以为你会不药而愈

Say hi to send you go 一声问候就让你安心离开

Break down you might be lone 黯然神伤或许你也会孤独吧

And you know you saying to go 你自顾自洒脱的离去

Breaking down I find to go 终于遍体鳞伤的我选择离开

I can't down to soul 怎敢抚慰那深至灵魂的痛

You don't know I love you so 却不知这份爱的深沉

Angel now you think so 我的爱人事到如今你还会这样想吧

Don't freak the danger soul 是我不该诱惑你危险不安的灵魂吧

Breaking I find to go 终于遍体鳞伤的我选择离开

Break down you might be lone 黯然神伤或许你也会孤独吧

And you know you saying to go 你自顾自洒脱的离去

You don't know I love you so 却不知这份爱的深沉

Breaking down you trying to go 伤痕累累你试图不告而别

I can't down to soul 怎敢抚慰那深至灵魂的痛

And you know you trying to go 你自顾自洒脱的离去

You don't know I love you so 却不知这份爱的深沉

Breaking down you trying to go 伤痕累累你试图不告而别

I can't down to soul 怎敢抚慰那深至灵魂的痛