RaceGame-Qt游戏项目构建-游戏控制
RaceGame-Qt游戏项目构建-游戏控制
控制概述
控制类,控制游戏进程,例如游戏读秒、开始游戏、退出游戏、游戏暂停、继续等。玩家可以通过游戏窗口上的按钮控制这些过程。因此链接游戏界面的成员函数要么是公共的槽函数,要么是带有带有 Q_INVOKABLE 声明的函数。 Q_INVOKABLE 是 QT 的宏定义,决定了这个函数可以被 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();
};

浙公网安备 33010602011771号