Chat with us, powered by LiveChat Create Custom class Robot(): in python 3 | WriteDemy

Question Description

A robot is located on the (x,y) plane and faces one of four directions (up, down, left, or
right). You must fill in all the missing methods described below.

1. The constructor takes 3 arguments. The first two are integers and correspond to the
initial x and y coordinates of the robot. The third argument is a single character string
containing one of the characters U, u, D, d, R, r, L, or l. These characters correspond to
the initial direction that the robot is facing (up, down, right, or left).

2. The robot class has a turnLeft method that takes no arguments. The result of calling this
method on a robot is that it rotates ¼ turn in the clockwise direction. For example, if the
robot is currently facing left, then after calling turnLeft it will be facing down. The
method does not return anything.

3. The robot class has a turnRight method that takes no arguments. The result of calling this
method on a robot is that it rotates ¼ turn in the counter clockwise direction. For
example, if the robot is currently facing left, then after a call to turnRight it will be facing
up. The method does not return anything.

4. The robot class has an advance method that takes no arguments. The result of calling this
method on a robot is that it moves one unit in the direction it is facing. For example, if
the robot is currently at (10, 20) and is facing down, then after calling advance the robot
will be at (10, 19). The method does not return anything.

5. The robot class has a getPosition method that takes no arguments. It returns a tuple
containing two integers, the x and y position of the robot.

6. The robot class has a getFacing method that takes no arguments and returns one of 4
strings: ‘U’, ‘D’, ‘L’, or ‘R’, indicating which direction the robot is facing. Note: while
the constructor accepts lower case letters, getFacing always returns upper case letters.

7. The robot class has a runProgram method that takes a string consisting of the characters
A, R, or L. These letters correspond to issuing the commands to advance (advance
method), to turn to the right (turnRight method) or to turnto the left (turnLeft method).
The result of calling the runProgram method with such a string is the same as if the
corresponding methods were called on the robot in the order they appear in the string. So
a robot given the program ‘ARAL’ should make the following sequence of moves:
advance(), turnRight(), advance(), and turnLeft()

8. The str() constructor when called on a robot should result in a string with the format ‘(x,
y):d’where x is the current x position, y is the current y position, and d is the current
direction. For example, if the robot r’s position is (-4, 3) and it is currently facing left,
then str® should return the string ‘(-4, 3):L’.

Testing should be executed by below script

from HW7 import robot

def test1():

'''Test getPosition'''

r1 = robot(0,0,'U')

r2 = robot(1,11,'r')

r3 = robot(2,22,'d')

r4 = robot(3,33,'L')

if r1.getPosition() != (0, 0):

print("failed test1A")

return False

if r2.getPosition() != (1, 11):

print("failed test1B")

return False

if r3.getPosition() != (2, 22):

print("failed test1C")

return False

if r4.getPosition() != (3, 33):

print("failed test1D")

return False

return True

def test2():

'''Test getFacing'''

r1 = robot(0,0,'U')

r2 = robot(1,11,'r')

r3 = robot(2,22,'d')

r4 = robot(3,33,'L')

if r1.getFacing() != 'U':

print("failed test2A")

return False

if r2.getFacing() != 'R':

print("failed test2B")

return False

if r3.getFacing() != 'D':

print("failed test2C")

return False

if r4.getFacing() != 'L':

print("failed test2D")

return False

return True

def test3():

'''Test move'''

r1 = robot(4,5,'U')

r2 = robot(-4,2, 'R')

r3 = robot(9,-5, 'D')

r4 = robot(-6, -2, 'L')

r1.advance()

r2.advance()

r3.advance()

r4.advance()

if r1.getPosition() != (4,6):

print("failed test3A")

return False

if r2.getPosition() != (-3,2):

print("failed test3B")

return False

if r3.getPosition() != (9,-6):

print("failed test3C")

return False

if r4.getPosition() != (-7,-2):

print("failed test3D")

return False

return True

def test4():

'''Test turnLeft'''

r1 = robot(4,5,'U')

r2 = robot(-4,2, 'r')

r3 = robot(9,-5, 'd')

r4 = robot(-6, -2, 'L')

r1.turnLeft()

r2.turnLeft()

r3.turnLeft()

r4.turnLeft()

if r1.getFacing() != 'L':

print("failed test4A")

return False

if r2.getFacing() != 'U':

print("failed test4B")

return False

if r3.getFacing() != 'R':

print("failed test4C")

return False

if r4.getFacing() != 'D':

print("failed test4D")

return False

return True

def test5():

'''Test turnRight'''

r1 = robot(4,5,'U')

r2 = robot(-4,2, 'r')

r3 = robot(9,-5, 'd')

r4 = robot(-6, -2, 'L')

r1.turnRight()

