我不明白命令设计模式在游戏开发中是如何工作的

I dont get how command design pattern works in game development

也许那是我缺乏 c++ 知识或缺乏编程技能,但我正在尝试了解 c++ 中用于游戏开发的命令设计模式。我正在阅读这本书(它的字面意思是“游戏编程模式”,我非常喜欢它),我决定在实际代码中使用其中一种设计模式,看看我是否真的理解它。所以我创建了这个废代码,不出所料,它不起作用:

#include <iostream>


void jump() {
    //assume that this is some random
    //code that makes player jump
    //if console displays "Player jumps"
    //this means that this code works...
    std::cout << "Player jumps";
}
void fireGun() {
    //same thing as jump function
    //but its for fire gun
    std::cout << "Gun goes pew pew";
}

class Command
{
public:
    virtual ~Command(){}
    virtual void execute() = 0;
};

class JumpCommand : public Command
{
public:
    virtual void execute() { jump(); }
};

class FireCommand : public Command
{
public:
    virtual void execute() { fireGun(); }
};

class InputHandler
{
public:
    void handleInput();
    
    /// Methods to bind commands????

private:
    Command* buttonX_;
    Command* buttonY_;
};

void InputHandler::handleInput() {
    bool is_BUTTON_A_pressed = true; 
    //lets assume that this is a function that detects
    //if button a ir pressed and it returns true 
    //(meaning button a is pressed)
    if (is_BUTTON_A_pressed) buttonX_->execute();
}



int main() 
{
    InputHandler input;
    input.handleInput();
    return 0;
}

对于那些想知道这里是我提取此设计模式示例代码的源代码的人: https://gameprogrammingpatterns.com/command.html

所以最让我困惑的是“绑定命令的方法”部分(我在代码中评论过),我感觉它与将 buttonX_ 和 buttonY_ 绑定到命令有关,但仅此而已...

您缺少的是绑定 buttonX_ 和 buttonY_ 来做某事。我认为你所缺少的只是一个构造函数(或其他机制),它可以做这样的事情:

buttonX_ = new JumpCommand();
buttonY_ = new FireCommand();

现在,他们没有指向任何东西。将它们指向某些东西,您会更快乐。