ページ 11

Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 21:58
by koma
何度も申し訳ありません
enterかspaceを押すと次の処理へ行くにはどうしたらいいでしょうか?

VC++ Dxlib win8

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 22:39
by みけCAT
抽象的な答えにくい質問だと思いますが、enterかspaceを押すと次の処理へ行くプログラムを組み、コンパイルし、実行すればいいと思います。

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 23:11
by namachan10777
よくわかりませんが、DXライブラリの関数(CheckHitKeyとかGetHitKeyStateAllとか)でキーの押下状態を監視して、エンター(KEY_INPUT_RETURN)かスペース(KEY_INPUT_SPACE(多分))が押されると次の処理を行うということでしょうか。
処理を関数にまとめてswitch文で切り替えるとかになると思います。
Javaですが、参考になるとしたらこのサイトの後半とかでしょうかhttp://www.gamecradle.net/document/main ... ction.html

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 23:29
by koma
while( CheckHitKey( KEY_INPUT_RETURN );
こうすればいいのでしょうか?
こうすると;に")"が必要ですとでるのですがどうしたらいいのでしょうか?

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 23:34
by みけCAT
koma さんが書きました:while( CheckHitKey( KEY_INPUT_RETURN );
こうすればいいのでしょうか?
こうすると;に")"が必要ですとでるのですがどうしたらいいのでしょうか?
とりあえず

コード:

while( CheckHitKey( KEY_INPUT_RETURN ));
というように;の前に)を補えばコンパイルは通るはずですが、
そんなコードは実行しても意味がありません。削除し、きちんと状態遷移を行うプログラムを書いてください。

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月24日(水) 23:57
by koma
いろんなサイトを見てもうまくいかないのですがどうしたらいいでしょうか?

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:04
by みけCAT
koma さんが書きました:いろんなサイトを見てもうまくいかないのですがどうしたらいいでしょうか?
サイトを見るだけではなく、適切なコードを書き、コンパイルし、実行する必要があります。
今書いてあるコードを見せていただけると、改善点を教えられるかもしれません。

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:09
by koma

コード:

		SetDrawScreen( DX_SCREEN_BACK ); //裏処理開始
        
		int Handle;  //データハンドル格納用変数
        Handle = LoadGraph( "images/Lotop.png" ); // 画像をロード
        DrawGraph( 0, 0, Handle, TRUE ); // データハンドルを使って画像を描画
		DrawFormatString( 380, 350,GetColor(0,0,0), "Press the Enter button"); //文字表示
		ScreenFlip(); //裏画面を表画面に反映

		WaitKey(); //キー入力待ち
		DxLib_End();   // DXライブラリ終了処理
        return 0;
} 
こんな感じです。
何度もすみません  上は少し省略してます

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:26
by みけCAT
例えばこんな感じでしょうか?

コード:

#include <DxLib.h>

void WaitEnter(void){
	// Enterが押されるまで待つ
	while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) == 0);
	// Enterが離されるまで待つ
	while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) != 0);
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
	if (ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() != 0) return -1;

	SetDrawScreen( DX_SCREEN_BACK ); //裏処理開始

	int Handle;  //データハンドル格納用変数
	Handle = LoadGraph( "images/Lotop.png" ); // 画像をロード
	DrawGraph( 0, 0, Handle, TRUE ); // データハンドルを使って画像を描画
	DrawFormatString( 380, 350,GetColor(0,0,0), "Press the Enter button"); //文字表示
	ScreenFlip(); //裏画面を表画面に反映

	WaitEnter();

	ClearDrawScreen();
	DrawFormatString( 380, 350,GetColor(255,255,255), "次の処理"); //文字表示
	ScreenFlip(); //裏画面を表画面に反映

	WaitKey(); //キー入力待ち
	DxLib_End();   // DXライブラリ終了処理
	return 0;
}

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:43
by koma

コード:

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode( TRUE ); // ウィンドウモード
		SetGraphMode(1024, 768, 32); //ウィンドウサイズ変更

		DxLib_Init();   // DXライブラリ初期化処理
		SetDrawScreen( DX_SCREEN_BACK ); //裏処理開始
        
		int Handle;  //データハンドル格納用変数
        Handle = LoadGraph( "images/Lotop.png" ); // 画像をロード
        DrawGraph( 0, 0, Handle, TRUE ); // データハンドルを使って画像を描画
		DrawFormatString( 380, 350,GetColor(0,0,0), "Press the Enter button"); //文字表示
		ScreenFlip(); //裏画面を表画面に反映

void WaitEnter(void);{  // Enterが押されるまで待つ
        while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) == 0);// Enterが離されるまで待つ
        while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) != 0);
}
		DxLib_End();   // DXライブラリ終了処理
        return 0;
} 
これでうまくいきました。ありがとうございます

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:48
by みけCAT
koma さんが書きました:

コード:

void WaitEnter(void);{  // Enterが押されるまで待つ
        while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) == 0);// Enterが離されるまで待つ
        while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_RETURN ) != 0);
}
なるほど。ぱっと見意味がわかりませんでしたが、
ダミーのプロトタイプ宣言をした後、普通のブロックに処理を入れているわけですね。
koma さんが書きました:これでうまくいきました。ありがとうございます
解決でしたら、解決チェックをお願いします。

Re: Enterかspaceを押すと次の処理へ VC++,Dxlib,win8

Posted: 2015年6月25日(木) 00:53
by koma
解決忘れてました