30分求助
查看原帖
30分求助
109220
Farkas_W楼主2020/7/28 22:32
#include<iostream>
#include<cmath>
#include<cstdio>
#include<iomanip>
#include<algorithm>
using namespace std;
int i,n,j,k,x,y,t;
char a[9][9];
string c,b,z,e;
void ss(int p,int q,int s); 
int main()
{
    for(i=1;i<=8;i++)
    for(j=1;j<=8;j++)
    {
        cin>>a[i][j];
        if(a[i][j]=='>'||a[i][j]=='<'||a[i][j]=='^'||a[i][j]=='v')
        {
            x=i;y=j;
            if(a[i][j]=='^')t=1;
            if(a[i][j]=='>')t=2;
            if(a[i][j]=='v')t=3;
            if(a[i][j]=='<')t=4;
        }
    }
    cin>>b;
    while(b[0]!='#')
    {
        if(b[0]=='m'){//move 
            cin>>n;
            for(i=1;i<=n;i++)
            {
                if(t==1){
                    ss(x-1,y,1);
                    a[x][y]='.';
                    x--;
                    a[x][y]='^';
                }
                if(t==2){
                    ss(x,y+1,2);
                    a[x][y]='.';
                    y++;
                    a[x][y]='>';
                }
                if(t==3){
                    ss(x+1,y,3);
                    a[x][y]='.';
                    x++;
                    a[x][y]='v';
                }
                if(t==4){
                    ss(x,y-1,4);
                    a[x][y]='.';
                    y--;
                    a[x][y]='<';
                }
                if(x==1||y==1||x==8||y==8)break;//判断边界 
            }
        }
        if(b[0]=='t'){//turn 判断转向 
            cin>>e;
            if(e[0]=='r'){//right 
                t++;
                if(t>4)t-=4;
                if(t==1)a[i][j]='^';
                if(t==2)a[i][j]='>';
                if(t==3)a[i][j]='v';
                if(t==4)a[i][j]='<';
            }
            if(e[0]=='l'){//left 
                t--;
                if(t<1)t+=4;
                if(t==1)a[i][j]='^';
                if(t==2)a[i][j]='>';
                if(t==3)a[i][j]='v';
                if(t==4)a[i][j]='<';
            }
            if(e[0]=='b'){//back 
                t+=2;
                if(t>4)t-=4;
                if(t==1)a[i][j]='^';
                if(t==2)a[i][j]='>';
                if(t==3)a[i][j]='v';
                if(t==4)a[i][j]='<';
            }
        }
        cin>>b;
    }
    for(i=1;i<=8;i++)
    {
        for(j=1;j<=8;j++)
        cout<<a[i][j];
        cout<<endl;
    }
    return 0;
}
void ss(int p,int q,int s)
{
    if(a[p][q]!='.')//是否要推棋子
    {
        if(s==1&&p-1>=1)ss(p-1,q,s),a[p-1][q]=a[p][q];
        if(s==2&&q+1<=8)ss(p,q+1,s),a[p][q+1]=a[p][q];
        if(s==3&&p+1<=8)ss(p+1,q,s),a[p+1][q]=a[p][q];
        if(s==4&&q-1>=1)ss(p,q-1,s),a[p][q-1]=a[p][q];
        a[p][q]='.';
    }
}

求助

2020/7/28 22:32
加载中...