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,
|
||||
}
|
||||
|
||||
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 Orientation {
|
||||
N,
|
||||
|
Loading…
Reference in New Issue
Block a user