- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C企业实训报告
企业实训
姓名: 熊明 学号: 513300224123 专业:电子信息科学与技术
实训地点:语音室2 时间:2015-12-21--2015-12-29 实训内容及成果(如是软件或实物设计的请附上说明)
五子棋需求分析和流程设计:
本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连,首先实现五子相连的一方获胜。程序执行过程中,要求棋盘、棋子时时可见,游戏界面有提示信息轮到何方下棋。
程序需求分析:
根据功能需求,将程序分为画面显示、玩家操作、胜负判断五个模块,以下分析各模块的需求。
画面显示模块:程序开始运行时,显示制作者及空白棋盘界面;游戏开始后要求生成15×15的棋盘图像,棋盘下方游戏显示应该轮到甲方或者乙方落子,棋盘左右显示双方操作方式,进行过程中,要求实时显示棋盘上已落下的棋子,甲方为白球,乙方为白圈;分出胜负后,要求给出游戏结束画面,并且询问用户是否需要继续游戏。
玩家操作模块:程序开始时,根据玩家输入的坐标进行落子。
胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线的五子,棋盘下方弹出该色玩家胜出信息。
一、程序流程设计
根据程序需求分析结果,可以得出程序的总体结构图如图:
五子棋程序流程图
二、概要设计
1 、各类头文件和全局变量
#include stdio.h
#includewindows.h
char* sWho
2、 画面显示模块
画面显示模块是一个游戏棋盘界面
由void fillChess()和void showChess()函数实现
画面效果图如图
三、详细设计
1、 玩家操作模块
棋子的移动与落子都要在键盘上输入相应的横纵坐标,输入有误会有提示不能进行下一步。
玩家操作模块主要是:
void moveChess(char* sWho) //移动棋子的函数
2、 胜负判断模块
胜负判断模块是程序的关键,该模块的设计直接关系到程序的运行速率和运行结果的正确与否。本函数根据每次落子的位置,分别向上、下、左、右、左上、左下、右上、右下八个方向判断是否有相同颜色的棋子连成五子,如果成立,游戏就结束,并显示提示信息,否则继续落子。
胜负判断模块主要由一个函数构成:
bool checkWin(char* sWho, int x, int y) //判断输赢函数
四、调试分析
1、显示模块
1.在显示模块中,因为是第一次使用图像,所以刚开始时对于棋盘创建的把握有些欠缺。
解决方案:参考书本以及百度,找出最合适的图像。
2、 玩家操作模块
1. 在玩家操作模块中,出现的最大问题之一就是棋盘已经有棋子的地方还可以覆盖另一个棋子。
解决方案:通过if(strcmp(chess[x][y], ●) == 0 || strcmp(chess[x][y], ○) == 0) continue;语句解决。
3、胜负判断模块
1. 在胜负判断中一直没能想到好的办法来数据化判断哪方玩家获得胜利。
2. 另一个问题在于一直不能优化代码做到不每次都扫描整个棋盘来判断胜负。
指导教师意见:
成绩: 教师签字:
五子棋游戏
模块三:
显示胜负
模块二:
玩家操作
模块一:
界面显示
文档评论(0)