打字游戏设计报告(C++)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档