竜神録 第5章について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mepotaso

竜神録 第5章について

#1

投稿記事 by mepotaso » 12年前

第5章の最後に、変数の定義部とextern宣言を「main.cpp」「graph.cpp」「load.cpp」から消すと書いてありましたが、extern宣言とは「extern int ~ ;」 までの部分を全部消して、変数の定義部というのは「int ~ ;」までの部分を消せばいいのですか?教えてください。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 竜神録 第5章について

#2

投稿記事 by Dixq (管理人) » 12年前

そうです。その通りにしてうまくいきませんでしたか?

mepotaso

返信ありがとうございます

#3

投稿記事 by mepotaso » 12年前

ミスがあるかもと思い2,3回試してみたのですが、やはりうまくできません。どうしてでしょうか

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 竜神録 第5章について

#4

投稿記事 by みけCAT » 12年前

多分記述が間違っているからでしょう。
コード全体を貼っていただけますか?
もしくはPerlかなんかで変換スクリプトを書いていただくか。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

mepotaso

Re: 竜神録 第5章について

#5

投稿記事 by mepotaso » 12年前

main

#define GLOBAL_INSTANCE
#include "../include/GV.h"


//データのロード
extern void load();

//描画メイン
extern void graph_main();

int img_ch[2][12]; //キャラクタ画像9枚分 X2(変身用)
ch_t ch; //キャラクタデータ

//ループで必ず行う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();//データロード

while(ProcessLoop()==0){//メインループ

graph_main();//描画メイン

if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}

DxLib_End();//DXライブラリ終了処理
return 0;
}

load

#include "../include/GV.h"



void load(){
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
}

graph

#include "../include/GV.h"

extern ch_t ch;


void graph_ch(){
DrawRotaGraphF(ch.x,ch.y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}

void graph_main(){
graph_ch();
}

コードってこれのことですか?初心者なのでextern void のところなども消していいか分かっていません。そこのところも教えてください。お願いします。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 竜神録 第5章について

#6

投稿記事 by みけCAT » 12年前

GV.hを見せてください。
コードはcodeタグで囲んでいただけるとありがたいです。
エラーメッセージ、もしくはコンパイルが通る場合は想定する挙動と実際の挙動も貼っていただけるとありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

mepotaso

Re: 竜神録 第5章について

#7

投稿記事 by mepotaso » 12年前

コード:

#include "../../../include/DxLib.h"
#include "define.h"

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern 
#endif

#include "function.h"           //関数宣言

//画像用変数宣言部
GLOBAL int img_ch[2][12];       //キャラクタ画像9枚分 X2(変身用)

//構造体変数宣言部
GLOBAL ch_t ch;                 //キャラクタデータ宣言

これでいいんですかね?分かりにくくてすいません。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 竜神録 第5章について

#8

投稿記事 by みけCAT » 12年前

mainファイル内でGLOBAL_INSTANCEを定義したあとにincludeしたGV.hで定義されたch_t ch;と、
mainファイルで定義されたch_t ch;がかぶっています。
int img_ch[2][12];も同様です。

各ファイルの以下の行を消してください。
●mainファイル内
int img_ch[2][12]; //キャラクタ画像9枚分 X2(変身用)
ch_t ch; //キャラクタデータ

●loadファイル内(消すべき行はありません)

●graphファイル内
extern ch_t ch;

extern voidのところは(意味を厳密に特定できないので多分ですが)externを消してfunction.hに書けば、
mainファイルからは消していいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

mepotaso

Re: 竜神録 第5章について

#9

投稿記事 by mepotaso » 12年前

返信遅れてすいません。みけCAT様の通りに消したら無事動きました。詳しい説明をありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る