数学建模社区-数学中国
标题:
五子棋算法
[打印本页]
作者:
厚积薄发
时间:
2010-5-31 17:42
标题:
五子棋算法
五子棋算法
. s ]# j4 q7 X6 ~$ S9 K
9 G$ L5 \0 x5 l. j6 e e" H
* t) p D) l7 N7 a
任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在打分之前,我们先扫描
# t7 z$ w+ Q; r T
整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2, 15, 15, 8, 2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三
: |1 @, J3 ?2 ~' a1 `( E/ M
个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:
0 u0 x2 U4 I' S5 u, c1 U; A4 T
gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子数为3
5 R c5 H# Q9 w. W5 T1 [1 [3 Q
gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的空格数为4
2 R( A& B! X: z5 M$ f0 y
在定义方向时,也应该注意一定的技巧,表示两个相反的方向的数应该差4,在程序中我是这样定义的:
4 R" H- D( C9 j$ a& ~9 j
Const DIR_UP = 1
6 l. d9 J2 M7 C( K8 H
Const DIR_UPRIGHT = 2
6 G- N( K, I9 `+ ?/ a) S
Const DIR_RIGHT = 3
. k2 I7 ?5 u, a Y+ i
Const DIR_RIGHTDOWN = 4
; k0 M- T5 V! _/ T
Const DIR_DOWN = 5
7 E1 ?" c' A- H9 e# D) x) \; T" G/ l5 I
Const DIR_DOWNLEFT = 6
% V# N- L1 D+ A7 A* C7 ]( x
Const DIR_LEFT = 7
+ d% |' P8 y& y- B D% @( @; m- _; E
Const DIR_LEFTUP = 8
. \& W5 G6 X3 }$ G
这样我们前四个方向可以通过加四得到另一个方向的值。如果你还是不太明白,请看下面的图:
0 T1 I( z/ a; z* O s0 U( \
---------
8 x5 T; D0 Z3 r+ v; f! h9 Y1 R
---------
/ L4 u5 E% O* N* Q
---oo----
1 O% K( B' W n u& J! t
-ox*xx---
* b* i5 O0 ]! F) D+ w! V9 T
---------
8 ]& q: H. y' n
---------
B* z: H$ h9 C6 Y1 _; ^% p
图中的*点从标为(4,4),(打*的位置是空位),则:
$ Y9 h6 O# P. r o( C! ?" v" R
gStyle(2,4,4,1,1)=1在(4,4)点相邻的上方白棋数为1
9 y$ M# u, D, p6 C2 w
gStyle(2,4,4,1,2)=2在(4,4)点的上方距上方白棋最近的空格数为2
6 k6 G2 p K( X9 J5 [) f: `
gStyle(1,4,4,3,1)=2在(4,4)点相邻的右方黑棋数为2
! ~( W! V& U, M+ u" g' u
gStyle(1,4,4,3,2)=1在(4,4)点的右方距右方黑棋最近的空格数为3
- ~0 a( m( ]6 N( y' {
, p2 @; m$ W3 V& P/ v+ X B
作者:
相信自己
时间:
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