ゲームプログラミングの館
http://dixq.net/g/#33
の選択画面を作成中ゲームのスタート画面(と言うより最初の画面・・?)に使おうと思って
自分なりにコードを変えてみました。
#include "DxLib.h" void char_disp(int White,int y){ DrawString( 200 , y , "⇒" , White ); DrawString( 220 , 300 , "A" , White ); DrawString( 220 , 320 , "B" , White ); DrawString( 220 , 340 , "C" , White ); DrawString( 220 , 360 , "D" , White ); DrawString( 220 , 380 , "E" , White ); } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1; int White , y=300; //色とy座標の宣言 White = GetColor( 255 , 255 , 255 ) ; //色の取得 while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ ClsDrawScreen(); char_disp(White,y); // 文字を描画 //移動 int key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if( key & KEY_INPUT_DOWN==1 ||( key & KEY_INPUT_DOWN%5==0 && key & KEY_INPUT_DOWN>30)){ y+=20; if(y==400) y=300; } if( key & KEY_INPUT_UP==1 ||( key & KEY_INPUT_UP%5==0 && key & KEY_INPUT_UP>30)){ y-=20; if(y==280) y=380; } //決定 if( key & KEY_INPUT_Z ){ if(y==380) DxLib_End(); //終了 } ScreenFlip();//裏画面反映 } DxLib_End(); return 0; }↑↓キーで矢印を動かして、Zキーが押されたら、矢印の座標に応じて動作を
するプログラムになると思ったのですが、
実行して見たところ、上下の移動がおかしく(?)なりました。。
どこがおかしいのか、考えましたがよくわかりません。
どの部分の書き方がおかしいのか教えてください。。。