VC++を使うことに決めましたが、結構便利ですね。
FifthCannonを作り始めてから1年。少しは成長したでしょうか。
少なくとも、前のプログラムを流用したりしてるので、1段目から登らなきゃいけない、ということはなさそうです。
今回は、前回の反省を生かし最初からファイル分割、関数化などを意識しています。
もう1ファイル1万行なんてことはなくなるでしょう。
こういったことは小規模ではあっても、ゲームを実際に作って感じたことなので、やはり経験が重要なのだと思いました。
このゲームも、ステップアップしたからすごいのが作れる!とは思うものの、結局は次のステップのための一歩になるのでしょうね。
それが己の未熟さを知ることであり、成長にダイレクトに繋がるのだと思います。
そんなわけで早速詰む。
ookamiさんとGRAMさん、Chocolaさんに手伝っていただいて、解決しました。本当にありがとうございました。
原因はincludeとextern関係です。
いまいちどうすればいいのかわかりませんあれ・・・。
私は、煩雑になるのでmain.cppに変数を宣言したくなくて分割したところで宣言したんですが、それがいけないようで。
でもそうするとグローバル変数を宣言するたびにmain.cppが長くなる・・・(-_-;)
そんなわけで今日の成果。ほとんど龍神録プログラミングの館やsoftyaさんの講座を参考にさせていただいたコードですね。
他山の石にはなるのではと思ったので、コードは載せちゃいます。
あとできれば添削して欲しいなあなんて思ったり・・・。
main.cpp
//弾幕STGRPG
#include "DxLib.h"
#include "main.h"
#include "init.h"
#include "main_base.h"
#include "draw.h"
//平均fps
double ave;
//キー入力保存変数
int Key[256];
CColor color;
GameState gamestate = GAMESTATE_INIT;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
INIT();//初期化
while(!ProcessMessage() && !GetHitKeyStateAll_2( Key ) && Key[KEY_INPUT_ESCAPE]0)//待つべき時間だけ待つ
Sleep(term);
gnt=GetNowCount();
if(fps_count==0)//60フレームに1度基準を作る
count0t=gnt;
f[fps_count]=gnt-t;//1周した時間を記録
t=gnt;
//平均計算
if(fps_count==FLAME-1)
{
*ave=0;
for(i=0;i<FLAME;i++)
*ave+=f[i];
*ave/=FLAME;
}
fps_count = (++fps_count)%FLAME ;
}
#endif
#include "DxLib.h"
#include "init.h"
#include "main.h"
int INIT()
{
// SetOutApplicationLogValidFlag(TRUE); //ウィンドウのサイズは640×480
if (MessageBox(NULL, "フルスクリーンモードにしちゃいますか?", "InvisibleFeather", MB_YESNO) == IDNO)
{
ChangeWindowMode(TRUE);
}
// タイトルを変更
SetMainWindowText( "InvisibleFeather" ) ;
//SetGraphMode(WINDOW_MAX_X , WINDOW_MAX_Y, 16 ) ; //なくてもいい
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1 ; // エラーが起きたら直ちに終了
}
// 描画可能領域セット
SetDrawArea( 0 , 0 , WINDOW_MAX_X , WINDOW_MAX_Y ) ;
//常にアクティブに
SetAlwaysRunFlag( TRUE) ;
// 描画先を裏画面に設定
SetDrawScreen( DX_SCREEN_BACK ) ;
//色代入
color.white= GetColor(255,255,255);
color.black=GetColor(0,0,0);
color.gray = GetColor(128,128,128);
color.red= GetColor(255,0,0);
color.blue=GetColor(0,0,255);
color.yellow=GetColor(255,255,0);
color.orange=GetColor(255,128,0);
color.aqua= GetColor(0,255,255);
color.green = GetColor(0,255,0);
color.perple= GetColor(255,0,255);
color.Bgreen=GetColor(0,128,0);
color.Lgreen = GetColor(128,255,128);
return 0;
}