数学建模社区-数学中国
标题:
五子棋算法
[打印本页]
作者:
厚积薄发
时间:
2010-5-31 17:42
标题:
五子棋算法
五子棋算法
% A$ J$ {1 n9 ^3 U0 E# D) }
z% ?# p( F/ X2 t
8 ~: k" L7 Z9 U1 f& U! z
任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在打分之前,我们先扫描
" ]3 C& s' m4 F* n8 J4 P) L! d
整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2, 15, 15, 8, 2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三
% U; L6 q9 z I0 Z6 X$ Q
个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:
8 {" W* |! O! g) Z. H7 d
gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子数为3
) w' M, L6 I: y9 Z C# V R/ o+ h* Y+ P
gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的空格数为4
5 I/ s( @" ~: [3 Y- Y0 V
在定义方向时,也应该注意一定的技巧,表示两个相反的方向的数应该差4,在程序中我是这样定义的:
8 e0 p' [( |/ Q/ d3 U) g
Const DIR_UP = 1
9 v6 A, s7 @8 C3 W X
Const DIR_UPRIGHT = 2
+ ?3 i1 z5 @; Y+ C
Const DIR_RIGHT = 3
' G/ O9 u. Z( ]4 c/ C
Const DIR_RIGHTDOWN = 4
* f* z- ~' \! K* j- m* V
Const DIR_DOWN = 5
# I3 s" c9 A) N E5 @' v6 k. ]
Const DIR_DOWNLEFT = 6
2 o' A2 d, C9 R& o* n
Const DIR_LEFT = 7
& T/ ]1 R1 ?" }& u# X
Const DIR_LEFTUP = 8
2 g9 d. H( r3 L1 [, r/ g
这样我们前四个方向可以通过加四得到另一个方向的值。如果你还是不太明白,请看下面的图:
! _2 s% G7 ?3 b5 f% H: ], y
---------
7 m9 j* }# f0 R& W: N4 k9 b/ Q7 k
---------
% m, [: i$ i3 j8 |
---oo----
, X" w% b7 p' U, q, s/ _
-ox*xx---
/ @9 M# W# B/ ]+ y3 ?
---------
9 H* V' b2 A# J- [1 e- M4 G! j
---------
* W! W. p' o2 n0 S
图中的*点从标为(4,4),(打*的位置是空位),则:
, {& a. _; b: e
gStyle(2,4,4,1,1)=1在(4,4)点相邻的上方白棋数为1
m! l! R4 e- Z: F0 V5 o
gStyle(2,4,4,1,2)=2在(4,4)点的上方距上方白棋最近的空格数为2
+ B7 U, \% ^9 h+ o o. m3 w
gStyle(1,4,4,3,1)=2在(4,4)点相邻的右方黑棋数为2
9 U+ [9 m# w/ P6 Z( ~
gStyle(1,4,4,3,2)=1在(4,4)点的右方距右方黑棋最近的空格数为3
, J! Q5 H* y$ @9 K% d
9 }# f+ m. d2 a$ @- w
作者:
相信自己
时间:
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