ゲームプログラミングの館
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キーが押されたら、矢印の座標に応じて動作をするプログラムになると思ったのですが、
実行して見たところ、上下の移動がおかしく(?)なりました。。
どこがおかしいのか、考えましたがよくわかりません。
どの部分の書き方がおかしいのか教えてください。。。