打字游戏设计报告(C++)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学
设计报告
课题名称:打字游戏设计
学院:信息与通信工程许愿
学号:********
学生:刘洪健
邮箱:************************.cn
目录
一、需求分析 (4)
二、设计说明 (4)
1.设计思路 (4)
2.程序框图 (5)
3.主要函数 (7)
三、代码实现 (6)
四、问题解决 (11)
五、总结展望 (10)
一、需求分析
1.选题
接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,然后根据老是给的推荐题目以及自己的编程能力做了选择,决定了编写在dos化境下的打字游戏,锻炼在自己对函数,指针,类的综合运用,以及对颜色控制函数的使用。
2.功能
在dos环境下实现打字游戏的运行,正确与错误字符的统计,以及时间的统计。
二、总体设计说明
1.设计思路
在数据结构上,用数组存储随机产生的英文字符。在数组中,利用时间做种来产生随机数,并通过ascII码转换成英文字符,然后赋给数组,然后玩家通过键盘输入,在利用判断输入字符是否正确,达到判断正确与否的目的,最后游戏结束后,用空格来覆盖输入字符,以达到清屏的效果。
2.程序框图
操作控制:如图1所示
游戏控制:如图2所示
图2
3.主要函数和变量:如表1表2所示
三、代码实现
主函数void main()
{
HANDLE handle;
handle = initiate();
WORD wColors[2];
wColors[0]=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSI TY;
sndPlaySound("tr.wav",SND_ASYNC);//背景音乐
init(handle); //初始化界面
randCharacter(handle); //随机产生字符函数
t extout(handle,LEFT-8,TOP-3,wColors,1,"按任意键开始!");
_getch();
textout(handle,LEFT-8,TOP-3,wColors,1,"现在已经开始");
while(1) //循环
{
stat(handle); //统计函数
loop:
WinOK(handle); //确认询问
int respose=_getch(); //判断是否继续进行
if(respose=='n')
final(handle); //结束界面
else if(respose=='y') //如果要再来一次,则执行清屏函数,随即字产生函数
{
clearScreen(handle);
randCharacter(handle);
}
else
goto loop;
}
}
首先初始化界面。
void init(HANDLE handle)
{
WORD wColors[2];
wColors[0]=FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENS ITY;
wColors[1]=FOREGROUND_RED|FOREGROUND_INTENSITY;
for(int a=3; a textout(handle,a,TOP,wColors,1,"~"); //图形边框上部 for(int b=3; b textout(handle,b,BOTTOM,wColors,1,"~"); //图形边框下部 } 第二步生成随机字符 void randCharacter(HANDLE handle) { srand(time(NULL)); //利用时间产生随机数 WORD wColors[2]; wColors[0]=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSI TY; wColors[1]=FOREGROUND_GREEN; int row = TOP+2; int col; for(int i=0;i<5;i++) { col=5; for(int j=0;j<55;j++) //根据要求产生多少数 { ch[i][j] = (char)(rand() % 26 + 97); //把随即数转换成字母赋值给数组,acsii char buf[10]; buf[0] = ch[i][j]; // buf[1] = '\0'; textout(handle,col,row,wColors,1,buf); col++; } row+=3; } } 第三步输入字母并判断是否正确 void stat(HANDLE handle) { WORD wColors[3]; wColors[0]=FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENS ITY; wColors[1]=FOREGROUND_INTENSITY|FOREGROUND_RED; wColors[2]=FOREGROUND_GREEN|FOREGROUND_INTENSITY; int row = TOP; int col = LEFT+2; int count = 0; //总共的字符数 int correct = 0; //正确的字符数 int error = 0; //错误的字符数 char buf[10]; while(1)