通れるマス、通れないマスを作る
いかにもゲームらしくなってきました。今回はステージ情報に応じて移動を制御します。
識別番号1(赤マス)を通れないようにします。今回はキー入力されて移動しようとしたとき、移動先が1(赤マス)だったら元に戻すという方法で実現します。
識別番号1(赤マス)を通れないようにします。今回はキー入力されて移動しようとしたとき、移動先が1(赤マス)だったら元に戻すという方法で実現します。
- game.cppのMovePlayerに赤マスへは移動できないように追加
game.cpp
...
void MovePlayer(){
if( Key[KEY_INPUT_RIGHT] == 1 ){ // 右が押されたら
Player.x++; // x座標を増やす
if( Player.x == 8 ) // 飛び出たら
Player.x--; // 戻す
if( Bord[Player.y][Player.x].Kind == 1 ) // 赤マスだったら
Player.x--; // 戻す
}
if( Key[KEY_INPUT_LEFT] == 1 ){ // 左が押されたら
Player.x--; // x座標を減らす
if( Player.x == -1 ) // 飛び出たら
Player.x++; // 戻す
if( Bord[Player.y][Player.x].Kind == 1 ) // 赤マスだったら
Player.x++; // 戻す
}
if( Key[KEY_INPUT_DOWN] == 1 ){ // 下が押されたら
Player.y++; // y座標を減らす
if( Player.y == 8 ) // 飛び出たら
Player.y--; // 戻す
if( Bord[Player.y][Player.x].Kind == 1 ) // 赤マスだったら
Player.y--; // 戻す
}
if( Key[KEY_INPUT_UP] == 1 ){ // 上が押されたら
Player.y--; // y座標を増やす
if( Player.y == -1 ) // 飛び出たら
Player.y++; // 戻す
if( Bord[Player.y][Player.x].Kind == 1 ) // 赤マスだったら
Player.y++; // 戻す
}
}
これで赤マスに移動することが出来なくなりました。
もちろん新しく追加したif文と前のif文を論理演算子を用いてまとめてもいいです。そうしたほうが短く、見やすくなります。ここでは追加したことを分かりやすくするために別々に書いただけです。
もちろん新しく追加したif文と前のif文を論理演算子を用いてまとめてもいいです。そうしたほうが短く、見やすくなります。ここでは追加したことを分かりやすくするために別々に書いただけです。