#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
const int w=20,h=20;
int x,y,fX,fY,tX[100],tY[100],nT;
enum d{STOP=0,L,R,U,D};
d dir;
bool gO;
int s;
void Setup(){
	gO=false;
	dir=STOP;
	x=w/2;
	y=h/2;
	fX=rand()%w;
	fY=rand()%h;
	s=0;
	nT=0;
}
void Draw(){
	system("cls");
	for(int i=0;i<w+2;i++)cout<<"#";
	cout<<endl;
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			if(j==0)cout<<"#";
			if(i==y&&j==x)cout<<"O";
			else if(i==fY&&j==fX)cout<<"F";
			else{
				bool p=false;
				for(int k=0;k<nT;k++){
					if(tX[k]==j&&tY[k]==i){
						cout<<"o";
						p=true;
					}
				}
				if(!p)cout<<" ";
			}
			if(j==w-1)cout<<"#";
		}
		cout<<endl;
	}
	for(int i=0;i<w+2;i++)cout<<"#";
	cout<<endl;
	cout<<"Score:"<<s;
}
void Input(){
	if(_kbhit()){
		switch(_getch()){
			case 'a':
				if(dir!=R)dir=L;
				break;
			case 'd':
				if(dir!=L)dir=R;
				break;
			case 'w':
				if(dir!=D)dir=U;
				break;
			case 's':
				if(dir!=U)dir=D;
				break;
			case 'x':
				gO=true;
				break;
		}
	}
}
void Logic(){
	int pX=tX[0],pY=tY[0],p2X,p2Y;
	tX[0]=x;
	tY[0]=y;
	for(int i=1;i<nT;i++){
		p2X=tX[i];
		p2Y=tY[i];
		tX[i]=pX;
		tY[i]=pY;
		pX=p2X;
		pY=p2Y;
	}
	switch(dir){
		case L:
			x--;
			break;
		case R:
			x++;
			break;
		case U:
			y--;
			break;
		case D:
			y++;
			break;
		default:
			break;
	}
	if(x>=w||x<0||y>=h||y<0)gO=true;
	for(int i=0;i<nT;i++)if(tX[i]==x&&tY[i]==y)gO=true;
	if(x==fX&&y==fY){
		s+=10;
		fX=rand()%w;
		fY=rand()%h;
		nT++;
	}
}
int main(){
	Setup();
	while(!gO){
		Draw();
		Input();
		Logic();
		Sleep(120);
	}
	system("cls");
	cout<<"游戏结束!奖励你培养审美!";
	Sleep(20);
	system("color 1");
	Sleep(20);
	system("color 2");
	Sleep(20);
	system("color 3");
	Sleep(20);
	system("color 4");
	Sleep(20);
	system("color 5");
	Sleep(20);
	system("start https://www.bilibili.com/video/BV147rMBMEGZ/?spm_id_from=333.788.recommend_more_video.3&trackid=web_related_0.router-related-2479604-97qjn.1776429160190.157");
	Sleep(500);
	system("start https://www.bilibili.com/video/BV1rkc4zaE5t/?spm_id_from=333.788.recommend_more_video.0&trackid=web_related_0.router-related-2479604-5lvcw.1776428403047.596");
	return 0;
}