関数をファイルとして分ける
Posted: 2015年9月21日(月) 09:32
dxライブラリとvisualstudio2015でゲームを作っているものです
上記のコードの中でtitle関数とgame関数を別のC++ファイルとして独立させようとしました。
一部の関数はdxlib.hをインクルードすることで使えるのですがgSequenceやgHandle[7]はmain.cppで定義されているので
使えません。このようなときはどうすればいいのでしょうか?
#include "DxLib.h"
#include "keycondition.h"
#include "function.h"
enum Sequence {
SEQUENCE_TITLE,
SEQUENCE_GAME
};
const char gStageData[] = "\
#####\n\
. #\n\
# o o #\n\
#o # #\n\
# p # #\n\
#.###. \n\
### ###";
const int gStageWidth = 7;
const int gStageHeight = 7;
int Handle[gStageWidth*gStageHeight];
int gHandle[8];
int Key[256];
Sequence gSequence = SEQUENCE_TITLE;
void game(Object* state);
void title();
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(true);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
Object* state = new Object[gStageWidth*gStageHeight];
initialize(state, gStageWidth, gStageHeight, gStageData);
gHandle[0] = LoadGraph("material/objspace.png");
gHandle[1] = LoadGraph("material/objwall.png");
gHandle[2] = LoadGraph("material/objgoal.png");
gHandle[3] = LoadGraph("material/objblock.png");
gHandle[4] = LoadGraph("material/objblockongoal.png");
gHandle[5] = LoadGraph("material/objman.png");
gHandle[6] = LoadGraph("material/objmanongoal.png");
gHandle[7] = LoadGraph("material/title.png");
while (true) {
switch (gSequence) {
case SEQUENCE_TITLE:title(); break;
case SEQUENCE_GAME:game(state); break;
}
}
return 0;
}
void title() {
DrawGraph(0, 0, gHandle[7], true);
ScreenFlip();
while (gpUpdateKey(Key) == 0) {
ProcessMessage();
if (Key[KEY_INPUT_S] >= 1) {
gSequence = SEQUENCE_GAME;
return;
}
}
}
void game(Object* state) {
while (true) {
ProcessMessage();
draw(state, gStageWidth, gStageHeight, Handle, gHandle);
if (checkClear(state, gStageWidth, gStageHeight))
break;
update(state, gStageWidth, gStageHeight, Key);
Sleep(150);
}
delete[] state;
state = '\0';
DxLib_End();
}
一部の関数はdxlib.hをインクルードすることで使えるのですがgSequenceやgHandle[7]はmain.cppで定義されているので
使えません。このようなときはどうすればいいのでしょうか?