メニュー画面の作成

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

メニュー画面の作成

#1

投稿記事 by gdu » 15年前

はじめまして。
最近、四聖龍神録をPlayさせていただき自分でも作ってみようと思い、
C++、DXLibを勉強しながら現在作成中です。

とりあえず「龍神録プログラミングの館」を一通り(50章まで)みて
STGの構成については大体わかり、オリジナルのステージは作成できたのですが。
50章の状態で実行するといきなりゲームが始まってしまうので、
その前にメニュー選択画面を表示してそこからゲームスタートなどを
したいと思っています。

ですが、なにしろまだC++、DXLibを勉強して一ヶ月ぐらいで、
どこをどのようにしたら出来るのかがいまいち把握し切れてないので、
よろしければアドバイスなどをいただけないでしょうか?

(出来ればconfig設定等もそこでやりたいと思っています)
画像

やっくん

Re:メニュー画面の作成

#2

投稿記事 by やっくん » 15年前

以下は私が製作中のRPGのメニュー画面を簡素化した物です。
DxLibを用いています。
void title_gamen()
{
    int y  = 300;
    int title = LoadGraph("dat/gazou/ini/title.png"); // タイトル画像ハンドル
    int White = GetColor(255,255,255);

    while(!ProcessMessage() && !GetHitKeyStateAll_2(Key) && !ClearDrawScreen() && !Key[KEY_INPUT_ESCAPE]){
      
      DrawGraph( 0 , 0 , title , FALSE ) ;      //タイトル表示

      DrawString( 260 , y   , "→"    , White ); //  矢印(選択を示す)
      DrawString( 280 , 300 , "はじめから"  , White );
      DrawString( 280 , 320 , "つづきから"  , White );
    
      // もし『はじめから』(y=300)でボタンが押されたら
      if(y == 300 && Key[KEY_INPUT_RETURN] == 1){
          /* 初期化処理 */
          ClearDrawScreen();
          return ;
      }
      // もし『つづきから』(y=320)でボタンが押されたら
      if(y == 320 && Key[KEY_INPUT_RETURN] == 1){
          bool hh = load_gamen(mc_temp); // ロード画面へ
          ClearDrawScreen();
          if(hh == true) return; // もしロード成功したらゲーム開
          else continue;         // そうでなければループを続ける。
      }
      if( Key[KEY_INPUT_DOWN]==1 || ( Key[KEY_INPUT_UP]%5==0 && Key[KEY_INPUT_UP]>30)){
           // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
              y+=20;
              if(y==340){  // y座標が200なら(選択が一番下なら)
                y=300;     // 選択座標を一番上に
       }
      }
      if( Key[KEY_INPUT_UP]==1 || ( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
           // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
              y-=20;
           if(y==280){  // y座標が200なら(選択が一番下なら)
                y=320;     // 選択座標を一番上に
              }
      }
           ScreenFlip();
    }
}
↓↓ソースの説明↓↓

画面を表示しています。
ここではタイトルの名前を出したり、『初めから』『続きから』などを表示してます。
矢印のy座標に変数を用いていますが、これは現在どこを指し示しているかを表すために変数としています。


ここでは矢印のy座標がある場所でReturn(Enter)キーが押されたら、それに見合う処理を行うようにしています。
私の場合は『初めから』では主人公に関するデータを初期化し、この関数を抜けてゲーム開始としています。
『続きから』ではロード画面に飛んでデータをロードするようにしています。


矢印のy座標を変化させる働きを担っています。
↓キーや↑キーが押されたらy座標の値を変化させています。


私は上記の様に3つの役割に分けています。
ただ、このソースでは選択肢の選択をするために矢印を用いていますが、画像を用いたり、選択されている物は色を変えるなどをすると見た目が良くなると思います。
参考になれば幸いです。 画像

gdu

Re:メニュー画面の作成

#3

投稿記事 by gdu » 15年前

返答遅くなりすいません。

やっくん さん
のソースを元に作成してみたところ
無事メニュー画面を作ることが出来ました。

閉鎖

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