Android Gomoku五子棋简析(AI 人工智能 GirdView实现,浅显易懂)
2016-11-01 14:33
711 查看
Android Gomoku五子棋简析
开发游戏,首先需要执行力,所以今天我们来简单说一下五子棋,开发思路。思路有了,做在任何一种平台上,只是语言问题。最后会公布注释详细的可直接运行的项目源代码。(Gradle Build)
原创帖,转载请注明出处,开源思想,欢迎关注探讨Github:https://github.com/Zjinji/Gomoku
作者:尽际
目录
Android Gomoku五子棋简析目录
学习流程
基础知识
UI设计
AI算法不会进攻但不会落远处空子
开始游戏
学习流程:
基础知识UI设计
AI算法
开始游戏(人机对战,双人对战)
基础知识
1、Java二维数组的理解 2、Java循环的理解 for while 3、跳转语句的理解 就这么简单,那么假设,你有一定的Java基础。这样就不难解释为什么使用二维数组来设计棋盘。
UI设计
1、棋盘这次我们不使用自定义View画布来绘制了,直接使用很常见的Android原生控件GridView,布局代码如下:
<GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00000000" android:cacheColorHint="#00000000" android:horizontalSpacing="0px" android:listSelector="#00000000" android:numColumns="14" android:stretchMode="columnWidth" android:verticalSpacing="0px" />
标准的五子棋棋盘是15 * 15的,在手机上15 * 15有点看不清楚,所以改成14列。 行数的话,本次案例使用16行的设计,即:16 * 14的设计,共 224个格子。 那么GridView的每一个Item如何设计?如果你脑洞打开了,应该想到Item全部用十字型的图片填充就可以了; 但是这样,棋盘边角处就会出现多余的横线或者竖线,所以还要判断是否为边缘区域。 接下来,当你落子时,Item图片替换为棋子样式即可。这部分内容无需赘述,大家看了代码就会明白。
AI算法(不会进攻,但不会落远处空子)
1、防守算法,没有使用网上广泛流传的评分表机制。有待优化研究学习。 即:通过判断对方本次落子点附近的对方棋子各个方向的棋子个数为可落点设置优先级level,最后优先级高的,设定为AI本次落子点。 详情见代码,注释详细。
开始游戏
1、开始游戏:运行即开始。 2、复盘功能:即游戏结束或没有结束,可以让计算机重新展示所有落子过程,每次间隔1秒。 3、重新开始:初始化游戏,开始一局新的游戏。
ok,最后两个按钮懒得替换了,大家自己换一下开心就好。最后附上截图以及源码。
源码传送门:免积分分享给大家
[Gomoku五子
84e9
棋]http://download.csdn.net/download/z279868688/9669217
PS:Github以及这里会持续更新Android有趣的开发。欢迎关注探讨。
相关文章推荐
- 关于android下面girdview item同时实现onclick和ontouch的一点心得.
- 使用vb.net实现五子棋的人工智能五子棋的AI构想
- girdview删除确认的实现
- Android LsitView的实现
- Android通过onDraw实现在View中绘图操作
- Android中实现view的更新UI有两组方法
- 【Android自学笔记之一】个性TextView自己实现
- Girdview实现滚动条效果,并且Head部分不滚动
- 【android】用camera实现view的伪3D的效果
- android----TextView如何实现无限滚动显示
- android-实现仿系统search框的autoCompleteTextView----如何调用系统的隐藏方法
- android利用WebView实现浏览器的封装
- Android自定义View设定到FrameLayout布局中实现多组件显示
- android 通过WebView与javascript实现数据交互
- 利用Android自定义View实现转盘旋转的效果
- 俄罗斯方块AI实现原理、俄罗斯方块人工智能设计、QQ游戏作弊器、火拼俄罗斯外挂、Tetris AI Design
- android利用WebView实现浏览器的封装
- android中实现view的更新UI有两组方法的问题
- Android TextView实现超链接
- android RelativeLayout属性和使用, 实现上面view叠加在下面view之上的效果