LoginSignup
0
1

More than 5 years have passed since last update.

kotlin + コンソールでリバーシ

Posted at

リバーシー≒オセロ 
オセロと大人の事情で言えないそうです
ですのでリバーシー

アンドロイドスタジオを入れているPCは、何とか動くレベルで
エミュレータを動かすとかなりストレスのかかる環境

ロジックを確認する時には、アンドロイドスタジオを使はないでコンソールに出力してデバックしてました

    fun boardDisp() {
        println("   a b c d e f g h")
        println("   -----------------")
        for( y : Int in 0..7) {
            print((y+1).toString() + "|")
            for( x : Int in 0..7) {
                var z : String = when(boardStatus.banStatus[x][y]) {
                    GAME_STATUS.MASU_STATUS.READY -> " 0"
                    GAME_STATUS.MASU_STATUS.WHITE -> " 1"
                    GAME_STATUS.MASU_STATUS.BLACK -> " 2"
                    else -> " ."
                }
                print(z)
            }
            println("")
        }
    }

こんなコードを使って
osero.png

こんな感じで表紙させて、デバックしていました

1マスのステータスを

    enum class  MASU_STATUS( val indxVal : Int) {
        NORMAL(0),         // 何でもなし
        READY(1),          // 置いていい
        BLACK(2),          // 黒
        WHITE(3),          // 白
        OUT_RANGE(4),
    }

の5種類で表し、盤は8X8の配列して

    var banStatus  =  Array(8, {Array(8, {MASU_STATUS.NORMAL })})

駒から8方向のベクトルを

    enum class VECTOR(val intVal : Int ) {
        UP(0),
        RIGHT_UP(1),
        RIGHT(2),
        RIGHT_DOWN(3),
        DOWN(4),
        LEFT_DOWN(5),
        LEFT(6),
        LEFT_UP(7),
    }

順番に調べていく
・自駒、敵駒以外の場合はそこで検索終了
・敵駒の場合は、1つ距離を延ばす
・自駒場合、距離は2以上の場合は、敵駒が取れる

このロジックができると後はそれっぽく
それらしいコードはここに置きました

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1