ページ 11

タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:18
by Ultimate
#include "DxLib.h"

#define Menu 0
#define Play 1
#define Help 2
#define Play2 3

~~~~~~~~略~~~~~~~~~

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;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
SetMainWindowText("Block Break") ;
ChangeWindowMode(TRUE);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);




~~~~略~~~~



while(ProcessMessage() != -1)
{
ClearDrawScreen();
SetDrawBright( 255 , 255 , 255 );




if(key[KEY_INPUT_ESCAPE])
{
break;
}



switch(GameFlag){
case Menu:
randcolor=GetColor(GetRand(255),GetRand(255),GetRand(255));
DrawGraph(0,0,back,FALSE);
SetFontSize(70);
DrawString(120,0,"Block Break",black);
if(menu==0){
mcount=0;
SetFontSize(50);
DrawString(120,100,"EASY",randcolor);
SetFontSize(30);
DrawString(120,190,"HARD",BLACK);
DrawString(120,270,"操作方法",BLACK);
if(( key[KEY_INPUT_Z]%5==0 && key[KEY_INPUT_Z]>30)){
GameFlag=Play;
}
if(( key[KEY_INPUT_DOWN]%5==0 && key[KEY_INPUT_DOWN]>30)){
menu=1;
}
}
if(menu==1){
mcount=0;
SetFontSize(30);
DrawString(120,100,"EASY",BLACK);
SetFontSize(50);
DrawString(120,190,"HARD",randcolor);
SetFontSize(30);
DrawString(120,270,"操作方法",BLACK);
if(( key[KEY_INPUT_Z]%5==0 && key[KEY_INPUT_Z]>5)){
GameFlag=Play2;
}
if(( key[KEY_INPUT_UP]%5==0 && key[KEY_INPUT_UP]>5)){
menu=0;
}
if(( key[KEY_INPUT_DOWN]%5==0 && key[KEY_INPUT_DOWN]>5)){
menu=2;
}
}
if(menu==2){
mcount=0;
SetFontSize(30);
DrawString(120,100,"EASY",BLACK);
DrawString(120,190,"HARD",BLACK);
SetFontSize(50);
DrawString(120,270,"操作方法",randcolor);
if(( key[KEY_INPUT_Z]%5==0 && key[KEY_INPUT_Z]>30)){
GameFlag=Help;
}
if(( key[KEY_INPUT_UP]%5==0 && key[KEY_INPUT_UP]>30)){
menu=1;
}
}
ScreenFlip();
break;


キーが反応しません。
なぜでしょうか?
非常に急いでいます。

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:25
by シエル
まずGetHitKeyStateAll_2っていう関数はちゃんと呼び出してるの?

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:28
by Ultimate
呼び出すとは?

どこにどう打てばいいのでしょうか?

急いでいるので先に教えていただきたいです。

意味と使い方はのちほど詳しく勉強しますのでお願いします。

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:42
by シエル
GetHitKeyStateAll_2っていう関数を見る限り、そのキーが押されてたら、
渡したint型配列のカウントが増えていくっていうものですよね。
もし次フレームで押されなかったら0に戻るんですよね?

で、その配列がこのkey[/url]っていう配列だと。

if(( key[KEY_INPUT_Z]%5==0 && key[KEY_INPUT_Z]>5))とかのif文見ると、
そのカウントがある一定回数以上おされてて、かつ五回に一回処理するようにしてますよね?

ということはこの配列に値が入ってないと何も動かないことになります。

なので、GetHitKeyStateAll_2という関数を毎フレームごとに呼び出すようにすれば、
key[/url]っていう配列にそのキーのカウント数が入るはずなので、あなたが期待するような動作になるはずです。

つまり、GetHitKeyStateAll_2(key)ってすれば動くと思います。
必ず毎フレームごとに呼び出すようにして下さいね。

最後に、ゲームプログラミングの館をもう一度しっかり勉強することを強くお勧め致します。

以上。 画像

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:48
by Ultimate
解決しました。

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:49
by Ultimate
うまくいきました。
本当にありがとうございました。
勉強しなおします。

Re:タイトル画面作成 超大至急

Posted: 2010年10月01日(金) 22:57
by Dixq (管理人)
直接関係ないですが
SetFontSizeは使わない方が良いです。
多用すると一瞬画面が固まりませんか?
フォントは作って、フォントハンドルを使って描画する方が良いですよ。