ゲームプログラミングについて
ファイル分割について。(長文失礼)
scene.hファイル
#include "Dxlib.h"
#define EXTERN
#else
#define EXTERN extern
#endif
extern void Opening();
extern void Menu();
extern void Danjon();
extern void attack();
extern void Ending();
EXTERN int apple;// 画像を入れる変数
EXTERN int TITLE_CG;
EXTERN char KeyBuf[256];// キーが押されてる状態を入れる文字配列
EXTERN int Key[256]; // キーが押されているフレーム数を格納する
EXTERN int x=320, y=240;
EXTERN int function_status=0,White;
scene.cppファイル
#include "scene.h"
void Opening(){
}
void Menu(){
DrawString(100,140,"メニュー画面 (xをプッシュ)",White);
if(KeyBuf[KEY_INPUT_X]==1)
function_status=2;
}
void Danjon(){
DrawString(100,180,"ダンジョン画面 (cをプッシュ)",White);
if(KeyBuf[KEY_INPUT_C]==1)
function_status=3;
}
void attack(){
DrawString(100,220,"戦闘画面 (vをプッシュ)",White);
if(KeyBuf[KEY_INPUT_V]==1)
function_status=4;
}
void Ending(){
DrawString(100,260,"エンディング画面 (bをプッシュ)",White);
if(KeyBuf[KEY_INPUT_B]==1)
function_status=5;
}
main.cppファイル
#define _SCENE_H_
#include "scene.h"
以下(長くなるので)一部抜粋の形をとりました
void gpCalc()
{
if( Key[ KEY_INPUT_RIGHT ] >= 1 ){
x += 5 ;
}
if( Key[ KEY_INPUT_DOWN ] >= 1 ){
y += 5;
}
if( Key[ KEY_INPUT_LEFT ] >= 1 ){
x -= 5;
}
if( Key[ KEY_INPUT_UP ] >= 1 ){
y -= 5;
}
}
switch(function_status)
{
case 0:
Opening();
DrawRotaGraph( x, y, 1.0, 0.0, TITLE_CG, TRUE );
break;
case 1:
Menu();
DrawRotaGraph( x, y, 1.0, 0.0, apple, TRUE );
break;
case 2:
Danjon();
break;
case 3:
attack();
break;
case 4:
Ending();
break;
default:
return 0;
break;
}
int x,y,function_statusが何かこの文章ではわかりにくいとは思いますが、なにとぞご勘弁を。
これでF5を押すと、int x,y,function_statusの三つが既にmain.objで定義されているといわれ、エラーが出てしまいます。(念のため、一つのファイルにまとめたものは実行確認済みです)
ヘッダーファイルの書き方に問題があるのでしょうか?それとも、mainで余計なことをしてしまっているのでしょうか。
どなたか教えていただけないでしょうか。
もし必要であればmainのソースもすべて開示したいと思っています。
(おそらく書ききれると思います)
お礼
その後、プレーヤーのショートカットを…というチェックを外すとちゃんと認識してくれるようになりました。まことにありがとうございました!