打字小游戏的实现 , 先展示一下截图 , 此程序在 VC++ 上直接运行就ok 。简单的说一下原理 , 首先定义了一个数组 , 用于储存 A-Z a-z 0-9 的字符 , 再定义一个类 , 用于获取屏幕的 x , y 的坐标 。然后获取随机的字符从屏幕上面向下移动,每移动一次刷新一下界面 , 重新获取x , y 的坐标达到移动的效果 。 如果打字对了 5 次后 , 等级难度会提高,掉落的速度就会加快 ,但错一次就减去一分 , 直到对的减去错的等于 5 就进入等级二 , 其他等级依次类推 。(本教程在老师的指导下完成,故:转载)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
int i;
int x,y;
int myEx=0;
char c,cKey;
int num=0;
int h=1000; //定义h为1000,后面 sleep(1000); 定时1秒钟
char ch[62]=
{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9'
}; //定义字符数组
void gotoxy(int x, int y) //获取屏幕的x,y的坐标类
{
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
void main()
{
gotoxy(0,5); //定位到x=0,y=5的位置,打印printf内容.
printf("================================================================================\n");
gotoxy(0,19);
printf("================================================================================\n");
gotoxy(68,24);
printf("等级 \n");
gotoxy(68,24);
printf("等级 1 \n");
gotoxy(20,4);
printf("*************** 判 断 ***************");
gotoxy(20,21);
printf("************ 当前的分数是 *************");
while(1)
{
i=rand()%62; //获取随机的i
x=rand()%80; //获取随机的x
c=ch[i];
for(y=6;y<19;y++) //字符从第6列开始向下移动
{
if(kbhit())
{
if(cKey==27)
{
myEx=1;
break;
}
cKey=getch();
gotoxy(20,4);
if(cKey==c) //判断从键盘输入的数字是否和数组的一样
{
printf("*************** 正 确 ***************");
num++; //num++ 来判断等级 1-5为等级一 5-10为等级二
switch(num){
case 1:
h=1000;
gotoxy(68,24);
printf("等级 1 \n");
break;
case 5:
h=500;
gotoxy(68,24);
printf("等级 2 \n");
break;
case 10:
h=300;
gotoxy(68,24);
printf("等级 3 \n");
break;
case 15:
h=100;
gotoxy(68,24);
printf("等级 4 \n");
break;
}
gotoxy(20,21);
printf("************ 当前的分数是:%d *************",num);
}
else
{
printf("*************** 错 误 ***************");
num--; //打字错一次 num--
}
break;
}
else{
gotoxy(x,y);
printf("%c\n",ch[i]);
Sleep(h); //每次睡眠 1000毫秒
gotoxy(x,y);
printf(" ");
}
}
if(myEx==1)
break;
}
system("CLS"); //获取键盘的 esc 键
gotoxy(25,12);
printf("亲爱的你要离开我了吗?\n"); //退出时的文字
getch(); //捕捉键盘信息
}