#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
#define MAXN 300
char map[MAXN][MAXN];
char task[MAXN],name[MAXN];
bool vis[MAXN][MAXN];
int n,m;
void init(int x,int y)
{
n=x;
m=y;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
map[i][j]='O';
}
void clear()
{
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
map[i][j]='O';
}
void print()
{
scanf("%s",name);
printf("%s\n",name);
for(int i=1;i<=m;i++)
for(int j=1;j<=n+1;j++)
j==n+1?printf("\n"):printf("%c",map[i][j]);
}
void color(int x,int y,char c)
{
map[y][x]=c;
}
void line1(int x,int y1,int y2,char c)
{
if(y1>y2) swap(y1,y2);
for(int i=y1;i<=y2;i++)
map[i][x]=c;
}
void line2(int x1,int x2,int y,char c)
{
if(x1>x2) swap(x1,x2);
for(int i=x1;i<=x2;i++)
map[y][i]=c;
}
void drawrec(int x1,int y1,int x2,int y2,char c)
{
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
for(int i=y1;i<=y2;i++)
for(int j=x1;j<=x2;j++)
map[i][j]=c;
}
void dfs(int x,int y,char c)
{
if(vis[y][x]||x<1||y<1||x>n||y>m) return;
vis[y][x]=1;
if(map[y][x+1]==map[y][x]) dfs(x+1,y,c);
if(map[y+1][x]==map[y][x]) dfs(x,y+1,c);
if(map[y-1][x]==map[y][x]) dfs(x,y-1,c);
if(map[y][x-1]==map[y][x]) dfs(x-1,y,c);
map[y][x]=c;
}
void solve()
{
int a,b,c,d;
char tmp[50];
do
{
if(task[0]=='I')
{
scanf("%d%d",&a,&b);
init(a,b);
}
else
if(task[0]=='C') clear();
else
if(task[0]=='L')
{
scanf("%d%d%s",&a,&b,tmp);
color(a,b,tmp[0]);
}
else
if(task[0]=='V')
{
scanf("%d%d%d%s",&a,&b,&c,tmp);
line1(a,b,c,tmp[0]);
}
else
if(task[0]=='H')
{
scanf("%d%d%d%s",&a,&b,&c,tmp);
line2(a,b,c,tmp[0]);
}
else
if(task[0]=='K')
{
scanf("%d%d%d%d%s",&a,&b,&c,&d,tmp);
drawrec(a,b,c,d,tmp[0]);
}
else
if(task[0]=='F')
{
scanf("%d%d%s",&a,&b,tmp);
memset(vis,0,sizeof(vis));
dfs(a,b,tmp[0]);
}
else
{
gets(task);
}
}while(~scanf("%s",&task)&& task[0]!='X' && task[0]!='S');
if(task[0]=='S')
print();
}
int main()
{
while(~scanf("%s",task) && task[0]!='X')
solve();
return 0;
}
UVA10267 Graphical Editor 简单模拟
最新推荐文章于 2013-07-08 21:36:21 发布