#include<iostream>
#include<ctime>
#include<windows.h>
#include <conio.h>
using namespace std;
int x=9,y=1,dir,k=30,en=1,suiji,sc=50;
int m[11][11]={
1,1,0,1,1,0,1,1,0,1,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,
};
struct bullet{
int x,y;
char dir;
bool ser=0;
};
bullet d;
struct enemy{
int x,y;
int mx,my;
bool ser=0;
};
enemy e[100];
void print(int dx,int dy){
for(int i=0;i<=10;i++){
for(int j=0;j<=10;j++){
for(int k=1;k<=99;k++){
if(e[k].ser==1&&e[k].x==i&&e[k].y==j){
m[i][j]=4;
}
if(e[k].ser==0)break;
}
if(i==dx&&j==dy)cout<<"P";
else if(i==d.x&&j==d.y&&d.ser)cout<<"*";
else if(m[i][j]==1)cout<<"#";
else if(m[i][j]==0)cout<<".";
else if(m[i][j]==4)cout<<"E";
cout<<" ";
}
cout<<endl;
}
if(d.dir=='w')d.x--;
if(d.dir=='s')d.x++;
if(d.dir=='a')d.y--;
if(d.dir=='d')d.y++;
if(m[d.x][d.y]==1||m[d.x][d.y]==2||d.x<0||d.y<0)d.ser=0;
for(int i=1;i<=99;i++){
if(e[i].ser==0||e[i].ser==-1)break;
if(e[i].mx==0&&e[i].my==0){
int r=rand()%4;
if(r==0)e[i].mx=1;
else if(r==1)e[i].mx=-1;
else if(r==2)e[i].my=1;
else if(r==3)e[i].my=-1;
}
else{
m[e[i].x][e[i].y]=0;
if(e[i].x==d.x&&e[i].y==d.y){
e[i].ser=-1;m[e[i].x][e[i].y]=0;d.ser=0;
}
if(e[i].mx>=1&&m[e[i].x+1][e[i].y]!=1&&m[e[i].x+1][e[i].y]!=4){e[i].x++;e[i].mx--;m[e[i].x][e[i].y]=4;}else e[i].mx=0;
if(e[i].mx<=-1&&m[e[i].x-1][e[i].y]!=1&&m[e[i].x-1][e[i].y]!=4){e[i].x--;e[i].mx++;m[e[i].x][e[i].y]=4;}else e[i].mx=0;
if(e[i].my>=1&&m[e[i].x][e[i].y+1]!=1&&m[e[i].x][e[i].y+1]!=4){e[i].y++;e[i].my--;m[e[i].x][e[i].y]=4;}else e[i].my=0;
if(e[i].my<=-1&&m[e[i].x][e[i].y-1]!=1&&m[e[i].x][e[i].y-1]!=4){e[i].y--;e[i].my++;m[e[i].x][e[i].y]=4;}else e[i].my=0;
if(e[i].x==d.x&&e[i].y==d.y){
e[i].ser=-1;m[e[i].x][e[i].y]=0;d.ser=0;
}
}
}
}
int main() {
srand(time(0));
while(true){
suiji=(unsigned)rand()%10;
system("cls");
print(x,y);
cout << "(" << x<< ", " <<y << ")" << endl;
if (_kbhit()) {
char c= _getch();
if(c=='a'&&m[x][y-1]!=1){y--;dir=c;}
else if(c=='d'&&m[x][y+1]!=1){y++;dir=c;}
else if(c=='w'&&m[x-1][y]!=1){x--;dir=c;}
else if(c=='s'&&m[x+1][y]!=1){x++;dir=c;}
if(c=='j'){
if(!d.ser){
d.x=x;d.y=y;
d.dir=dir;
d.ser=1;
}
}
}
cout<<k;
k++;
if(k==sc){
k=0;
sc=50+suiji-5;
if(suiji%3==0){e[en].x=0;e[en].y=2;e[en].ser=1;}
if(suiji%3==1){e[en].x=0;e[en].y=5;e[en].ser=1;}
if(suiji%3==2){e[en].x=0;e[en].y=8;e[en].ser=1;}
en++;
}
Sleep(50);
}
return 0;
}