打字小游戏的实现 , 先展示一下截图 , 此程序在 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();              //捕捉键盘信息
}

 

相关文章: