#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#include<stdio.h>
using namespace std;
int x=1,y=1,z,n,m;
void gotoxy(int x, int y) //定位到第y行的第x列
{
int xx=0x0b;
HANDLE hOutput;
COORD loc;
loc.X = x;
loc.Y=y;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput, loc);
return;
}
int main(){
SMALL_RECT winPon={25,25,155,75};
HANDLE con=GetStdHandle(STD_OUTPUT_HANDLE);
COORD buf={131,51};
SetConsoleWindowInfo(con,1,&winPon);
SetConsoleScreenBufferSize(con,buf);
n=20,m=40;
for(int i=1;i<=n+2;i++){
if(i==1||i==n+2)
for(int j=1;j<=m+2;j++)
printf("o");
else for(int j=1;j<=m+2;j++){
if(j==1||j==m+2)printf("o");
else if(i==j&&i==2)printf("@");
else printf(" ");
}
printf("\n");
}
while(1){
if(_kbhit()){
z=_getch();
if(z==65||z==97){
if(x==1)continue;
x=x-1;
gotoxy(x,y);
printf("@ ");
for(int i=1;i<n;i++)printf("\n");
}
if(z==87||z==119){
if(y==1)continue;
y=y-1;
gotoxy(x,y);
printf("@\n");
for(int i=0;i<=x;i++){
if(i==0)printf("o");
else printf(" ");
}
for(int i=1;i<n;i++)printf("\n");
}
if(z==68||z==100){
if(x==m)continue;
gotoxy(x,y);
printf(" @");
for(int i=1;i<n;i++)printf("\n");
x=x+1;
}
if(z==83||z==115){
if(y==n)continue;
gotoxy(x,y);
printf(" \n");
for(int i=0;i<x;i++){
if(i==0)printf("o");
else printf(" ");
}
printf("@");
for(int i=1;i<n;i++)printf("\n");
y=y+1;
}
}
}
}