Problem Statement | |||||||||||||
A simple line drawing program uses a blank 20 x 20 pixel canvas and a directional cursor that starts at the upper left corner pointing straight down. The upper left corner of the canvas is at (0, 0) and the lower right corner is at (19, 19). You are given a String[], commands, each element of which contains one of two possible commands. A command of the form "FORWARD x" means that the cursor should move forward by x pixels. Each pixel on its path, including the start and end points, is painted black. The only other command is "LEFT", which means that the cursor should change its direction by 90 degrees counterclockwise. So, if the cursor is initially pointing straight down and it receives a single "LEFT" command, it will end up pointing straight to the right. Execute all the commands in order and return the resulting 20 x 20 pixel canvas as a String[] where character j of element i represents the pixel at (i, j). Black pixels should be represented as uppercase 'X' characters and blank pixels should be represented as '.' characters. | |||||||||||||
Definition | |||||||||||||
|
1
public
class
DrawLines
2
{
3
class Pos
4
{
5
private int X;
6
private int Y;
7
private String status = ".";
8
9
public Pos(int x,int y)
10
{
11
this.X = x;
12
this.Y = y;
13
this.status = ".";
14
}
15
16
public int getX()
17
{
18
return X;
19
}
20
21
public int getY()
22
{
23
return Y;
24
}
25
26
public void setX(int x)
27
{
28
this.X = x;
29
}
30
31
public void setY(int y)
32
{
33
this.Y = y;
34
}
35
36
public void setStatus(String s)
37
{
38
this.status = s;
39
}
40
41
public String getSatus()
42
{
43
return status;
44
}
45
46
public void showPos()
47
{
48
String xStr=X+"";
49
String yStr=Y+"";
50
51
if(X<10)
52
{
53
xStr = "0"+xStr;
54
}
55
56
if(Y<10)
57
{
58
yStr = "0"+yStr;
59
}
60
}
61
}
62
63
public int min = 0, max = 19;
64
public int North = 1, South = 3, West = 2, East = 0;
65
public String LEFT = "LEFT", FORWARD = "FORWARD";
66
public Pos[][] map = null;
67
68
69
70
public DrawLines()
71
{
72
this.direction = South;
73
pos = new Pos(0,0);
74
75
//走之前初始化地图.
76
map = new Pos[max + 1][max + 1];
77
for(int row = 0;row<=max;row++)
78
{
79
for(int col=0;col<=max;col++)
80
{
81
map[row][col] = new Pos(row,col);
82
}
83
}
84
}
85
86
public void showMap()
87
{for (int col = 0; col <= max; col++)
88
89
{
90
for (int row = 0; row <= max; row++)
91
{
92
System.out.print(map[row][col].getSatus());
93
}
94
System.out.println();
95
}
96
}
97
98
private Pos pos = null;
99
private int direction = South;
100
101
public Pos getPos()
102
{
103
return pos;
104
}
105
public void setPos(Pos pos)
106
{
107
this.pos = pos;
108
}
109
/** *//**
110
*
111
* @param cmd
112
*/
113
public void execute(String cmd)
114
{
115
if (cmd.equals("LEFT"))
116
{
117
Left();
118
}
119
else if (cmd.indexOf(FORWARD) >= 0)
120
{
121
int from = cmd.indexOf(FORWARD);
122
String stepStr = cmd.substring(from + FORWARD.length());
123
stepStr = stepStr.trim();
124
int step = Integer.parseInt(stepStr);
125
forward(step);
126
}
127
else
128

2



3

4



5

6

7

8

9

10



11

12

13

14

15

16

17



18

19

20

21

22



23

24

25

26

27



28

29

30

31

32



33

34

35

36

37



38

39

40

41

42



43

44

45

46

47



48

49

50

51

52



53

54

55

56

57



58

59

60

61

62

63

64

65

66

67

68

69

70

71



72

73

74

75

76

77

78



79

80



81

82

83

84

85

86

87



88

89



90

91



92

93

94

95

96

97

98

99

100

101

102



103

104

105

106



107

108

109


110

111

112

113

114



115

116



117

118

119

120



121

122

123

124

125

126

127

128
