Merge branch 'volodymyr-dev' into 'master'
implement orientation change and instructions to the robot See merge request mhart/DancingDroids!15
This commit is contained in:
commit
1bd216c50b
46
src/main.rs
46
src/main.rs
@ -22,6 +22,52 @@ struct Robot {
|
|||||||
p: Position,
|
p: Position,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Robot {
|
||||||
|
/// Apply forward instruction to the robot.
|
||||||
|
fn move_forward(&mut self) {
|
||||||
|
match self.o {
|
||||||
|
Orientation::N => self.p.y -= 1,
|
||||||
|
Orientation::S => self.p.y += 1,
|
||||||
|
Orientation::E => self.p.x += 1,
|
||||||
|
Orientation::W => self.p.x -= 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Apply right instruction to the robot.
|
||||||
|
fn move_right(&mut self) {
|
||||||
|
match self.o {
|
||||||
|
Orientation::N => self.p.x += 1,
|
||||||
|
Orientation::S => self.p.x -= 1,
|
||||||
|
Orientation::E => self.p.y += 1,
|
||||||
|
Orientation::W => self.p.y -= 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Apply left instruction to the robot.
|
||||||
|
fn move_left(&mut self) {
|
||||||
|
match self.o {
|
||||||
|
Orientation::N => self.p.x -= 1,
|
||||||
|
Orientation::S => self.p.x += 1,
|
||||||
|
Orientation::E => self.p.y -= 1,
|
||||||
|
Orientation::W => self.p.y += 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Apply North orientation to the robot.
|
||||||
|
fn to_north(&mut self) {
|
||||||
|
self.o = Orientation::N
|
||||||
|
}
|
||||||
|
/// Apply South orientation to the robot.
|
||||||
|
fn to_south(&mut self) {
|
||||||
|
self.o = Orientation::S
|
||||||
|
}
|
||||||
|
/// Apply East orientation to the robot.
|
||||||
|
fn to_east(&mut self) {
|
||||||
|
self.o = Orientation::E
|
||||||
|
}
|
||||||
|
/// Apply West orientation to the robot.
|
||||||
|
fn to_west(&mut self) {
|
||||||
|
self.o = Orientation::W
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Enum to store all possible orientations.
|
/// Enum to store all possible orientations.
|
||||||
enum Orientation {
|
enum Orientation {
|
||||||
N,
|
N,
|
||||||
|
Loading…
Reference in New Issue
Block a user