数学建模社区-数学中国

标题: 五子棋算法 [打印本页]

作者: 厚积薄发    时间: 2010-5-31 17:42
标题: 五子棋算法
五子棋算法
/ Z) @! G$ i8 X* W; c3 a) y) c5 G' z; |% d7 j: d( P
0 P: b, T; P) a: M
任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在打分之前,我们先扫描
: \5 i( D! G  r0 O, |" p整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2, 15, 15, 8, 2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三8 K) \2 T0 l& y- A4 E# E" S9 t! g
个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:$ ~8 A  H# r$ O
gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子数为3
* \2 Y, O6 N$ v! j) u2 j+ Xgstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的空格数为4
2 X( ~2 K* }5 E4 p' R在定义方向时,也应该注意一定的技巧,表示两个相反的方向的数应该差4,在程序中我是这样定义的:, u* O2 |% q1 X! Z
Const DIR_UP = 1
( I+ Y0 P, x5 v; HConst DIR_UPRIGHT = 24 U7 k( J0 c$ \% V9 T' G+ v2 _3 F
Const DIR_RIGHT = 3
- q6 Q% _% X8 t6 \, [Const DIR_RIGHTDOWN = 4/ J  ~- P, x5 r2 d6 q6 s; P4 p0 ^
Const DIR_DOWN = 5
8 ]( h. [7 f$ NConst DIR_DOWNLEFT = 6
/ L5 ?! M9 y* d0 [Const DIR_LEFT = 7
/ ~; H/ X9 l1 ?Const DIR_LEFTUP = 8
8 K, q1 \7 d8 g! v这样我们前四个方向可以通过加四得到另一个方向的值。如果你还是不太明白,请看下面的图:- z% S9 Z% A0 M2 p5 i9 V1 \
---------
) t$ e( ~8 |8 C) h. p: i---------9 G0 h) a  e: N+ U
---oo----% S# C2 N" D! q  ]  S
-ox*xx---
# ]3 y* i& ~! C% w; {9 ^- N---------
$ U! x+ S, |6 i. _---------- ?# x! u/ O- M# r9 M9 i! J
图中的*点从标为(4,4),(打*的位置是空位),则:8 o3 @8 l" @# o* b9 L6 k
gStyle(2,4,4,1,1)=1在(4,4)点相邻的上方白棋数为11 I' f, Y  T  q) E. {3 @
gStyle(2,4,4,1,2)=2在(4,4)点的上方距上方白棋最近的空格数为25 ~, f5 }& y' I6 f5 q
gStyle(1,4,4,3,1)=2在(4,4)点相邻的右方黑棋数为2& W6 D$ m, R$ U( [% i
gStyle(1,4,4,3,2)=1在(4,4)点的右方距右方黑棋最近的空格数为33 F! }- l: m" D, i

& A+ r4 y  q9 ?8 \  r3 v
作者: 相信自己    时间: 2010-6-5 21:24
很好........
作者: shuaishuideyuji    时间: 2010-7-25 14:02
抢个板凳!
作者: baixiaoming555    时间: 2010-7-25 14:06
拜读过了已经
作者: loooog12    时间: 2010-7-27 18:29
先下来看下
作者: schnee    时间: 2012-1-28 21:35
必须顶!!!
作者: 埃土    时间: 2013-5-15 22:06
看看    !




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5