一度通ったマスの色を変える
一筆書きをするためにはどのマスを通って、どのマスは通ってないのかが分からなくてはなりません。そこで、一度通ったマスの色を変えることでそれを実現したいと思います。
今回は移動したマスの識別番号が0(薄緑)だったら識別番号を3(黄色)に書き換えることで実現します。今回は色を変えるとこまでしか実装しませんので、一度通ったところも再び通ることが出来ます。また、識別番号を書き換えるのはかならず移動できたかどうかを確認してから行いましょう。もし垢マスであるかどうかを確認する前に識別番号を書き換えてしまうと全部黄色にできちゃいます。
今回は移動したマスの識別番号が0(薄緑)だったら識別番号を3(黄色)に書き換えることで実現します。今回は色を変えるとこまでしか実装しませんので、一度通ったところも再び通ることが出来ます。また、識別番号を書き換えるのはかならず移動できたかどうかを確認してから行いましょう。もし垢マスであるかどうかを確認する前に識別番号を書き換えてしまうと全部黄色にできちゃいます。
- game.cppのMovePlayer関数に通ったマスの識別番号を3に書き換える記述を追加
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--; // 戻す
Bord[Player.y][Player.x].Kind = 3; // 識別番号を書き換え
}
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++; // 戻す
Bord[Player.y][Player.x].Kind = 3; // 識別番号を書き換え
}
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--; // 戻す
Bord[Player.y][Player.x].Kind = 3; // 識別番号を書き換え
}
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++; // 戻す
Bord[Player.y][Player.x].Kind = 3; // 識別番号を書き換え
}
}
...
それぞれのif文の最後に1文書き足すだけです。なんかゲームっぽくなってきましたね。