C++五指棋的算法.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C五指棋的算法

五指棋的算法 ------《C语言程序设计》课程设计 学院名称︰ 贵州航天职业技术学院 学生姓名︰ 王辉亚 班级学号︰ AO93GZ053020117 指导老师︰ 陈美成 2010年12月16日 引言 五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。 五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 传统五子棋的棋子分为黑白两色,采用围棋棋盘,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 摘要 五子棋游戏是一个深受人们喜爱的游戏,通常是人机对弈,本程序设计为人与电脑对弈,一方执黑棋,电脑一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连。用鼠标点交叉点走棋,人先走后是电脑判断人所走路线来走棋,电脑格局棋式判断进行围堵,整个走棋的过程都是通过鼠标来操作,当一方先有五立棋连在一起就判断那方胜利,然后回车键重新开始游戏。 课程目的 这个程序是对编程基本功的一个训练,将分支、循环、数组、函数综合应用,而不仅限于编制独立的小程序,通过游戏过程增加编程的兴趣,提高编程水平。编制该程序我对以下的知识点进行的巩固和掌握:1.数组元素为结构体的数组应用。2.全局变量应用。3.按键的处理。4.数组元素与蛇、食物的对应关系。5.图形方式等等。虽然该程序是一个普通而又简单的程序,但是对于一C语言初级阶段的学生来说,是一个很好的锻炼甚至可以说是一个很好的提高。 设计思路 棋盘设计为19×19格,初始状态光标在棋盘的中央,人先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。当游戏一方胜利后显示胜利信息,提示信息。 从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋。这样程序的主要工作是接收棋手按键操作,人用鼠标走,电脑是通过人走了以后判断路线自行落棋,一旦接收到回鼠标垫信息,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠落子。落子成功后,马上判断以该位置为中心的八个方向:上、下、左、右、左上、左下、右上、右下是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。如果想退出游戏,可以按Esc键,想重新开始就按回车键开始新一轮的游戏 程序流程图 void sign(int x,int y,int sig) /*x,y 为放子屏幕坐标sig=1加标记sig=2除标记 */ { switch(sig) { case 1: setcolor(9); line(x-3,y,x+3,y); line(x,y-3,x,y+3); setcolor(WHITE); break; case 2: setfillstyle(1,RED); circle(x,y,8); floodfill(x,y,WHITE); setcolor(WHITE); break; default: break; } void reset_pre() { int i,j; for(i=0;i=8;i++) { for(j=0;j=8;j++) present[i][j]=-1; } /* 构造以chess[_x][_y]为中心的块*/ void To_present(int _x,int _y) { int x=_x; int y=_y; int i,j; /* 右下*/ if(x-4=0y-4=0) { for(x=_x-4,i=0;x=_x+4x=18i=8;x++,i++) { for(y=_y-4,j=0;y=_y+4y=18j=8;y++,j++) {

文档评论(0)

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

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

1亿VIP精品文档

相关文档