LoginSignup
1
1

More than 5 years have passed since last update.

androidでkotlinの入門 リバーシー

Posted at

リバーシー≒オセロです

前回のコードで、コンソールで大まかなロジックを確認して
アンドロイドスタジオにコードを持って乗って表示部を追加

盤の表示は

BOARD_DISP.kt
class BOARD_DISP(context : Context, val boardStatus : GAME_STATUS, val masuSelect : SELECT_MASU )  : View(context) {

    // 
    private val paint = Paint()
    private val res: Resources = this.getContext().getResources()     // 画像準備
    // 画像のサイズは 
    // 1マス=48×48 
    private val IMG_NORMAL: Bitmap = BitmapFactory.decodeResource(res, R.drawable.normal)
    private val IMG_READY: Bitmap = BitmapFactory.decodeResource(res, R.drawable.ready)
    private val IMG_BLACK: Bitmap = BitmapFactory.decodeResource(res, R.drawable.black)
    private val IMG_WHITE: Bitmap = BitmapFactory.decodeResource(res, R.drawable.white)
    // ボードは 48*8=384なので 384×384にしました
    private val IMG_BOARD: Bitmap = BitmapFactory.decodeResource(res, R.drawable.board)

    private val masuSize: Float = (IMG_BOARD.width / 8).toFloat()     // 1マスのサイズ
    private val fukantai: Float = masuSize / 10.0F                    // 反応しない幅

    private var boardLeft: Float = 0.0F
    private var boardTop: Float = 0.0F

    override fun onDraw(c: Canvas) {
        // 
        boardLeft = ((c.getWidth() - IMG_BOARD.width) / 2).toFloat()
        c.drawBitmap(IMG_BOARD, boardLeft, boardTop, paint)

        for (x: Int in 0..7) {
            for (y: Int in 0..7) {
                val img: Bitmap = when (boardStatus.banStatus[x][y]) {
                    GAME_STATUS.MASU_STATUS.BLACK -> IMG_BLACK
                    GAME_STATUS.MASU_STATUS.WHITE -> IMG_WHITE
                    GAME_STATUS.MASU_STATUS.READY -> IMG_READY
                    else -> IMG_NORMAL
                }
                // ステータスに応じて画像を表示
                val masuLeft = (x * masuSize + boardLeft).toFloat()
                val masuTop = (y * masuSize + boardTop).toFloat()
                c.drawBitmap(img, masuLeft, masuTop, paint)
            }
        }
    }
}

として、
各処理が終わったら
invalidate()
をコールして、ゲーム盤を表示するようにしました

reversi.png

こんな感じになります

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