ページ 11

選択画面

Posted: 2009年9月18日(金) 20:04
by ディア
たびたび質問すみません。

現在、ゲームプログラミングの館 33章を見ながら、
メインメニュー画面を付けようと思っています。

ソース等は大体解ったのですが、
どのcpp内に入れればよいのでしょうか?

また、特定の項目が選択されたとき、
そこに移動するにはどうしたらよいのでしょうか。

なんか聞いてばっかりですが、
答えて頂けないでしょうか

Re:選択画面

Posted: 2009年9月18日(金) 23:11
by kazuoni
>どのcpp内に入れればよいのでしょうか?

どのように分割されているのかが把握できないので
もう少し、現在の状態を詳しく書いてください。

>特定の項目が選択されたとき、
>そこに移動するにはどうしたらよいのでしょうか。

そことは選択された場所ですか?
例えばですけど、
switch(main_flag)
{
   case 0:
      Menu();
   case 1:
      Game();

...
}
でフラグの変化をつければ、プログラムの通る場所が変わります。

Re:選択画面

Posted: 2009年9月19日(土) 09:21
by ディア
現在、龍神録プログラミングの館にて進めています。
main.cpp
char.cpp
ini.cpp
key.cpp
load.cpp
music.cpp
effect.cpp
out.cpp
cshot.cpp
graph.cpp
graph_back.cpp
enemy.cpp
enemy_act_pattern.cpp
shot.cpp
shotH.cpp
DrewPixel.cpp

があります。
もちろん、必要なら新しく追加もします。

さらに細かいことも書いた方がいいでしょうか。

>そことは選択された場所ですか?
そうです。
説明不足ですみません...

Re:選択画面

Posted: 2009年9月19日(土) 10:25
by でんすけ
33章のコード
#include "DxLib.h"
 
int GetHitKeyStateAll_2(int KeyStateBuf[/url]){
        char GetHitKeyStateAll_Key[256];
        GetHitKeyStateAll( GetHitKeyStateAll_Key );
        for(int i=0;i<256;i++){
                if(GetHitKeyStateAll_Key==1) KeyStateBuf++;
                else                            KeyStateBuf=0;
        }
        return 0;
}
 
void char_disp(int White,int y){
        DrawString( 150 , y   , "■"            , White );
        DrawString( 170 , 100 , "NEW GAME"  , White );
        DrawString( 170 , 120 , "CONTINUE1" , White );
        DrawString( 170 , 140 , "CONTINUE2" , White );
        DrawString( 170 , 160 , "CONTINUE3" , White );
        DrawString( 170 , 180 , "CONTINUE4" , White );
        DrawString( 170 , 200 , "CONTINUE5" , White );
        DrawString( 170 , 220 , "CONTINUE6" , White );
        DrawString( 170 , 240 , "LOG OUT"   , White );
}
 
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        
    int Key[256];
    int White , y=100;                                       //色とy座標の宣言
 
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
 
    White = GetColor( 255 , 255 , 255 ) ;                    //色の取得
 
 
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
          //↑メッセージ処理         ↑画面をクリア         ↑入力状態を保存       ↑ESCが押されていない
 
        char_disp(White,y);                              // 文字を描画
 
        if( Key[KEY_INPUT_DOWN]==1 ||( Key[KEY_INPUT_DOWN]%5==0 && Key[KEY_INPUT_DOWN]>30)){
        // たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
            y+=20;                                           
            if(y==260)                            // y座標が260なら(選択が一番下なら)
                y=100;                        // 選択座標を一番上に
        }
 
        ScreenFlip();//裏画面反映
    }
 
    DxLib_End();
    return 0;
}

をどこに書けばいいかってことでしょうか?

もしそうならmain.cpp内でいいと思います。
もちろん新しくcppを作ってそこに書いてもいいですよ。

Re:選択画面

Posted: 2009年9月19日(土) 23:02
by kazuoni
まず、どのようにゲーム画面の分岐をしているのかがわからないので、
これまたなんとも言えないのですが・・・

main.cppにゲーム処理を書いているのですかね?
それなら、ゲーム処理を関数化し、別ファイルで作り、
main.cppでは、ゲームフローを処理するようにすれば
いいかと思います。(前のスレで書いたswitch文の分岐みたいに)

Re:選択画面

Posted: 2009年9月21日(月) 19:45
by ディア
回答有難うございます。

頑張ってみます。