-
Notifications
You must be signed in to change notification settings - Fork 4
/
Rover.cs
63 lines (55 loc) · 1.44 KB
/
Rover.cs
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
using System;
namespace MarsRover
{
public class Rover
{
private IRover InternalRover { get; set; }
public Map Planet { get; set; }
public int X
{
get
{
return InternalRover.X;
}
set
{
InternalRover.X = value;
}
}
public int Y
{
get
{
return InternalRover.Y;
}
set
{
InternalRover.Y = value;
}
}
public Rover(IRover rover, Map map)
{
InternalRover = rover;
Planet = map;
}
public bool MoveRover(char action)
{
var newRover = MapCoordinates(InternalRover.Move(action));
if (Planet.CanMoveTo(newRover.X, newRover.Y))
{
InternalRover = newRover;
return true;
}
Console.WriteLine("Cannot perform move, obstacle in the way!");
return false;
}
private IRover MapCoordinates(IRover rover)
{
Type roverType = rover.GetType();
return (IRover)Activator.CreateInstance(
roverType,
Planet.ConvertXCoordinate(rover.X),
Planet.ConvertYCoordinate(rover.Y));
}
}
}