#include #define MAX_X 85 #define MAX_Y 85 #define MAX_LEN 1000 #define DOWN 1 #define LEFT 2 #define LDOWN 4 #define LUP 8 #define LETTER 16 #define POINT 32 char buffer[MAX_X][MAX_Y][2]; char cmd[MAX_LEN],txt[MAX_LEN]; int X,Y; void clear(void) { int i,j; for (i=0;iv || (x==v && y>w)) {i=x;x=v;v=i;i=y;y=w;w=i;} if (y==w) /*vodorovna*/ { for (i=x;i<=v;i++) buffer[i][y][0]|=LEFT; } else if (x==v) /*svisla*/ { for (j=y;j<=w;j++) buffer[x][j][0]|=DOWN; } else if (w>y) /*LUP*/ { for (i=x,j=y;i<=v;i++,j++) buffer[i][j][0]|=LUP; } else /*LDOWN*/ { for (i=x,j=y;i<=v;i++,j--) buffer[i][j][0]|=LDOWN; } } else if (!strcmp(cmd,"CLEAR")) { scanf("%d %d %d %d",&x,&y,&v,&w); if (x>v) {i=x;x=v;v=i;} if (y>w) {i=y;y=w;w=i;} for (i=x;i<=v;i++) for (j=y;j<=w;j++) buffer[i][j][0]=0; } else if (!strcmp(cmd,"PRINT")) { for (i=1-1;i<=X+1;i++) putchar((i==0 || i==X+1) ? '+' : '-'); putchar('\n'); for (j=1;j<=Y;j++) { putchar('|'); for (i=1;i<=X;i++) { switch(buffer[i][j][0]) { case DOWN:putchar('|');break; case LEFT:putchar('-');break; case LDOWN:putchar('/');break; case LUP:putchar('\\');break; case LETTER:putchar(buffer[i][j][1]);break; case POINT:putchar('o');break; case DOWN|LEFT:putchar('+');break; case LUP|LDOWN:putchar('x');break; case 0:putchar(' ');break; default:putchar('*');break; } } putchar('|'); putchar('\n'); } for (i=1-1;i<=X+1;i++) putchar((i==0 || i==X+1) ? '+' : '-'); putchar('\n'); putchar('\n'); clear(); } } return 0; }