高级语言程序设计实验报告夏阳升精要.docxVIP

高级语言程序设计实验报告夏阳升精要.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五子棋程序 项目简介 该程序为简易的五子棋程序,可以实现人人对战和人机对战,并且有自动报警功能,即当对方已有一个三连的构型时可以提醒你,拥有判断输赢的功能,当一种颜色的棋的五个子连成一条线时,可判断谁输谁赢。拥有复盘和和悔棋的功能,其中对于复盘功能,每次你可以选择显示下一步或上一步的棋盘,对于悔棋,每次后退两步,即回到上一轮你要开始下棋的时候。 设计思想 程序的主体是根据玩家选择的对战模式,设计一个让双方循环下棋的程序。根据题目要求,每次下棋时都会出现一个让玩家选择功能的菜单,菜单包括下棋、复盘、悔棋、退出等功能。这时就要编写一个程序,让这个程序根据玩家的不同选择做出不同的处理,以满足玩家的要求。最后便是各种功能相应函数的编写。以上便是该程序的整体设计思想。 功能及其实现(含源程序) 对于该五子棋程序的基本功???,大的方面有如人机对战和人人对战的功能,小的方面有下棋、复盘、悔棋、警报、判断输赢和退出等功能,并且增加了许多人性化设计,如警报时会有报警提示音,而且字体会变红的变化。而其中最重要的几个程序便是人机对战程序中电脑算法的编写、判断输赢以及报警程序的编写、复盘和悔棋程序的编写。对于画棋盘程序,我是这样编写的:定义一个整型二维数组,执白棋者每下一子,便根据该坐标给相应的二维数组赋值为1,执黑棋者每下一子,便根据该坐标给相应的二维数组赋值为2,未落子的地方,则赋值为0。此时再定义一个字符串二维数组,扫描前面的整型二维数组,如果值为1,则将对应的字符串数组表示为白棋,如果值为2,则将对应的字符串数组表示为黑棋,如果值为0,则将对应的字符串数组表示为方框,最后输出这个字符串数组,便画好了一张棋盘。对于人机对战算法,我是这样思考的:该过程无非是让电脑根据当前棋盘的落子,在棋盘上选择一个“最合适”的位置下棋,而“最合适”在程序中实现便是计算当前棋盘中价值最大的点。那如何计算价值最大的点呢?这就要根据棋盘中不同颜色的棋子所构成的棋型来判断。举个例子,如果棋盘中已有一个对方连成三连的构型时,则这三个子的两头的且靠近己方的位置便为价值最大的点,则电脑落子时落在这里,其次便是己方这种构型的两端。以此类推便为我的人机对战算法。对于判断输赢的功能,我是这样实现的:玩家 每下一次棋,便把该子的坐标传给判断输赢的函数。然后从该子开始,先向右判断是否包括该子有五个颜色一样的子,然后又从该子开始向左判断,然后向右下判断,然后向左上判断,然后向下判断,然后向上判断,然后向左下判断,最后向右上判断。如果有一个方向满足情况,便返回1,如果都不满足,便返回0,然后根据返回值判断输赢。对于报警功能,则仿照上述判断输赢的程序,如果有三个子连在一起,则返回1,否则返回0。根据返回值判断是否报警。对于复盘功能,我是这样实现的:定义一个结构体,里面存放前面画棋盘时提到的字符串数组,每下一步,便将该结构体包含的数据写入文件中,复盘时,根据玩家要求,从文件中读取数据,然后输出上一步或下一步棋盘。对于悔棋功能,我是这样实现的:我定义了一个全局变量,然后定义了一个指向该全局变量的指针,每下一次棋,该指针则加1,当玩家要悔棋时,则该指针减2,将前面两步对应的整型二维数组的值赋为0,然后输出该全局变量对应的结构体中的字符串,即可实现悔棋的功能。 以上便是我编写的五子棋程序所包含的功能及其实现方法。 下面是部分重要的源程序: typedef struct jilu/*定义结构体保存所有棋局,用于复盘和悔棋*/ { char p[N+1][N+1][MAXLEN]; }JILU; int main() { JILU jilu[256]; int status[N][N]={K}; int op1=0,op2=0,op3=0,op4=0,a,b;/*op1,op2记录执白棋落子坐标,op3,op4记录执黑棋落子坐标*/ int total=0;/*记录总步数*/ int *d = total;/*定义指针,用于改变total的值*/ setcolor(14); printf(******************欢迎你进入挑战与乐趣并存的五子棋游戏!******************\n); printf( Programed by 夏阳升\n); b:printf( 请选择对战模式:(1、双人对战 2、人机对战):); scanf(%d,a); if (a==1) { setcolor(11); printf(欢迎使用双人对战模式!\n); printf(友情提示:本游戏有警报功能(如对方已经有一个三连的构型了,则可提醒玩家).\n);

文档评论(0)

糖糖 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档