好的,基本上我需要使用Allegro 5和C ++创建一个简单的游戏。我想将它拆分为单独的模块,以便更容易管理。我的问题是:管理"移动"的正确方法是什么?不同文件之间?具体来说,我想要一个名为Menu.cpp的文件,它将是主文件,然后根据用户选择的内容,它执行其他文件中指定的操作,如Singleplayer.cpp或Options.cpp(是这甚至是一个好方法?)。我的想法就是这样做:
//Menu.cpp
#include "Singleplayer.h"
int main()
{
int parameter;
if(user_selects_singleplayer) singleplayer(parameter);
return 0;
}
//Singleplayer.cpp
void singleplayer(int parameter)
{
...
handle_singleplayer
...
}
//Singleplayer.h
#ifndef SINGLEPLAYER_H
#define SINGLEPLAYER_H //or maybe #pragma once ?
void singleplayer(int parameter);
#endif
我想知道它是否是一种正确的方法,如果是这样,我是否应该在Singleplayer.cpp中使用main()函数(以及如何更改文件以使其成为如果我需要在Singleplayer.cpp中包含Singleplayer.h。
在我的例子中,我省略了一些东西,比如包括allegro库,初始化更多变量等,以使一般的想法更清晰。另外我还要注意,我不能使用类和流(我知道它是愚蠢的,但它是一个要求,因为这个项目是编程类的家庭作业)。
编辑:@Leiaz链接的问题是相关的,对它的回答肯定有助于理解标题是如何工作的,但我的问题更多是关于正确的设计方法。无论如何,感谢答案,我一定会读到这个主题。答案 0 :(得分:0)
以下是一些适用于大多数情况的规则:
每个cpp文件都有一个包含在cpp
中的h文件 main.cpp
包括main.h
,
Singleplayer.cpp
包括Singleplayer.h
类定义和函数原型都在头文件中,实现在cpp文件中
h:int add(int x, int y);
cpp:int add(int x, int y){ return x+y; }
仅包含头文件,从不包含cpp文件
避免多个定义问题,因为标题有代码保护(你的定义)而cpp没有
仅包含实际需要的文件以减少编译时间
不要制作包含每个标题的all.h
。
如果可能,请在cpp文件中包含h文件。如果需要,只在标题中包含它。
缩短编译时间并避免循环引用
你应该研究如何正确设计一个c ++项目来理解它背后的原理。