#include <cstdio>
#include <cstring>
#include <cstdlib>
#include "frame.h"
#include <math.h>
#include <stdio.h>
char turtle[1024][1024]={0};
int turtle_row=1,turtle_column=1;//画布范围
int row=0,column=0,direction=0;//笔的当前状态direction:0=right,1=down,2=left,3=up.
bool pen=1;//1==down,0==up
void left(int n);
void right(int n);
void up(int n);
void down(int n);
void print_turtle(void);
void output_line(int line_n)
{
const char *line;
int n;
for(int i=0;i<line_n;i++)
{
line=GetLine(i);
if(line[0]=='H'&&line[1]=='O'&&line[2]=='M'&&line[3]=='E')//HOME
{
turtle_row=1;turtle_column=1;
row=0;column=0;direction=0;
pen=1;
}
else if(line[0]=='C'&&line[1]=='S')//CS
{
turtle_row=1;turtle_column=1;
row=0;column=0;direction=0;
pen=1;
turtle[1024][1024]={0};
}
else if(line[0]=='F'&&line[1]=='D')//FD
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
if(direction=0)
right(n);
else if(direction=1)
down(n);
else if(direction=2)
left(n);
else if(direction=3)
up(n);
}
else if(line[0]=='B'&&line[1]=='K')//BK
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
if(direction=0)
left(n);
else if(direction=1)
up(n);
if(direction=2)
right(n);
else if(direction=3)
down(n);
}
else if(line[0]=='L'&&line[1]=='T')//LT
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
direction=direction-n/90;
while(direction<0)
{
direction=direction+4;
}
}
else if(line[0]=='R'&&line[1]=='T')//RT
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
direction=direction+n/90;
while(direction>3)
{
direction=direction-4;
}
}
else if(line[0]=='P'&&line[1]=='U')//PU
{
pen=0;
}
else if(line[0]=='P'&&line[1]=='D')//PD
{
pen =1;
}
}
print_turtle();
}
void print_turtle(void)
{
for(int i=0;i<turtle_row;i++)
{
for(int j=0;j<turtle_column;j++)
{
if(turtle[i][j])
printf("*");
else
printf(" ");
}
printf("\n");
}
}
void left(int n)
{
if(pen)
{
for(int i=0;i<=n&&column-i>=0;i++)
{
turtle[row][column-i]=1;
}
}
column=column-n;
if(column<0)
column=0;
}
void right(int n)
{
if(pen)
{
for(int i=0;i<=n;i++)
{
turtle[row][column+i]=1;
}
}
column=column+n;
turtle_column=max(turtle_column,column);
}
void up(int n)
{
if(pen)
{
for(int i=0;i<=n&&row-i>=0;i++)
{
turtle[row-i][column]=1;
}
}
row=row-n;
if(row<0)
row=0;
}
void down(int n)
{
if(pen)
{
for(int i=0;i<=n;i++)
{
turtle[row+i][column]=1;
}
}
row=row+n;
turtle_row=max(turtle_row,row);
}
void main2(void) {
// 以下代码为框架测试用,请删除后添加自己代码
int i;
const char *line;
for (i = 0; i < LineNum(); i++) {
line = GetLine(i);
printf("#%03d: |%s|\n", i, line);
OutputLine(line);
}
return;
}
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include "frame.h"
#include <math.h>
#include <stdio.h>
char turtle[1024][1024]={0};
int turtle_row=1,turtle_column=1;//画布范围
int row=0,column=0,direction=0;//笔的当前状态direction:0=right,1=down,2=left,3=up.
bool pen=1;//1==down,0==up
void left(int n);
void right(int n);
void up(int n);
void down(int n);
void print_turtle(void);
void output_line(int line_n)
{
const char *line;
int n;
for(int i=0;i<line_n;i++)
{
line=GetLine(i);
if(line[0]=='H'&&line[1]=='O'&&line[2]=='M'&&line[3]=='E')//HOME
{
turtle_row=1;turtle_column=1;
row=0;column=0;direction=0;
pen=1;
}
else if(line[0]=='C'&&line[1]=='S')//CS
{
turtle_row=1;turtle_column=1;
row=0;column=0;direction=0;
pen=1;
turtle[1024][1024]={0};
}
else if(line[0]=='F'&&line[1]=='D')//FD
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
if(direction=0)
right(n);
else if(direction=1)
down(n);
else if(direction=2)
left(n);
else if(direction=3)
up(n);
}
else if(line[0]=='B'&&line[1]=='K')//BK
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
if(direction=0)
left(n);
else if(direction=1)
up(n);
if(direction=2)
right(n);
else if(direction=3)
down(n);
}
else if(line[0]=='L'&&line[1]=='T')//LT
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
direction=direction-n/90;
while(direction<0)
{
direction=direction+4;
}
}
else if(line[0]=='R'&&line[1]=='T')//RT
{
n=line[3]-'0';
for(int j=4;line[j];j++)
{
n=n*10+line[j]-'0';
}
direction=direction+n/90;
while(direction>3)
{
direction=direction-4;
}
}
else if(line[0]=='P'&&line[1]=='U')//PU
{
pen=0;
}
else if(line[0]=='P'&&line[1]=='D')//PD
{
pen =1;
}
}
print_turtle();
}
void print_turtle(void)
{
for(int i=0;i<turtle_row;i++)
{
for(int j=0;j<turtle_column;j++)
{
if(turtle[i][j])
printf("*");
else
printf(" ");
}
printf("\n");
}
}
void left(int n)
{
if(pen)
{
for(int i=0;i<=n&&column-i>=0;i++)
{
turtle[row][column-i]=1;
}
}
column=column-n;
if(column<0)
column=0;
}
void right(int n)
{
if(pen)
{
for(int i=0;i<=n;i++)
{
turtle[row][column+i]=1;
}
}
column=column+n;
turtle_column=max(turtle_column,column);
}
void up(int n)
{
if(pen)
{
for(int i=0;i<=n&&row-i>=0;i++)
{
turtle[row-i][column]=1;
}
}
row=row-n;
if(row<0)
row=0;
}
void down(int n)
{
if(pen)
{
for(int i=0;i<=n;i++)
{
turtle[row+i][column]=1;
}
}
row=row+n;
turtle_row=max(turtle_row,row);
}
void main2(void) {
// 以下代码为框架测试用,请删除后添加自己代码
int i;
const char *line;
for (i = 0; i < LineNum(); i++) {
line = GetLine(i);
printf("#%03d: |%s|\n", i, line);
OutputLine(line);
}
return;
}
遗留问题:
1>..\..\src\main.cpp(36) : error C2059: 语法错误 : “{”
1>..\..\src\main.cpp(36) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>..\..\src\main.cpp(36) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>..\..\src\main.cpp(147) : error C3861: “max”: 找不到标识符
1>..\..\src\main.cpp(173) : error C3861: “max”: 找不到标识符