作者murasakinki (mura)
看板GameDesign
标题[游戏] 自制的Android五子棋
时间Wed Oct 23 13:42:16 2013
游戏载点:
https://drive.google.com/folderview?id=0Bxh-7fIzdX14NFRNY2VfQ3I3SDQ
这是我所做的第一只APP程式
只是单纯的五子棋,同色五子连成一线就赢
有一些功能
选棋盘大小:9*9、13*13、19*19
对电脑:第一次写电脑要判断自己做事情的程式,搞了很久才搞定,有基本强度
读取棋谱:每次新局、下子时让纪录存在SD卡里的TXT档,读取时抓出来
在最新棋子标注红点:感谢朋友提供的意见,原本跟电脑下时常不知道他下到哪
讯息显示电脑下在哪里
在线上标注是第几条线,并让它跟着滑动
放大缩小是靠着按键,不是用多点触碰
悔棋:避免玩家点错
第一次写出可以拿得出来看的程式
希望大家可以给我一些建议或者意见,感谢
感觉离自己写出自创游戏还好远...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.205.184.26
1F:→ KanoLoa:XD前阵子才讨论AI很热络呢,要不分享下你的策略 10/23 15:14
我是分成直横斜斜四个方向去存成字串,然後把黑白棋分开算
之後判断是活二、死三、活三、连四,让空格的地方加上分数
最後是让他比较分数哪边比较高去下,加上一些条件(活二以下不挡、活三必档等等)
2F:推 LaPass:抓不下来 QAQ 10/23 15:41
4F:→ LaPass:可以用手机直接抓 10/23 15:44
5F:推 LaPass:电脑有时候会下在很奇怪的地方呢... 10/23 15:48
6F:推 LaPass:棋力不错呢 10/23 15:56
7F:推 LaPass:这个电脑爱防守,不下四三跑去挡我的活三,防守的权重是不 10/23 16:02
8F:→ LaPass:不是调的很高? 10/23 16:02
如果已经连四却不去档的话,可能是我哪边写错了
我是让他活三以上会先去找哪边有连四,之後找活三、死三
两边都没活三以上会判断分数高的去下
是有故意让他比较重防守,有攻击的机会应该也不会错过
※ 编辑: murasakinki 来自: 123.205.184.26 (10/23 20:13)
10F:→ LaPass:跑去挡活三 10/23 21:32
11F:→ murasakinki:感谢告知,目前正在找原因... 10/23 21:50
12F:→ murasakinki:修正完毕 10/23 22:22
13F:推 LaPass:结果是哪里出问题? (纯好奇) 10/23 22:29
15F:→ murasakinki:单纯我分数配的不当而已,让变种活三分数太低了 XD 10/23 22:37
16F:→ murasakinki:结果好像还有问题,我在研究一下orz 10/23 22:39
17F:→ murasakinki:检查了一下发现是打错数字了,已改正... 真粗心 10/23 22:44
18F:推 LaPass:wwwwww 这种事正常啦.... 10/23 22:46
19F:推 LaPass:对了,可以请问ai的写法是怎麽样呢? 10/24 20:17
其实前面就讲得差不多了
我是让他每次下完棋会先判断胜负,顺便把棋子存成四个方向的字串阵列
轮到电脑时把字串阵列抓去用,开始判断棋子的状况
用两个回圈控制,第一个回圈是第几个字串,第二个回圈是字串的第几个字开头
接着用一堆判断式判断分数
例如:取五个字,如果是NBBBN,就在两个N上面加上分数
如果是NBBNN,就在三个N上面加上分数
连四、活三的分数有设得特别的高
避免被刚好有一个点有四个死三接着之类的状况压过分数
然後把分数存到座标上(两种颜色、四种方向分开存)
最後就是把四个方向同座标的分数加起来,再去判断哪些状况可以直接下
例如连四、活三,或者可以形成双活三以上等等
没有的话,将电脑下的棋子加上分数,再比对两种颜色哪个单点分数最高
如果该色单点最高分有多个点,判断哪个点是另一色的最高分
又有多个点的话,再去随机下其中一个点
自己觉得是用很暴力的方法去算,不知道有没有更好的方法...
这种方法也没办法让电脑判断:
「下这里活三对方档,再下那里活三对方档,最後下这边就可以形成死四活三了!」
这一类状况,所以玩家故意这样下,电脑就会一败糊涂了
※ 编辑: murasakinki 来自: 123.205.184.26 (10/26 10:29)
20F:推 LaPass:唔..... 我也是用这种 10/26 13:22
21F:→ LaPass:有另外一套方式是min-max以及改良後的alpha-beta,你可以看 10/26 13:23
22F:→ LaPass:一下 10/26 13:23
23F:→ murasakinki:alpha-beta看不太懂,看来我的理解能力有待加强... 10/26 21:49