五子棋程序设计

五子棋程序设计

ID:37246848

大小:224.50 KB

页数:10页

时间:2019-05-20

五子棋程序设计_第1页
五子棋程序设计_第2页
五子棋程序设计_第3页
五子棋程序设计_第4页
五子棋程序设计_第5页
资源描述:

《五子棋程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《高级语言程序设计》课程设计五子棋对战算法设计与实现题目:班级:*学生姓名:*学生学号:*指导老师:*提交时间:2007年11月11日成绩:华南农业大学信息学院:一、设计题目分析1.(1)设计题目描述在一个15*15的棋盘上,进行五子棋的对战,不同的是这一次要求由程序代替你战斗。(2)系统设计目的根据系统提供的对战信息,通过计算给出合理的下一步落子的位置。(3)输入、输出数据格式输入格式的第一行为一个整数N,表示当前已下的子数,此后N行,每行一个落子的位置(第一个落子为黑子、第二个落子为白子、……依次类推),位置由x,y表示(分别为落子的行坐标、列坐

2、标,取值范围为0~14)输出格式为一坐标x,y,表示经过计算得出的下一落子位置。(注意,不必标明落黑子还是白子,因为落黑子还是白子从当前已下的子数即可判断)例如(输入数据)67,76,66,75,77,55,6右图为输入数据所描述的棋局。例如(输出数据)7,6在(7,6)位置落子后,如右图所示。(4)设计时的注意事项落子必须在棋盘有效范围内,已经落子的位置不能落子。程序对先手黑棋或后手白棋均能计算正确的落子。2.胜负判断根据最后落子情况从水平、垂直、左斜、右斜四个方向检查是否存在五个连续棋子即可。3.个人分析如何将五子棋量化是本题目的关键,这就需要引

3、入打分。而关键在于如何打分,如冲四,活三,眠三等分别要打多少分,再综合起来考虑。求出最高分,再根据其给出下一步落子的位置。而除了打分,如果能引进预测以及存储可使程序的智能性大大提高。(而此次由于时间关系,并未作出这两个函数。)二、总体设计包括:总体设计思想:本次主要采用数组储存主要数组five[15][15],my[15][15],table[15][15][8],his[15][15]五子棋智能化的关键在于如何打分,如眠三,冲四,死三活三等分别分值为多少,再综合起来考虑。求出最高分,再根据其给出下一步落子的位置。程序模块结构图:主函数voidmai

4、n()函数Score();打分函数函数voidsearch_space()寻找空格函数比较分数高低,输出最高分所对应的值流程图:将各个空格的分数加以比较,得出最高分,将我方的分数与对方的分数加以比较,如果我方最高分数sc1等于或大于对方分数sc2,则选择我方分数sc1,否则选择对方分数sc2。将四个方向的分数相加,得出该空格的分数whose[i][j]bounds[4]组合成各种不同情况,而八个方向又可以合成四个方向,再根据这四个方向再打分。(这些下面都有图及文字加以解释)k=0-7代表从左方顺时针的八个方向,用bounds[4]来记录空格该方向上相

5、邻四个位置的情况,其中black1,white-1,empty0,边界为-2,search_space(i,j,k,f,who,table)YN该格是否为空格当k<8当j<15当i<15i=0,j=0,k=0score(five,table,my,Iam)输入x,y当i

6、25][2]={0}x=0,y=0,sc1=0,sc2=0,k=0,t=0,i=0随机抽取出现最高分数的某一个点,将其坐标输出分八个方向,每个方向的值从上方顺时针依次为0—7;以右方为例:设己方为黑,其可能性为:(┼为空格,●为黑棋,○为白棋,红色的为优先级)┼○『5』┼●->{┼●○『4』{┼●●――>{┼●●○『3(1)』{┼●┼『3(3)』{┼●●●――>{┼●●●○『2(2)』{┼●●┼『2(3)』{┼●●●●『1』{┼●●●┼『2(1)』┼┼->{┼┼○『5(1)』{┼┼●――>{┼┼●○『4』{┼┼┼『5(1)』{┼┼●●――>{┼┼●●

7、○『3(2)』{┼┼●┼『3(4)』{┼┼●●●『2(3)』{┼┼●●┼『3(1)』根据优先级再进行打分。以┼●开头的分数都在10分以上,以┼┼开头的分数在1-6分。『1』——50『2(1)』——43『2(2)』——39『2(3)』——31/6『3(1)』——27/5『3(2)』——4『3(3)』——17『3(4)』——3『4』——11/2『5(1)』——1『5』——0而分数的合成为成五:if(temp>=50)pk[k]=1000;成活四:elseif(temp>=44)pk[k]=100;成眠四,活三:elseif(temp>=32)pk[k]=

8、20;空间不足五子:elseif(temp>=22)pk[k]=0;成眠三,活二:elseif(temp>=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。