-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrone.rb
143 lines (119 loc) · 1.49 KB
/
drone.rb
1
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
129
130
131
132
133
134
135
136
137
138
139
140
class Drone
def initialize(x,y,pos, lim_x, lim_y)
@x = x
@y = y
@pos = pos.upcase
@lim_x = lim_x
@lim_y = lim_y
end
def move()
puts "to no #{@pos}"
case @pos
when 'N'
up
when 'S'
down
when 'E'
right
when 'W'
left
else
puts 'movimento invalido'
end
#puts status
end
def turn_left()
case @pos
when 'N'
set_pos('W')
when 'S'
set_pos('E')
when 'E'
set_pos('N')
when 'W'
set_pos('S')
else
puts 'movimento invalido'
end
end
def turn_right()
case @pos
when 'N'
set_pos('E')
when 'S'
set_pos('W')
when 'E'
set_pos('S')
when 'W'
set_pos('N')
else
puts 'movimento invalido'
end
end
def up()
if @y < @lim_y
@y += 1
end
end
def down()
if @y > 0
@y -= 1
end
end
def left()
if @x > 0
@x -= 1
end
end
def right()
if @x < @lim_x
@x += 1
end
end
def get_lim
@limx
end
def set_pos(pos)
@pos = pos
end
def status
puts "#{@x} #{@y} #{@pos}"
end
def command(cmd)
case cmd
when 'D'
turn_right()
when 'E'
turn_left()
when 'M'
move
else
puts 'movimento invalido'
end
end
end
class Island
def initialize(line, column)
@line = line
@column = column
end
def create_drone(x, y, pos)
@drone = Drone.new(x, y, pos, @line, @column)
end
def command(cmd)
case cmd
when 'D'
@drone.turn_right
when 'E'
@drone.turn_left
when 'M'
@drone.move
else
puts 'movimento invalido'
end
end
def finish
@drone.status
@drone = nil
end
end