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