打单词小游戏

可根据自己的需要定义游戏中想要出现的单词以及单词下落的速度

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);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值