龍神録の5章を応用したプログラムが上手くいかない
Posted: 2011年9月13日(火) 12:31
何度もお世話になっています。プログラミングの勉強をしながら龍神録プログラミングの館を見ている初心者です。
龍神録の7章を応用して(とはいってもほとんど変わりませんが)プログラムを組んでみたのですが、どうも上手くいきません。
ビルドは上手くいくのですがウィンドウの中に画像が表示されず、代わりにfunc_stateのエラー用に用意された「不明なfunc_state」の文がウィンドウの上から下まで表示され続けるという結果になってしまいます。どうしたらいいか教えてください。
プログラムの内容
char.cpp graph.cpp
ini.cpp
key.cpp
load.cpp
main01.cpp
define.h
function.h
GV.h
struct.h
追記
実行結果の画像も貼りたかったのですがどうやって画像を貼るのかが分かりませんでしたorz
やり方を教えてくれると幸いです
龍神録の7章を応用して(とはいってもほとんど変わりませんが)プログラムを組んでみたのですが、どうも上手くいきません。
ビルドは上手くいくのですがウィンドウの中に画像が表示されず、代わりにfunc_stateのエラー用に用意された「不明なfunc_state」の文がウィンドウの上から下まで表示され続けるという結果になってしまいます。どうしたらいいか教えてください。
プログラムの内容
char.cpp graph.cpp
#include "../ヘッダー/GV.h"
void graph_ch(){
DrawRotaGraph(ch.x,444,1.0,0.0,img[0],TRUE);
}//graph_ch()の中にimgの0番(自機の上向き画像)の作画作業を入れる
void graph_board(){
DrawGraph(0,0,img_board[10],TRUE);
}
void graph_main(){//描画メイン
graph_ch();
}//graph_main()の中にgraph_ch()を入れる
#include "../ヘッダー/GV.h"
unsigned int stateKey[256];
int GetHitKeyStateAll_2(){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) stateKey[i]++;
else stateKey[i]=0;
}
return 0;
}
int CheckStateKey(unsigned char Handle){
return stateKey[Handle];
}
#include "../ヘッダー/GV.h"
void load(){//データをロードする
img_board[10] = LoadGraph("画像/システム/枠.png");
img_back[10] = LoadGraph("画像/背景/神社周辺.png");
LoadDivGraph("画像/キャラグラ/自機.png",12,3,4,38,41,img);
}
#define GLOBAL_INSTANCE
#include "../ヘッダー/GV.h"
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
load();//function.hの関数load()を実行する
while(ProcessLoop()==0){//ProcessLoopの内容を行う
switch(func_state){
case 0://func_stateが0の時
load();//function.hの関数load()を実行する
first_ini();//function.hの関数first_ini()を実行する
func_state = 100;//func_stateを100にする
break;
case 100:
calc_ch();//function.hの関数calc_ch()を実行する
graph_main();//function.hの関数graph_main()を実行する
break;
default://上記のcase以外の場合
printfDx("不明なfunc_state\n");
break;
}
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
//ココ!!
ScreenFlip();
}
DxLib_End();
return 0;
}
//graph.cpp
GLOBAL void graph_main();//描画メイン
//key.cpp
GLOBAL int GetHitKeyStateAll_2();//現在のキー入力を行う
GLOBAL int CheckStateKey(unsigned char Handle);//受け取ったキー番号の現在の入力状態を返す
//load.cpp
GLOBAL void load();//データをロードする
//ini.ccp
GLOBAL void first_ini();//初期化する
//char.cpp
GLOBAL void calc_ch();//画像のループさせる為の準備
#include "DxLib.h"
#include "define.h"
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
#include"function.h"//関数宣言(function.hの読み込み)
//画像用変数宣言部分
GLOBAL int img[12];//自機画像
GLOBAL int img_board[10];//枠画像
GLOBAL int img_back[10];//一面背景
//構造体変数宣言部分
GLOBAL ch_t ch;
//メインループ用変数宣言部分
GLOBAL int func_state;
typedef struct{
int cnt; //画像処理の為のカウンタ
int num; //残機数
int score; //スコア
int mutekicnt; //無敵状態とカウント
int img; //画像
double x,y; //座標
}ch_t;
追記
実行結果の画像も貼りたかったのですがどうやって画像を貼るのかが分かりませんでしたorz
やり方を教えてくれると幸いです