#define GLOBAL_INSTANCE
#include "myhelper.h"
#include "mymain.h"
//現在のキー入力処理を行う
extern int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
extern int CheckStateKey(unsigned char Handle);
int func_state;
//メニュー項目を3つ作る
MENU menu[3] ={
{ 80,100,"ゲームスタート"}, //タグの中身の順番で格納される。
{ 100,150,"コンフィング"},
{ 100,200,"ゲーム終了"},
};
int SelectNum; //現在の選択番号
int cnt;
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
GetHitPadStateAll(); //現在のパッド入力処理を行う
return 0;
}
void Drawtitle(){
// 計算フェーズ
if(CheckStatePad(configpad.down)>0){ // 下キーが押された瞬間だけ処理
SelectNum = ( SelectNum + 1 ) % 3; // 現在の選択項目を一つ下にずらす(ループする)
}
if( CheckStatePad(configpad.up)>0 ){ // 上キーが押された瞬間だけ処理
SelectNum = ( SelectNum + 2 ) % 3; // 現在の選択項目を一つ上にずらす(逆ループする)
}
if( (CheckStatePad(configpad.down)>0) ||(CheckStatePad(configpad.up)>0) ){ // 下キーか、上キーが押された瞬間
for( int i=0; i<3; i++ ){ // メニュー項目数である3個ループ処理
if( i == SelectNum ){ // 今処理しているのが、選択番号と同じ要素なら
menu[i].x = 80; // 座標を80にする
} else { // 今処理しているのが、選択番号以外なら
menu[i].x = 100;// 座標を100にする
}
}
}
// 描画フェーズ
for( int i=0; i<3; i++ ){ // メニュー項目を描画
DrawFormatString( menu[i].x, menu[i].y, GetColor(255,255,255), menu[i].name );
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
//load();//データロード
SelectNum = 0;
cnt = 0;
//画面サイズ(当たり判定用)の初期化
Rect2D gf = { {-64,-64}, {640+64,480+64}, 768, 608};
memcpy( &g_framerect, &gf, sizeof(Rect2D) );
//スクロール開始点の初期化
g_current_field_pos.x = 0;
g_current_field_pos.y = 0;
//ステージサイズの初期化
Rect2D gs = { {0,0}, {639,479}, 640,480} ;
memcpy( &g_stagesize, &gs, sizeof(Rect2D) );
while(ProcessLoop()==0){//メインループ
switch(func_state){
case 0:
load(); //データロード
first_ini();//初回の初期化
func_state=10;
break;
case 10:
Drawtitle();
break;
case 100:
calc_ch(); //キャラクタ計算
graph_main();//描画メイン
stage1_main();
break;
default:
printfDx("不明なfunc_state\n");
break;
}
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
タイトルメニュー
タイトルメニュー
龍神録を元にタイトルメニューを作ろうとしたのですが、どうも挙動がおかしく、軽くキーを押しただけでとても速く項目を移動しているようになります。
Re: タイトルメニュー
これは質問でしょうか?それとも単なる報告ですか?モアイ さんが書きました:龍神録を元にタイトルメニューを作ろうとしたのですが、どうも挙動がおかしく、軽くキーを押しただけでとても速く項目を移動しているようになります。
質問なのでしたら,質問文にしてくださらないと,本当は何を聞きたいのか良くわかりません.
「軽くキーを押しただけでとても速く項目を移動しているようになります」
「なるほど,そうなるのですね.分かりました.」
「・・・いや,教えてくれよ!」
「何を?」
となってしまいますよね.
やりたいのは「項目をゆっくり移動すること」なのか,「キーを押した瞬間だけ1つ移動して,それ以上押し続けても反応しなくすること」なのか.
そこらへんをはっきり質問してください.