- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言课程设计姓名:学号:专业:软件工程班级: 3 班指导教师:编写日期:2015/6/25一、需求分析1、程序的输入与输出:只需通过键盘“上”,“下”,“左”,“右”移动光标在棋盘上的位置,“p”键下子,“q”键悔棋进行人人对战。2、程序的系统功能:(1)五子棋;(2)、根据需要提供对图书所需的查询方式。二、系统总体设计1问题:(1)建立棋盘:如何跟简便的建立棋盘; (2)玩家操作如何移动光标;(3)如何在各个方向上检查是否有五个棋子连接;解决方法:用许多“+”符号连接起来构成简便棋盘,下棋时只需将棋子覆盖到“+”完成下子;棋子的移动与落子有键盘上按键控制,本程序选取按键为W、S、A、D和P键,分别代表上移、下移、左移、右移光标和落子。在光标移动的过程中,光标按照玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判断胜负子程序。落子后,程序会为落子处的数组元素赋一个特定值,用于判定胜负。胜负判断模块是程序的关键,该模块的设计直接关系到程序的运行速率和运行结果的正确与否。本函数根据每次落子的位置,分别向上、下、左、右、左上、左下、右上、右下八个方向判断是否有相同颜色的棋子连成五子,如果成立,游戏就结束,并显示提示信息,否则继续落子。详细设计建立棋盘void drawqipan() //绘制棋盘及数据初始化{ int i,j; system(cls); //清除屏幕 for(i=0;i20;i++) { for(j=0;j20;j++) { Q[i][j]=0; printf(十); } printf(\n); } weizhi.x=0;weizhi.y=0; //程序数据初始化 gotoxy(0,0);}玩家操作void jilu() //记录落子情况{ Q[weizhi.x][weizhi.y]=player+1; if(player) { player=0; //玩家变换 return; } player=1;}int cluozi(int x,int y) //由电脑落子时调用{ weizhi.x=x;weizhi.y=y; gotoxy(weizhi.x,weizhi.y); if(Q[weizhi.x][weizhi.y]==0) //判断当前位置是否已经落子 { jilu(); printf(○); gotoxy(weizhi.x,weizhi.y); }}void luozi() //玩家落子{ if(Q[weizhi.x][weizhi.y]==0) //判断当前位置是否已经落子 { if(player) { jilu(); printf(●); } else { jilu(); printf(○); } gotoxy(weizhi.x,weizhi.y); }}3、systemsystem(CLS)可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景。判断胜负int checkWin() //检查游戏是否有输赢{int p; int r,c,rr,cc,count=0; p=player==0?2:1; for(c=0;c20;c++) { for(r=0;r20;r++) { if(Q[r][c]!=p) continue; //检查列 rr=r;cc=c; while(--cc=0 Q[rr][cc]==p)count++; cc=c; while(++cc20 Q[rr][cc]==p)count++; cc=c; if(count+1=5) return p; //检查行 count=0; while(--rr=0 Q[rr][cc]==p)count++; rr=r; while(++rr20 Q[rr][cc]==
文档评论(0)