// 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