リバーシー≒オセロ
オセロと大人の事情で言えないそうです
ですのでリバーシー
アンドロイドスタジオを入れている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("")
}
}
こんな感じで表紙させて、デバックしていました
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以上の場合は、敵駒が取れる
このロジックができると後はそれっぽく
それらしいコードはここに置きました