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