トップページ > 過去ログ > 記事閲覧
ファイル分け
名前:御影石 日時: 2008/10/24 00:10

現在AVGゲームを作成しているのですが、シナリオスクリプトを他人に読まれたくない上、後々ページごとに特殊な処理を組み込めるようにする為に、プログラムに直接書き込む形で作ろうと思っています。 そこで、一ページ分の文字列や背景、立絵などの情報を持たせた構造体をページ数分配列定義してそれぞれに代入する形で作成しています。 現在構造体の定義やページ情報の代入、スクリプトエンジン部分が全て同じファイル内に書かれているのですが、スクリプト部分が肥大化してきたためそれを別なcppファイルに分けたいと考えております。 winmain関数からスクリプトを読み込む関数を呼び出している状態で、今後スクリプトファイル数は増えていくと思われるのですが、どのように書き換えていけばよろしいでしょうか? 特にどのファイルに何を書いてどういう風にインクルードして繋げればいいのかがよく分からないのでお願いします。 あと構造体のメンバ変数はページ情報の代入時とスクリプトエンジン関数内でしか使用しておりません。 下に必要そうなコードだけ端折って書きます。 //winmain.cpp void AVGFunc(); //スクリプトエンジン関数のプロトタイプ宣言 #define Page0 10 //Page==そのシーンごとのページ数 #define Page1 10 struct AVG { //ページ情報を代入する構造体定義 char AVGText[120]; //文面 char AVGTextName[40]; //名前 } AVG AVGTrack0[Page0]; //Track=シーン数 AVG AVGTrack1[Page1]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ for(int a=0;a<Page0;a++){ //シーン1の代入 switch(a){ case 0: strcpy(AVGTrack0[a].AVGText,"てすと@"); strcpy(AVGTrack0[a].AVGTextName,"御影石"); break; case1: strcpy(AVGTrack0[a].AVGText,"以下ページ数分続く@"); strcpy(AVGTrack0[a].AVGTextName,"御影石"); break; } } for(;;){ //メインループのつもり AVGFanc(); //スクリプトエンジン関数呼び出し } } void AVGFanc(){ //スクリプトエンジン部分 } これを出来れば下のような形に近づけるようなイメージでお願いします。 //winmain.cpp void AVGFunc(); #define Page0 10 //Page==そのシーンごとのページ数 #define Page1 10 struct AVG { char AVGText[120]; //文面 char AVGTextName[40]; //名前 } AVG AVGTrack0[Page0]; //Track=シーン数 AVG AVGTrack1[Page1]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ for(;;){ //メインループのつもり AVGFanc(); //スクリプトエンジン関数呼び出し } } void AVGFanc(){ //スクリプトエンジン部分 } //track00.cpp for(int a=0;a<Page0;a++){ //シーン1の代入 switch(a){ case 0: strcpy(AVGTrack0[a].AVGText,"てすと@"); strcpy(AVGTrack0[a].AVGTextName,"御影石"); break; case1: strcpy(AVGTrack0[a].AVGText,"以下ページ数分続く@"); strcpy(AVGTrack0[a].AVGTextName,"御影石"); break; } } //track01.cpp for(int a=0;a<Page0;a++){ //シーン1の代入 switch(a){ case 0: strcpy(AVGTrack1[a].AVGText,"てすと@"); strcpy(AVGTrack1[a].AVGTextName,"御影石"); break; case1: strcpy(AVGTrack1[a].AVGText,"以下ページ数分続く@"); strcpy(AVGTrack1[a].AVGTextName,"御影石"); break; } }

Page: 1 |

Re: ファイル分け ( No.1 )
名前:管理人 日時:2008/10/25 17:17

cpp に分けるとなると最低でも関数レベルで分割する必要がありますが、 ソースも #include で挿入できることをご存知ですか? 例えば main.cpp だけの九九を表示する以下のようなプログラム #include <stdio.h> void main( void ) { int i, j ; for( i = 1; i < 10; i ++ ) { for( j = 1; j < 10; j++ ) { printf( "%d × %d = %d\n", j, i, j * i ) ; } } } main 関数の中身だけをぶっこ抜いて main.h にすることができます ===== main.cppの内容 ====== #include <stdio.h> void main( void ) { #include "main.h" } =========================== ===== main.hの内容 ======== int i, j ; for( i = 1; i < 10; i ++ ) { for( j = 1; j < 10; j++ ) { printf( "%d × %d = %d\n", j, i, j * i ) ; } } =========================== この仕組みを使えば現在のソースファイル一つだけで組む手法で ファイル分割をできる(ファイル肥大化に対応できる)と思うのですが、 如何でしょうか?
Re: ファイル分け ( No.2 )
名前:御影石 日時:2008/10/25 17:51

なるほど、解決しました! そういう方法もあったのですね まだまだ勉強中の身ですので、また質問に伺うことがあるかもしれませんが、そのときはまたよろしくお願いします!

Page: 1 |