r2.turnRight()

r3.turnRight()

r4.turnRight()

if r1.getFacing() != 'R':

print("failed test5A")

return False

if r2.getFacing() != 'D':

print("failed test5B")

return False

if r3.getFacing() != 'L':

print("failed test5C")

return False

if r4.getFacing() != 'U':

print("failed test5D")

return False

return True

def test6():

'''Test multiple moves'''

r1 = robot(4,5,'U')

r2 = robot(-4,2, 'R')

r3 = robot(9,-5, 'D')

r4 = robot(-6, -2, 'L')

r1.advance()

r1.advance()

r2.advance()

r1.advance()

r2.advance()

r3.advance()

r1.advance()

r2.advance()

r3.advance()

r4.advance()

if r1.getPosition() != (4,9):

print("failed test6A")

return False

if r2.getPosition() != (-1,2):

print("failed test3B")

return False

if r3.getPosition() != (9,-7):

print("failed test6C")

return False

if r4.getPosition() != (-7,-2):

print("failed test6D")

return False

return True

def test7():

'''Test complex sequence of moves and turns'''

r1 = robot(8, 2, 'R')

r2 = robot(-1, -4, 'U')

r1.turnRight()

r2.advance()

r2.advance()

r2.turnRight()

r1.advance()

r1.advance()

r2.advance()

r1.turnLeft()

r1.advance()

r1.turnRight()

r2.turnRight()

r2.turnRight()

r2.advance()

r1.advance()

r1.turnRight()

r1.advance()

r1.advance()

r2.advance()

r2.turnRight()

if r1.getPosition() != (7,-1):

print("failed test 7A")

return False

if r1.getFacing() != 'L':

print("failed test 7B")

return False

if r2.getPosition() != (-2,-2):

print("failed test 7C")

return False

if r2.getFacing() != 'U':

print("failed test 7D")

return False

return True

def test8():

'''testing program'''

r1 = robot(8, 2, 'D')

r2 = robot(-4, -1, 'R')

r1.runProgram('AARAR')

if r1.getPosition() != (7,0):

print("failed test8A")

return False

if r1.getFacing() != 'U':

print("failed test8B")

return False

r2.runProgram('LARALA')

if r2.getPosition() != (-3, 1):

print("failed test8C")

return False

if r2.getFacing() != 'U':

print("failed test8D")

return False

r1.runProgram('AL')

if r1.getPosition() != (7,1):

print("failed test8E")

return False

if r1.getFacing() != 'L':

print("failed test8F")

return False

r2.runProgram('LR')

if r2.getPosition() != (-3, 1):

print("failed test8F")

return False

if r2.getFacing() != 'U':

print("failed test8G")

return False

return True

def test9():

'''testing __str__'''

r1 = robot(1, 4, 'U')

r2 = robot(-4, 0, 'R')

r3 = robot(-7, -18, 'L')

r4 = robot(81, -984, 'D')

if str(r1) != '(1, 4):U':

print("failed test9A")

return False

if str(r2) != '(-4, 0):R':

print("failed test9B")

return False

if str(r3) != '(-7, -18):L':

print("failed test9C")

return False

if str(r4) != '(81, -984):D':

print("failed test9D")

return False

return True

score = 0

if (test1()):

score += 10

if (test2()):

score += 10

if (test3()):

score += 10

if (test4()):

score += 10

if (test5()):

score += 10

if (test6()):

score += 10

if (test7()):

score += 10

if (test8()):

score += 10

if (test9()):

score += 10

print('Total score: {}/90'.format(score))

print("Don't forget to submit a screenshot of this execution!")

Our website has a team of professional writers who can help you write any of your homework. They will write your papers from scratch. We also have a team of editors just to make sure all papers are of HIGH QUALITY & PLAGIARISM FREE. To make an Order you only need to click Ask A Question and we will direct you to our Order Page at WriteDemy. Then fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.

Fill in all the assignment paper details that are required in the order form with the standard information being the page count, deadline, academic level and type of paper. It is advisable to have this information at hand so that you can quickly fill in the necessary information needed in the form for the essay writer to be immediately assigned to your writing project. Make payment for the custom essay order to enable us to assign a suitable writer to your order. Payments are made through Paypal on a secured billing page. Finally, sit back and relax.

Do you need an answer to this or any other questions?

About Writedemy

We are a professional paper writing website. If you have searched a question and bumped into our website just know you are in the right place to get help in your coursework. We offer HIGH QUALITY & PLAGIARISM FREE Papers.

How It Works

To make an Order you only need to click on “Place Order” and we will direct you to our Order Page. Fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.

Are there Discounts?

All new clients are eligible for 20% off in their first Order. Our payment method is safe and secure.

Hire a tutor today CLICK HERE to make your first order