使用SDL组织游戏代码
Organization of code for a game using SDL
我已经使用SDL好几天了,在遵循了一些教程后,我决定开始开发我自己的Galaga克隆。然而,我在试图为我的代码找到一个合适的布局时遇到了一些困难。
例如,我有一个太空船类定义如下:
class Spaceship : public Sprite
{
public:
Spaceship(SDL_Surface *surface);
Spaceship(const char *filename);
void handleEvent(SDL_Event *event);
};
其中Sprite是在屏幕上保持位置的基类,依此类推。我的构造函数应该是这样的:
Spaceship::Spaceship(SDL_Surface *surface) :
Sprite(surface)
{
m_y = Game::screenHeight() - m_surface->h; //positions the ship at the bottom
}
从我所看到的情况来看,不可能使用Game::screenWidth()[static class],因为我需要包含"game.h";,它基本上是主要的游戏类;太空船.h";,基本上创建了一个无限循环(我尝试过使用#ifndef等,但没有成功)。
有可能取得这样的结果吗?
EDIT:我找到了解决这个问题的方法(我只是在cpp文件中添加了"game.h",而不是在头文件中)。
如果只想存储指向这些对象的指针或引用,则可以使用class Game;
或class Spaceship;
转发声明其中一个或两个类。如果他们将这些对象作为参数或返回它们(除了一些例外,afaik),这也是可以的。
如果你真的希望两者都有另一个的成员,那么这是不可能的,因为每个对象都会有自己的副本。
您需要打破依赖关系图中的循环。
例如,可以向您的太空船类添加一个字段,从而节省屏幕高度。
相关文章:
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 我的代码运行良好,但在游戏循环中中断
- 如何在使用 SDL 编写的游戏中仅实现一部分 OpenGL 代码?
- 康威的生命游戏C++代码检查
- 注入我的代码后游戏滞后
- 在哪里可以找到C++中流行的视频游戏代码
- 使用类创建井字游戏代码,但仅用于棋盘显示并定义玩家
- 优化代码(康威的生命游戏)
- 为什么我的代码只检查我的刽子手游戏(C ++)中单词的第一个字母
- 游戏代码体系结构源
- 将C++代码与汽车游戏连接
- C++游戏开发代码错误
- 井字游戏代码
- 为什么我的代码在 3 轮游戏后无法正确切换玩家名称?
- 组织X11和Win32简单游戏代码的最佳方式是什么
- 使用SDL组织游戏代码
- 井字游戏代码失败
- C++有人能看看我完整的基于文本的新手rpg游戏代码吗
- 我的井字游戏代码中的一个问题