打字游戏

// LetterPlay.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <conio.h>
#include <time.h>
#include "graphics.h"
#include <iostream>
using namespace std;

//获取显示器的分辨率
const int g_nScreenX=GetSystemMetrics(SM_CXSCREEN);	//1280 X 800
const int g_nScreenY=GetSystemMetrics(SM_CYSCREEN);

void RunGame();
//界面
void MakeFrame()
{
	initgraph(g_nScreenX,g_nScreenY);
	int nColor=255;
	settextstyle(50,50,L"宋体");
	outtextxy(g_nScreenX-800,g_nScreenY-600,L"打字游戏");
	
	bool bIndex=true;
	while(!kbhit())
	{
		if(bIndex)
		{
			setcolor(nColor-50);
			bIndex=false;
		}
		else
		{
				setcolor(nColor);
				bIndex=true;
		}
		settextstyle(40,40,L"宋体");
		outtextxy(g_nScreenX-850,g_nScreenY-200,L"任意键进入游戏");
		Sleep(100);
	}
	RunGame();
}
//游戏进行
void RunGame()
{
	cleardevice();
	srand((unsigned)time(NULL));
	int nRandPos;			//随机X坐标位置
	int nYPos=0;			//Y轴下降位移
	int nScore=0;			//分数
	DWORD dwSpeed=1;		//速度
	char cGet='a';			//输入字符
	wchar_t szScore[MAXBYTE]={0};
	while(1)
	{
		TCHAR cRandShow='A'+rand()%26;	//随机产生字符
		nRandPos=rand()%(g_nScreenX-50);
		setfillcolor(BLACK);			//填充颜色为黑色
		for(int i=0,nYPos=0;i<16;++i,nYPos+=50)
		{
			outtextxy(nRandPos,nYPos,cRandShow);//输出字符位置
			Sleep(800/dwSpeed);
			bar(nRandPos,nYPos,nRandPos+50,nYPos+50);//擦出字符	
			if(_kbhit())
			{
				cGet=_getch();			
				if(cGet==cRandShow||cGet==cRandShow+32)
				{
					cout<<'a';
					nScore++;
					i=MAXBYTE;
				}
				if(cGet==27)
					exit(0);
			}
			//将 int 转换成char 便于输出
			settextstyle(30,30,L"宋体");
			setcolor(RGB(0,255,0));
			swprintf_s(szScore,L"当前分数为:%d",nScore);
			outtextxy(0,0,szScore);
			settextstyle(50,50,L"宋体");
			setcolor(RGB(255,0,0));
		}
		//每10个加速
		if(nScore/10==0&&nScore!=0)
			dwSpeed++;
	}	
}

int _tmain(int argc, _TCHAR* argv[])
{
	MakeFrame();
	system("pause");
	return 0;
}

s

  

原文地址:https://www.cnblogs.com/gd-luojialin/p/10963182.html