- 3
- 0
- 约1.54千字
- 约 5页
- 2017-01-06 发布于贵州
- 举报
C企业实训报告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)