>> ブロック崩しプログラミング入門トップに戻る

バーの移動制御

今回はバーの移動制御について説明します。

移動制御を行うということはキー状態を取得しなければなりませんが、
キー状態の取得については、main.cppのメインループで取得しています。
keyというchar型配列を定義し、それをdefine.hでextern宣言しています。
これでこの配列はこのdefine.hを取り込んだ全てのクラスで、アクセス可能になります。

バー自体の移動制御用の関数はKeyGet関数になります。

void BAR::KeyGet()
{

	if(key[KEY_INPUT_LEFT] == 1){
		//左に移動。
		x-=SPEED;
	}
	if(key[KEY_INPUT_RIGHT] == 1){
		//右に移動
		x+=SPEED;
	}
	if(key[KEY_INPUT_ESCAPE] == 1){
		//エスケープキーが押されていれば終了フラグをtrueにする
		endflag=true;
	}

	//画面のはみ出し処理
	if(x<width/2)
		x=width/2;

	if(x>WIDTH-width/2)
		x=WIDTH-width/2;

}


左が押されていれば、x座標を定義SPEEDの値分だけ引いています。
右なら逆に足しています。
SPEEDという定義はbar.hのファイルの中で定義しています。
#define SPEED 4
と定義しているので、1ループごとに4移動できるわけですね。

次にエスケープキーが押されたら、終了フラグ変数のendflagをtrueにしています。
1章で説明しましたが、BARクラスなどの各クラスはそのクラスをまとめる関数All関数があります。
BARクラスのAll関数では、毎回endflagというものを戻り値として返しています。
その上のCONTROLクラスでは毎回その値をチェックして、プログラムを終了させるのか判断しています。
今回の場合だとエスケープキーが押されたときにそのフラグをtrueにすることで、
CONTROLクラスにプログラムを終了するよってことを伝えているわけです。

次は画面のはみ出し制御処理です。
これはゲームプログラミング入門ページで説明しているので、
分からない方はそちらを確認して下さい。

描画関数や、このキー移動制御用関数を下記のようにAll関数でまとめて呼び出しています。

bool BAR::All()
{
	
	//キー処理
	KeyGet();

	//描画処理
	Draw();

	//終了フラグを返す。
	return endflag;

}


ここまででバーの描画とキーによる移動処理が出来るようになりました。
次回はボールの描画について説明します。

>> 【ボールの描画】に進む
>> ブロック崩しプログラミング入門トップに戻る