>> ブロック崩しプログラミング入門トップに戻る
今回はバーの移動制御について説明します。
移動制御を行うということはキー状態を取得しなければなりませんが、
キー状態の取得については、main.cppのメインループで取得しています。
keyというchar型配列を定義し、それをdefine.hでextern宣言しています。
これでこの配列はこのdefine.hを取り込んだ全てのクラスで、アクセス可能になります。
バー自体の移動制御用の関数はKeyGet関数になります。
左が押されていれば、x座標を定義SPEEDの値分だけ引いています。
右なら逆に足しています。
SPEEDという定義はbar.hのファイルの中で定義しています。
#define SPEED 4
と定義しているので、1ループごとに4移動できるわけですね。
次にエスケープキーが押されたら、終了フラグ変数のendflagをtrueにしています。
1章で説明しましたが、BARクラスなどの各クラスはそのクラスをまとめる関数All関数があります。
BARクラスのAll関数では、毎回endflagというものを戻り値として返しています。
その上のCONTROLクラスでは毎回その値をチェックして、プログラムを終了させるのか判断しています。
今回の場合だとエスケープキーが押されたときにそのフラグをtrueにすることで、
CONTROLクラスにプログラムを終了するよってことを伝えているわけです。
次は画面のはみ出し制御処理です。
これはゲームプログラミング入門ページで説明しているので、
分からない方はそちらを確認して下さい。
描画関数や、このキー移動制御用関数を下記のようにAll関数でまとめて呼び出しています。
ここまででバーの描画とキーによる移動処理が出来るようになりました。
次回はボールの描画について説明します。
>> 【ボールの描画】に進む
>> ブロック崩しプログラミング入門トップに戻る
バーの移動制御
移動制御を行うということはキー状態を取得しなければなりませんが、
キー状態の取得については、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; }
ここまででバーの描画とキーによる移動処理が出来るようになりました。
次回はボールの描画について説明します。
>> 【ボールの描画】に進む
>> ブロック崩しプログラミング入門トップに戻る