- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五子棋游戏的算法:
本算法只处理玩家先行(即执黑子)的情形。
开局部分采用开局数据库的方式实现。
中后期采用规则核心算法:
规则如下:
白方核心规则(Rules Only For White):
优先级
名称
规则名
数据结构及说明
0
白五连
○○○○※
R51
○○○※○
R52
○○※○○
R53
1
黑五连
●●●●※
-R51
●●●※●
-R52
●●※●●
-R53
2
白活四
□○○○※□
R41
□○○※○□
R42
3
白四四
R44
4
白四三
R43
5
白VCF
RVCF
6
白四
□○○○##
□○○#○#
□○#○○#
7
黑活四
□?●●●?□
-R41
?●●?●?
-R42
8
黑四三
-R43
9
黑VCF
-RVCF
11
白三三
R33
10
黑
○?●●●?○
-R40
●表示该位置为先手方已落的棋子
○表示该位置为后手方已落的棋子
□表示该位置无落子
※该位置无落子,一旦出现此种情形,表示已无继续搜索之必要,应立即中断在该位置落子
#该位置无落子,表示在该位置落子也不一定致胜
?该位置无落子,表示在这种情形的应当在多个位置中选择一个
Ver0.1 空核心
struct Pos AI(char board[][N], struct Pos p) {
struct Pos res;
/*board是当前棋盘:0是空、1是黑子、2是白子*/
/*cur是黑方当前一步的落子位置*/
/*res是返回白方的落子位置*/
/*需要注意的是:board是坐标范围是从0到N - 1,而cur和res的坐标比他大一个,是1到N,所以要减1*/
return res;
}
Ver1.0 完全随机核心(测试用)
struct Pos AI(char board[][N], struct Pos p) {
struct Pos res;
do
{
res.x = rand() % N + 1;
res.y = rand() % N + 1;
}
while(!(res.x 0res.y 0res.x = Nres.y = N
!board[res.y - 1][res.x - 1]));
return res;
}
完全的随机核心,随机的把棋子落在棋盘的任何位置,仅仅用作测试。
Ver1.2 随机核心·改
struct Pos AI(char board[][N], struct Pos p) {
struct Pos res;
static int R = 0, L = 0;
int n = 0, f = 1;
if (!R||(p.x + R * p.y + L) % 5 == 0) {
randomize();
R = rand() % 2 + 2, L = rand() % 5;
}
while(1) {
n++;
res.x = p.x - f + rand() % (2 * f + 1);
res.y = p.y - f + rand() % (2 * f + 1);
if (n == 32||n == 100) f++;
if (rand() % 10000 == 0) R = rand() % 2 + 2;
if (((res.x + R * res.y + L) % 5 == 0||f == 3)
res.x 0res.y 0res.x = Nres.y = N
!board[res.y - 1][res.x - 1])
return res;
}
}
这个核心只是将棋子落在你上一步所走的四周,并做出一些看似格挡的棋步,其实并没有任何的思考能力。
Ver2.0 米
#define B(n) (board[y + (n) * dy[z]][x + (n) * dx[z]] == ATK)
#define C(n) (!board[y + (n) * dy[z]][x + (n) * dx[z]])
#define D(n) (board[y + (n) * dy[z]][x + (n) * dx[z]] == DEF)
#define E(n) (x + (n) * dx[z] = 0x + (n) * dx[z] Ny + (n) * dy[z] = 0y + (n) * dy[z] N)
#define ATK_A 1023 /* P ● ● ● ● */
#define ATK_B 120 /* P ● ● ● __ __ */
#define ATK_C 110 /* P ● ● __ ● __ */
#define
您可能关注的文档
最近下载
- 七年级上册语文第一单元重点内容整合练习含答案及解析.pdf
- 植物界 一、植物界的主要类群.ppt VIP
- 【36页PPT】CQI23模塑系统评估.pptx VIP
- 全科医生转岗培训模拟练习题附答案6.doc
- 2022-LY-022林地保护利用规划林地落界技术规程.pdf VIP
- (高清版)W-S-T 403-2024 临床化学检验常用项目分析质量标准.pdf VIP
- YYT1437-2023 医疗器械 GBT42062应用指南.pdf VIP
- 2025年全国导游资格证考试《全导+地导》真题卷(含答案).pdf VIP
- CBT 3000-2019 船舶生产企业生产条件基本要求及评价方法.docx VIP
- 交通事故案例分析.ppt VIP
文档评论(0)