LoginSignup
0
0

More than 5 years have passed since last update.

androidでkotlinの入門 リバーシー3

Posted at

リバーシー(≒オセロ)のおまけ
前回、GitBuhに上げたコードには、一応 人対マシンのモードがありました

オセロ(リバーシ)の作り方(アルゴリズム) ~石の位置による評価~を参考
させていただき

AUTO1.kt
class AUTO1( val ban : Array<Array<GAME_STATUS.MASU_STATUS>> )  {

    // マスの重みで判断する思考パターン
    private val weight = arrayOf<Array<Int>>(
            arrayOf<Int>(  30,-12,  0, -1, -1,  0,-12, 30 ),
            arrayOf<Int>( -12,-15, -3, -3, -3, -3,-15,-12 ),
            arrayOf<Int>(   0, -3,  0, -1, -1,  0, -3,  0 ),
            arrayOf<Int>(  -1, -3, -1, -1, -1, -1, -3, -1 ),
            arrayOf<Int>(  -1, -3, -1, -1, -1, -1, -3, -1 ),
            arrayOf<Int>(   0, -3,  0, -1, -1,  0, -3,  0 ),
            arrayOf<Int>( -12,-15, -3, -3, -3, -3,-15,-12 ),
            arrayOf<Int>(  30,-12,  0, -1, -1,  0,-12, 30 )
    )

    fun actSelect() : SELECT_MASU {
        var maxW = -100
        var slectAct : SELECT_MASU = SELECT_MASU(0,0,SELECT_MASU.IN_STATUS.PASS)
        for( x:Int in 0..7) {
            for(y:Int in 0..7) {
                if ( ban[x][y] == GAME_STATUS.MASU_STATUS.READY ) {
                    // 置けるマスの中で
                    if ( weight[x][y] > maxW ) {
                        // 最も「重み」のあるマスを取る
                        maxW = weight[x][y]
                        slectAct.x = x
                        slectAct.y = y
                        slectAct.InSw = SELECT_MASU.IN_STATUS.MASU_SELECT
                        println("->"+x.toString()+","+y.toString())
                    }
                }
            }
        }
        return slectAct
    }
}

として実装しています。
actSelect() で選択マス座標を返す

ここを強くすれば、強くなります
いつか、ここ育ててみようかなと思ってます。
AIとかに興味がでていたら、実験用にちょうどいいかなと。
(かなり遠い未来の話ですが)

0
0
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
0