Zキー、Yキー、どちらか押して文字を出現させるには?

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

Zキー、Yキー、どちらか押して文字を出現させるには?

#1

投稿記事 by moka777 » 14年前

コード:


#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
		 LPSTR lpCmdLine, int n[code=cpp]
CmdShow )
{
// タイトルを test に変更
SetMainWindowText( "mokaの愉快な○×ゲーム^^" ) ;

// ウインドウモードに変更
ChangeWindowMode( TRUE ) ;

// DXライブラリ初期化処理
if( DxLib_Init() == -1 )
return -1; // エラーが起きたら直ちに終了

int Cr ;

// 白色の値を取得
Cr = GetColor( 255 , 255 , 255 ) ;

// 文字列の描画
DrawString( 195 , 220 - 32 ,"-------------" , Cr ); // 横一列

// 文字列の描画
DrawString( 195 , 240 - 32 ,"-------------" , Cr ); // 横二列

// 文字列の描画
DrawString( 240 , 200 - 32 ,"l" , Cr ); // 縦一列上

DrawString( 240 , 230 - 32 ,"l" , Cr ); // 縦一列中

DrawString( 240 , 260 - 32 ,"l" , Cr ); // 縦一列下

DrawString( 260 , 200 - 32 ,"l" , Cr ); // 縦二列上

DrawString( 260 , 230 - 32 ,"l" , Cr ); // 縦二列中

DrawString( 260 , 260 - 32 ,"l" , Cr ); // 縦二列下

DrawString( 200 , 150 - 32 ,"moka「○か×か、どちらを使いますか?」" , Cr ); // ディーラーがプレイヤーに、「○(先攻)」か「×(後攻)」か問う。


DrawString( 280 , 300 - 32 ,"■" , Cr ); // カーソル


DrawString( 300 , 300 - 32 ,"○(先攻)=Z" , Cr ); // 選択肢1

DrawString( 300 , 320 - 32 ,"×(後攻)=Y" , Cr ); // 選択肢2




// Zキーの入力待ち
while( CheckHitKey( KEY_INPUT_Z ) == 0 )
{
// メッセージ処理
if( ProcessMessage() == -1 )
{
break ; // エラーが発生したらループを抜ける
}
}




DrawString( 300 , 370 - 32 ,"moka「○か……私は×ですね」" , Cr ); // 選択肢1を選択






// Yキーの入力待ち
while( CheckHitKey( KEY_INPUT_Y ) == 0 )
{
// メッセージ処理
if( ProcessMessage() == -1 )
{
break ; // エラーが発生したらループを抜ける
}
}



DrawString( 300 , 390 - 32 ,"moka「×か……私は○ですね」" , Cr ); // 選択肢1を選択





// キーの入力待ち(『WaitKey』を使用)
WaitKey() ;

DxLib_End();
return 0;
}


[/code]

 はじめまして、mokaと申します。 宜しくお願い申し上げますm(_)m
 C言語で何かゲームを作れればと思い、まずは最も簡単な〇×ゲームの作成から始めてあります。
 そこでお尋ねしたいのですが、ディーラーに「〇か×か、どちらを選びますか?」と問われ、プレイヤーが「Zキーを押せば〇、Yキーを押せば×」、というようなプログラムを作ろうとしてみたのですが……上記のソース通りで実行すると、Zキーを押せば「〇ですね?」という答えが返ってくるのですが、Yキーを押しても何も起こらないんです。Zキーを押したあとにYキーを押せば「×ですね?」と出るんですが……Zキーを押せば「〇ですね?」と、Yキーを押せば「×ですね?」という返事が来るようにするプログラムを是非教えて頂きたい。宜しくお願い申し上げますm(_)m

しひ

Re: Zキー、Yキー、どちらか押して文字を出現させるには?

#2

投稿記事 by しひ » 14年前

こんにちわ。
キーの入力を取得するために、それぞれループを作っているのが原因です。
先に、Zキーを受け取るまで抜けられないループに入ってしまうので、そこでいくらYキーを押してもループから抜けられません。
「Zキーを押すまで回り続けるループ」と「Yキーを押すまで回り続けるループ」の2つではなく、
「Zキー、もしくはYキーを押すまで回り続けるループ」を作る必要があります。

moka777

しひ様、ご助言有難うございます^^

#3

投稿記事 by moka777 » 14年前

 >しひ様

 ご助言、有難うございます^^
 そうですか、「Zキーを押すまで回り続けるループ」と「Yキーを押すまで周り続けるループ」の2つを作るのではなく、「ZキーorYキーを押すまで回り続けるループ」のプログラムを入力すれば良いわけですね^^ 早速やってみますね、有難うございましたm(_)m

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: Zキー、Yキー、どちらか押して文字を出現させるには?

#4

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

ゲームプログラムを作る時、基本となる知識が必要になりますので、よろしければこちらをお読みください。
http://dixq.net/g/
1.9章にあるプログラムのループ文の中にゲームの具体的な処理を書いていくような考え方で作っていくと良いと思います。

moka777

管理人様、有難うございます

#5

投稿記事 by moka777 » 14年前

 有難うございます、お教え頂いたサイトで勉強して参ります。

閉鎖

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