Object-Oriented project implementation
Object-Oriented programming offers many benefits such as a modular and easy to maintain code. The project aims to make programmers familiar with Object Oriented Programming and its characteristics.
You will convert the turtle.cpp code to Object-oriented following industry best practices. The input/output specifications for the turtle.cpp program is located under the Turtle.cpp label. You will develop an AsciiTurtle class to represent and control the actions of the turtle. You have been provided with an implementation of a canvas for ASCII graphics (AsciiCanvas), as well as a header file for your turtle.
Your solution should be a zip archive with two files: ASCIITurtle.cpp, which should contain the implementation of the turtle graphics functions, and turtle-driver.cpp, which contains the main function that constructs and uses ASCIICanvas and ASCIITurtle objects in order to compute the output generated by the turtle graphics commands in input.txt. You are not permitted to change the definition of the AsciiTurtle class for your solution.
The turtle.cpp code will be provided but needs to be converted to Object Oriented following the project specifications indicated above.
Turtle.cpp reads in commands from the file input.txt. The first line of input.txt will specify the number of rows and columns on the canvas, and the rest of the file will describe a sequence of moves for the turtle to take.
There are 5 commands, each with a 1-2 letter code: “PU” for pen up, “PD” for pen down, “TL” for turn left, “TR” for turn right, and “F” for forward. The forward command (F) should be followed by a nonnegative integer (the number of spaces to move forwards). All turns are 90 degrees. Commands will be separated by whitespace. The turtle should continue reading in and performing commands until it reads an invalid command. If the turtle is instructed to move forward in a way that would take it off the canvas, it should instead move forward to the edge of the canvas and stop there (then continue with the next command).