小编Tho*_*vas的帖子

尝试使用智能指针时抛出异常

不久前,我正在练习设计模式,最近,我尝试实现工厂方法模式。我的朋友告诉我应该总是使用智能指针,所以我已经尝试过了,但是我的编译器抛出了一个名为“访问冲突”的异常。我究竟做错了什么?有一个名为“Shape”的接口,从它继承了三个类,Client 类和 main 函数。我试图用智能指针做所有事情,但我有点不确定,如果我做得对。

#include <iostream>
#include <memory>

class Shape
{
public:
    virtual void printShape() = 0;
    static std::shared_ptr<Shape> Create(int num);
};

class Triangle : public Shape
{
public:
    virtual void printShape()
    {
        std::cout << "This is Triangle. \n";
    }
};

class Circle : public Shape
{
public:
    virtual void printShape()
    {
        std::cout << "This is Circle. \n";
    }
};

class Rectangle : public Shape
{
public:
    virtual void printShape()
    {
        std::cout << "This is Rectangle. \n";
    }
};

class …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns exception smart-pointers

2
推荐指数
1
解决办法
69
查看次数

在游戏中使用状态模式

最近,我尝试在 SFML 中创建 Snake 游戏。但是,我也想用一些设计模式来为以后的编程养成一些好的习惯——那就是状态模式。但是 - 有一些我无法解决的问题。

为了让一切都清楚,我尝试制作了几个菜单——一个主菜单,还有其他的,比如“选项”,或者类似的东西。主菜单的第一个选项会将玩家带到“播放状态”。但是,问题出现了——我认为整个游戏应该是一个独立的模块来实现编程。那么,我应该如何处理程序所处的实际状态?(例如,我们将此状态称为“MainMenu”)。

我应该创建一个名为“PlayingState”的附加状态,它代表整个游戏吗?我该怎么做?如何为单个状态添加新功能?你有什么想法?

c++ design-patterns game-development sfml state-pattern

2
推荐指数
1
解决办法
507
查看次数