ページ 1 / 1
タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 05:47
by HBD
はじめまして!まだ、プログラミング初めて間もないですが、よろしくお願いします。
龍神録を参考に勉強させてもらっているのですが、分からない部分が
本格的なシューティングのように
タイトル(キープッシュ)→選択画面(キャラ、オプションなど)→ゲームスタート
という実装のプログラムの書き方がイマイチ分かりません。
main.cppと.hに多分書き込む・・・と思ってるのですが・・・すいません。
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 10:50
by kazuoni
> 書き方がイマイチ分かりません。
今現在はどこまでできているのですか?
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 12:25
by HBD
> 今現在はどこまでできているのですか?
プログラミング事態は0です。
全体の出来は大体、龍神録サイトの番号でいうと20番くらいは完成してます。
自分の「多分書き込む」というのは↓
main.cpp
#definde GLOBAL_INSTANCE
#include"../include/GV.h"
~略~
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessLoop()==0){//メインループ
music_ini();
switch(func_state){
case 0://初回のみ入る処理
load(); //データロード
first_ini();//初回の初期化
func_state=99;
break;
case 99://STGを始める前に行う初期化
ini();
load_story();
func_state=100;
break;
※ここに(タイトル・選択の処理)記入するのかと思ってます。書き方は分かりませんが
case 100://通常処理
また、同様にヘッダーファイルへの書き込み方は全く分かりません。
全画面タイトル表示→選択画面、の作り方は「ゲームプログラミングの館」の基本編33に記載されてるの参考に書き込みを、何度か自分の思うとおりに一晩組み込んでデバックしましたが、エラーが起きます。
ヒントだけでも欲しいのでお願いいたします。
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 13:18
by fatens
>ここに(タイトル・選択の処理)記入するのかと思ってます。書き方は分かりませんが
タイトル・選択の処理であれば、0と99の間に入れるものだと思います。
書き方の例としては、
//main.cpp
switch (func_state) {
case 0://初回のみ入る処理
func_state = 10;
break;
case 10://タイトル・選択の処理
//title 関数が0を返せば"STGを始める前に行う初期化"に移行する
if (title() == 0) func_state = 99;
break;
case 99://STGを始める前に行う初期化
break;
}
//title.cpp
int title()
{
//タイトル(または選択も)の処理を書く
//継続するときは非0を返し、ゲームを始めるならば0を返す
}
func_stateは本来0,10,99といった即値は使わず、enumなどでまとめるのですが今回は省略します。
あくまで龍神録向けの適当に考えた処理なので、もっと良い方法を思いついたならそちらを使ってください。
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 18:38
by HBD
>fatensさん
コメントありがとうございます^^
考え方は間違ってなかったみたいですが
まだ、自分は勉強不足ですので、後はもう少し理解したうえで
いろいろと試行錯誤しながら、やってみようと思います。
ありがとうございました^^
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月11日(木) 19:15
by fatens
先の例で、タイトルからはゲーム開始の他に終了などが選ばれる可能性があるので、それを踏まえて修正すると、
typedef enum {
SCENE_TITLE_INIT, //func_state = 0 に相当?
SCENE_TITLE, //func_state = 10
SCENE_GAME_INIT, //func_state = 99
SCENE_GAME, //func_state = 100
//...
SCENE_EXIT,
SCENE_NUM, //このシーンになることはない(有効なシーンの数を示す)
} Scene;
//(SCENE_NUMはシーンを変更する関数などを作るときに範囲を知るために利用できます)
Scene game_scene; // (func_state)
switch (game_scene) {
case SCENE_TITLE_INIT:
//...
case SCENE_TITLE:
game_scene = title();
break;
//...
}
Scene title()
{
//継続するときはSCENE_TITLEを返す。
//ゲーム開始ならSCENE_GAME_INIT、終了ならSCENE_EXITを返す
}
これまた適当なのですが、このように出来るということを知っておくと役立つことがあるかもしれません。
Re:タイトル→選択→ゲーム開始への流れ作業
Posted: 2010年3月12日(金) 19:05
by HBD
> fatensさん
態々修正まで教えてくださいまして、ありがとうございました^^
おかげさまで大体の流れは、つかめました^^
是非、参考にさせていただきます。
組み立て方は大事ですからね。助かりました!!