介绍
使用芬兰湾的科特林怎么实现一个五子棋单机游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
五子棋界面
package wjc.kotlintest import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet import android.view.View class MyCustomView : View { ,var 油漆:Paint =,油漆() ,var paintWhite: Paint =,油漆() ,var paintBlack: Paint =,油漆() ,val H: Int =, 12 ,val V: Int =, 12 ,var list =, arrayListOf()//白子和黑子 ,var listW =, arrayListOf()//白子 ,var listB =, arrayListOf()//黑子 ,var wSuccess: Boolean =, false //白旗获胜标志 ,var bSuccess: Boolean =, false //黑棋获胜标志 ,init { paintWhite.color 才能=Color.WHITE paintWhite.style 才能=Paint.Style.FILL paintBlack.color 才能=Color.BLACK paintBlack.style 才能=Paint.Style.FILL ,} ,构造函数(上下文:上下文),:,这(上下文,null) ,构造函数(上下文:上下文,attr:, AttributeSet ?),:,这(上下文,attr,, 0) ,构造函数(上下文:上下文,attr:, AttributeSet ?,, defStyleAttr:, Int),:,超级(attr,上下文,还以为;defStyleAttr) ,override fun  onMeasure (widthMeasureSpec: Int, heightMeasureSpec:, Int), { super.onMeasure才能(widthMeasureSpec, heightMeasureSpec) val 才能widthMode: Int =, MeasureSpec.getMode (widthMeasureSpec) val 才能widthSize: Int =, MeasureSpec.getSize (widthMeasureSpec) val 才能heightMode: Int =, MeasureSpec.getMode (heightMeasureSpec) val 才能heightSize: Int =, MeasureSpec.getSize (heightMeasureSpec) if 才能;(widthMode ==, MeasureSpec.AT_MOST ,,, heightMode ==, MeasureSpec.AT_MOST), { ,,setMeasuredDimension (760,, 760) ,,},else if (widthMode ==, MeasureSpec.AT_MOST), { ,,setMeasuredDimension (760, heightSize) ,,},else if (heightMode ==, MeasureSpec.AT_MOST), { ,,setMeasuredDimension (widthSize, 760) ,,} ,} ,override fun 画(帆布,帆布?),{ super.draw才能(帆布) for 才能;(小姐:0 . . H)拷贝,{ ,,帆布! ! .drawLine (20 f, 20 f +, 60, *,我,,740 f,, 20 f +, 60, *,我,,油漆) ,,} for 才能;(j 拷贝0 . . V), { ,,帆布! ! .drawLine (20 f +, 60, *, j, 20 f, 20 f +, 60, *, j, 740 f,,油漆) ,,} if 才能;(listW.size !=, 0), { ,,for (item listW拷贝),{ ,,,帆布! ! .drawCircle (item.point.x *, 60, +, 20 f, item.point.y *, 60, +, 20 f, 15 f, paintWhite) ,,} ,,} if 才能;(listB.size !=, 0), { ,,for (item listB拷贝),{ ,,,帆布! ! .drawCircle (item.point.x *, 60, +, 20 f, item.point.y *, 60, +, 20 f, 15 f, paintBlack) ,,} ,,} ,} ,fun addData(数据:数据),{ if 才能;(list.size ==, 0), { ,,list.add(数据) ,,listW.add(数据) ,才能回来 ,,} if 才能;(!选择(数据)),{ ,,list.add(数据) ,,if (listW.size ==, listB.size), { ,,,//白旗是否获胜 ,,,wSuccess =, isSuccess(数据,listW) ,,,//白旗走 ,,,listW.add(数据) ,,},{else ,,,//黑棋是否获胜 ,,,bSuccess =, isSuccess(数据,listB) ,,,//黑棋走 ,,,listB.add(数据) ,,} ,,} ,} ,fun 选择(数据:数据):,Boolean { for 才能;(item 拷贝列表),{ ,,if (data.equals(项目)) ,,,return 真实的 ,,} return 才能;错误的 ,} ,fun isSuccess(数据:数据,进行:,List):, Boolean { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null使用芬兰湾的科特林怎么实现一个五子棋单机游戏