可根据自己的需要定义游戏中想要出现的单词以及单词下落的速度
GOOD LUCK!
//头文件:head.h
void init();
void draw();
void run();
void jiance();
void putin();
void coming();
//函数定义代码区:
#include<iostream>
#include<windows.h>
#include<time.h>
#define W 30
#define H 20
#define S (W*H)
char * words[]={"true","false","well","come","here","hero","big","map","done","open","file",
"hello","me","mine","adobe","game","prama","pipi","want","you"};
char * word[H]={};
int wz[H]={};
int len=0;
int inlen =0;
char wordin[128];
int count=0;
int jifen = 0;
int p=3;
bool win = false;
bool lose = false;
void MoveCursor(int x, int y)//-----------------------------设置光标位置
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
coord.X = x * 2;
coord.Y = y;
SetConsoleCursorPosition(hOut, coord);
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
SetConsoleCursorInfo(hOut, &cursor_info);
}
void init()
{
srand((unsigned)time(0));
word[0]=words[rand()%(sizeof(words)/4)];
wz[0]=rand()%(W-sizeof(word[0]));
len++;
wordin[20];
inlen = 0;
jifen = 0;
count =0;
p=5;//------------频率
}
void draw()
{
int Y = len-1;
int yx = 0;
for(int y=0;y<H;++y)
{
MoveCursor(10, y);
for(int x=0;x<W;++x)
{
if(x+y*W == wz[Y] && word[Y])
{
std::cout<<word[Y];
x += sizeof(word[Y])-1;
Y--;
}
else
std::cout<<" ";
}
std::cout<<std::endl;
}
MoveCursor(10, H);
for(int i=0;i<W/2;++i)
{
std::cout<<"▲";
}
MoveCursor(8, H+2);
std::cout<<"你的输入:. "<<wordin<<" . 空格清零";
if(win){MoveCursor(26, 15);std::cout<<"☆BEAUTIFUL☆";}
if(lose){MoveCursor(26, 15);std::cout<<"SO HARD!!";}
MoveCursor(26, H);
std::cout<<"SCORE . "<<jifen;
}
void run()
{
count++;
srand((unsigned)time(NULL));
if(count%p == p-1)
{
word[len]=words[rand()%(sizeof(words)/4)];
wz[len] = rand()%(W-sizeof(word[len]));
len++;
}
for(int i=0;i<len;++i)
{
wz[i]+= W;
if(wz[i]/W > H-1)
{
for(int d=0;d<len;++d)
{
wz[d]=wz[d+1];
word[d]=word[d+1];
}if(len > 1)len--;jifen -= 3;
}
}
}
void putin()
{
if(count > 5)
{
if(GetAsyncKeyState ('A') & 1)
{
wordin[inlen]='a';
inlen++;
}
else if(GetAsyncKeyState ('B') & 1)
{
wordin[inlen]='b';
inlen++;
}
else if(GetAsyncKeyState ('C') & 1)
{
wordin[inlen]='c';
inlen++;
}
else if(GetAsyncKeyState ('D') & 1)
{
wordin[inlen]='d';
inlen++;
}
else if(GetAsyncKeyState ('E') & 1)
{
wordin[inlen]='e';
inlen++;
}
else if(GetAsyncKeyState ('F') & 1)
{
wordin[inlen]='f';
inlen++;
}
else if(GetAsyncKeyState ('G') & 1)
{
wordin[inlen]='g';
inlen++;
}
else if(GetAsyncKeyState ('H') & 1)
{
wordin[inlen]='h';
inlen++;
}
else if(GetAsyncKeyState ('I') & 1)
{
wordin[inlen]='i';
inlen++;
}
else if(GetAsyncKeyState ('J') & 1)
{
wordin[inlen]='j';
inlen++;
}
else if(GetAsyncKeyState ('K') & 1)
{
wordin[inlen]='k';
inlen++;
}
else if(GetAsyncKeyState ('L') & 1)
{
wordin[inlen]='l';
inlen++;
}
else if(GetAsyncKeyState ('M') & 1)
{
wordin[inlen]='m';
inlen++;
}
else if(GetAsyncKeyState ('N') & 1)
{
wordin[inlen]='n';
inlen++;
}
else if(GetAsyncKeyState ('O') & 1)
{
wordin[inlen]='o';
inlen++;
}
else if(GetAsyncKeyState ('P') & 1)
{
wordin[inlen]='p';
inlen++;
}
else if(GetAsyncKeyState ('Q') & 1)
{
wordin[inlen]='q';
inlen++;
}
else if(GetAsyncKeyState ('R') & 1)
{
wordin[inlen]='r';
inlen++;
}
else if(GetAsyncKeyState ('S') & 1)
{
wordin[inlen]='s';
inlen++;
}
else if(GetAsyncKeyState ('T') & 1)
{
wordin[inlen]='t';
inlen++;
}
else if(GetAsyncKeyState ('U') & 1)
{
wordin[inlen]='u';
inlen++;
}
else if(GetAsyncKeyState ('V') & 1)
{
wordin[inlen]='v';
inlen++;
}
else if(GetAsyncKeyState ('W') & 1)
{
wordin[inlen]='w';
inlen++;
}
else if(GetAsyncKeyState ('X') & 1)
{
wordin[inlen]='x';
inlen++;
}
else if(GetAsyncKeyState ('Y') & 1)
{
wordin[inlen]='y';
inlen++;
}
else if(GetAsyncKeyState ('Z') & 1)
{
wordin[inlen]='z';
inlen++;
}
else if(GetAsyncKeyState (' ') & 1)
{
memset(wordin,0,inlen);
inlen = 0;
}
}
}
void jiance()
{
bool guo = false;
for(int j=0;j<len;++j)
{
bool same=false;
if(sizeof(word[j]) < inlen) guo = true;
else guo = false ;
for(int i=0;i<sizeof(word[j]);++i)
{
if(word[j][i]!= wordin[i])
{
same = false;
break;
}
else
same = true;
}
if(same)
{
for(int d=j;d<len;++d)
{
wz[d]=wz[d+1];
word[d]=word[d+1];
}if(len > 1)len--;
memset(wordin,0,inlen);
inlen = 0;
jifen += 10;
}
}
if(guo)
{
memset(wordin,0,inlen);
inlen = 0;
}
}
void coming()
{
if(jifen > 50)p = 2;
if(jifen > -20 && jifen <50) p = 4;
if(jifen < -20)p = 5;
if(jifen > 100)win = true;
else win = false;
if(jifen < -50)lose = true;
else lose = false;
}
//主函数CPP,函数调用
#include<iostream>
#include<windows.h>
#include"head.h"
void main()
{
init();
while(1)
{
draw();
run();
putin();
jiance();
coming();
Sleep(0);
}
}