
Bartosz Kulasiewicz
1,130 PointsHELP ME PLEASE
In the editor you've been provided with two classes: Point to represent a coordinate point, and Machine. The machine has a move method that doesn't do anything.
Your task is to subclass Machine and create a new class named Robot. In the Robot class, override the move method and provide the following implementation:
If you enter the string "Up" the y coordinate of the Robot's location increases by 1. "Down" decreases it by 1. If you enter "Left", the x coordinate of the location property decreases by 1 while "Right" increases it by 1.
Note: If you use a switch statement you can use the break statement in the default clause to exit the current iteration.
class Point {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
class Machine {
var location: Point
init() {
self.location = Point(x: 0, y: 0)
}
func move(direction: String) {
print("Do nothing! I am a machine!")
}
}
class Robot: Machine{
override init() {
super.init()
}
override func move(direction: String) {
switch direction {
case "Up": location.y += 1
case "Down": location.y -= 1
case "Left": location.x -= 1
case "Right": location.x += 1
default: break
}
}
}
1 Answer

Joseph Heydorn
iOS Development with Swift Techdegree Graduate 11,421 PointsHello Bartosz! You're so close to finishing the task! In your override func method, you were simply missing the "_" before direction! Below is the correct code! One thing I suggest is to try out the code inside of a swift playground. I found that this helps to understand the errors a lot better. Good luck and happy coding!
class Robot: Machine{
override init() {
super.init()
}
override func move(_ direction: String) {
switch direction {
case "Up": location.y += 1
case "Down": location.y -= 1
case "Left": location.x -= 1
case "Right": location.x += 1
default: break
}
}
}