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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ultimate

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

#1

投稿記事 by Ultimate » 15年前

#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:タイトル画面作成 超大至急

#2

投稿記事 by シエル » 15年前

まずGetHitKeyStateAll_2っていう関数はちゃんと呼び出してるの?

Ultimate

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

#3

投稿記事 by Ultimate » 15年前

呼び出すとは?

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

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

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

シエル

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

#4

投稿記事 by シエル » 15年前

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)ってすれば動くと思います。
必ず毎フレームごとに呼び出すようにして下さいね。

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

以上。 画像

Ultimate

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

#5

投稿記事 by Ultimate » 15年前

解決しました。

Ultimate

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

#6

投稿記事 by Ultimate » 15年前

うまくいきました。
本当にありがとうございました。
勉強しなおします。

Dixq (管理人)

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

#7

投稿記事 by Dixq (管理人) » 15年前

直接関係ないですが
SetFontSizeは使わない方が良いです。
多用すると一瞬画面が固まりませんか?
フォントは作って、フォントハンドルを使って描画する方が良いですよ。

閉鎖

“C言語何でも質問掲示板” へ戻る