PROGRAM IMPLEMENTATION AND TESTING - COMMENTED CODE 
#To import the tkinter GUI and methods 
From Tkinter import * 
Import time 
Import random 
#To set up the GUI called window 
window = Tk() 
window.title("Robot Arena") 
#To set up the arena for the robot 
canvas = Canvas(window, width= 500,height= 400,bg='white') 
canvas.pack() 
#To define the light colour 
def lightcolour(): 
canvas.itemconfig(traffic_light, fill="red", outline="red") 
canvas.update() 
time.sleep(2) 
canvas.itemconfig(traffic_light,fill="green",outline="green") 
canvas.update() 
def left(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1‐vx,y1,x2‐vx,y2) 
canvas.update() 
time.sleep(.1) 
def right(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1+vx,y1,x2+vx,y2) 
canvas.update() 
time.sleep(.1) 
def down(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1,y1+vy,x2,y2+vy)
canvas.update() 
time.sleep(.1) 
def up(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1,y1‐vy,x2,y2‐vy) 
canvas.update() 
time.sleep(.1) 
def downleft(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1‐vx,y1+vy,x2‐vx,y2+vy) 
canvas.update() 
time.sleep(.1) 
def downright(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1+vx,y1+vy,x2+vx,y2+vy) 
canvas.update() 
time.sleep(.1) 
def upleft(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1‐vx,y1‐vy,x2‐vx,y2‐vy) 
canvas.update() 
time.sleep(.1) 
def upright(): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,x1+vx,y1‐vy,x2+vx,y2‐vy) 
canvas.update() 
time.sleep(.1) 
#The obstacle course with all the shapes 
rectangle1 = canvas.create_rectangle(275,30,335,95,fill= "cyan",outline="cyan") 
rectangle2 = canvas.create_rectangle(115,290,200,380,fill= "cyan",outline="cyan")
diamond1 = canvas.create_polygon(120,185,155,150,190,185,155,225,fill= "cyan",outline="cyan") 
triangle1 = canvas.create_polygon(225,335,285,275,305,360,fill="cyan",outline="cyan") 
triangle2 = 
canvas.create_polygon(40,70,115,25,110,120,fill="cyan",outline="cyan") 
triangle3 = 
canvas.create_polygon(425,65,470,50,460,100,fill="cyan",outline="cyan") 
hexagon1 = 
canvas.create_polygon(430,250,415,225,430,200,450,200,465,225,450,250,fill="cyan",outline="cyan") 
hexagon2 = 
canvas.create_polygon(200,120,175,110,170,80,190,60,215,70,220,100,fill="cyan",outline="cyan") 
pentagon1 = 
canvas.create_polygon(365,225,315,200,315,140,370,120,400,170,fill="cyan",outline="cyan") 
circle1=canvas.create_oval(‐20,205,60,290, fill="cyan", outline="cyan") 
circle2=canvas.create_oval(370,275,600,500,fill="cyan", 
outline="cyan") 
circle3=canvas.create_oval(250,25,140,‐50,fill="cyan", outline="cyan") 
# Traffic Light 
traffic_light=canvas.create_oval(220,200,270,250,fill="cyan",outline="cyan") 
vx= 7.0 # x velocity 
vy= 7.0 # y velocity
# Robot 
robot1=canvas.create_oval(10,385,25,370, fill='purple', outline='purple') 
x=random.randrange(1,4) # Generates a random number to determine a route 
if x==1: 
# Start of loop for Route 1 
lightcolour() 
for t in range(1,5): 
for t in range(1,3): 
downright() 
for t in range(1,46): 
right() 
for t in range(1,20): 
up() 
lightcolour() 
for t in range(1,20): 
upleft() 
for t in range(1,5): 
downleft() 
for t in range(1,8): 
upleft() 
for t in range(1,3): 
down() 
for t in range(1,10): 
downleft()
for t in range(1,8): 
downright() 
lightcolour() 
for t in range(1,8): 
downleft() 
for t in range(1,8): 
down() 
lightcolour() 
for t in range(1,9): 
downleft() 
for t in range(1,2): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,10,385,25,370) 
canvas.update() 
time.sleep(.1) 
# End of loop for Route 1 
If x==2: 
lightcolour() 
# Start of loop for Route 2 
for t in range(1,5): 
for t in range(1,12): 
up() 
for t in range(1,10): 
right()
for t in range(1,10): 
upright() 
lightcolour() 
for t in range(1,5): 
right() 
for t in range(1,20): 
upright() 
for t in range(1,22): 
down() 
lightcolour() 
for t in range(1,8): 
right() 
for t in range(1,20): 
down() 
for t in range(1,21): 
left() 
for t in range(1,18): 
up() 
lightcolour() 
for t in range(1,18): 
left() 
for t in range(1,12): 
downleft() 
for t in range(1,6):
down() 
lightcolour() 
for t in range(1,2): 
x1,y1,x2,y2=canvas.coords(robot1) 
canvas.coords(robot1,10,385,25,370) 
canvas.update() 
time.sleep(.1) 
# End of loop for Route 2 
If x==3: 
lightcolour() 
# Start of loop for Route 3 
for t in range(1,5): 
for t in range(1,10): 
upright() 
for t in range(1,20): 
up() 
for t in range(1,10): 
upright() 
for t in range(1,12): 
downright() 
for t in range(1,12): 
downleft() 
lightcolour() 
for t in range(1,16):
right() 
for t in range(1,8): 
upright() 
for t in range(1,12): 
upleft() 
for t in range(1,6): 
down() 
lightcolour() 
for t in range(1,8): 
downleft() 
for t in range(1,10): 
downright() 
for t in range(1,10): 
upright() 
for t in range(1,12): 
downright() 
lightcolour() 
for t in range(1,13): 
downleft() 
for t in range(1,38): 
left() 
for t in range(1,3): 
upleft() 
for t in range(1,2): 
x1,y1,x2,y2=canvas.coords(robot1)
canvas.coords(robot1,10,385,25,370) 
canvas.update() 
time.sleep(.1) 
# End of loop for Route 3 
#To complete the GUI 
window.mainloop() 
SCREENSHOT OF OUTPUT

Program implementation and testing

  • 1.
    PROGRAM IMPLEMENTATION ANDTESTING - COMMENTED CODE #To import the tkinter GUI and methods From Tkinter import * Import time Import random #To set up the GUI called window window = Tk() window.title("Robot Arena") #To set up the arena for the robot canvas = Canvas(window, width= 500,height= 400,bg='white') canvas.pack() #To define the light colour def lightcolour(): canvas.itemconfig(traffic_light, fill="red", outline="red") canvas.update() time.sleep(2) canvas.itemconfig(traffic_light,fill="green",outline="green") canvas.update() def left(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1‐vx,y1,x2‐vx,y2) canvas.update() time.sleep(.1) def right(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1+vx,y1,x2+vx,y2) canvas.update() time.sleep(.1) def down(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1,y1+vy,x2,y2+vy)
  • 2.
    canvas.update() time.sleep(.1) defup(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1,y1‐vy,x2,y2‐vy) canvas.update() time.sleep(.1) def downleft(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1‐vx,y1+vy,x2‐vx,y2+vy) canvas.update() time.sleep(.1) def downright(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1+vx,y1+vy,x2+vx,y2+vy) canvas.update() time.sleep(.1) def upleft(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1‐vx,y1‐vy,x2‐vx,y2‐vy) canvas.update() time.sleep(.1) def upright(): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,x1+vx,y1‐vy,x2+vx,y2‐vy) canvas.update() time.sleep(.1) #The obstacle course with all the shapes rectangle1 = canvas.create_rectangle(275,30,335,95,fill= "cyan",outline="cyan") rectangle2 = canvas.create_rectangle(115,290,200,380,fill= "cyan",outline="cyan")
  • 3.
    diamond1 = canvas.create_polygon(120,185,155,150,190,185,155,225,fill="cyan",outline="cyan") triangle1 = canvas.create_polygon(225,335,285,275,305,360,fill="cyan",outline="cyan") triangle2 = canvas.create_polygon(40,70,115,25,110,120,fill="cyan",outline="cyan") triangle3 = canvas.create_polygon(425,65,470,50,460,100,fill="cyan",outline="cyan") hexagon1 = canvas.create_polygon(430,250,415,225,430,200,450,200,465,225,450,250,fill="cyan",outline="cyan") hexagon2 = canvas.create_polygon(200,120,175,110,170,80,190,60,215,70,220,100,fill="cyan",outline="cyan") pentagon1 = canvas.create_polygon(365,225,315,200,315,140,370,120,400,170,fill="cyan",outline="cyan") circle1=canvas.create_oval(‐20,205,60,290, fill="cyan", outline="cyan") circle2=canvas.create_oval(370,275,600,500,fill="cyan", outline="cyan") circle3=canvas.create_oval(250,25,140,‐50,fill="cyan", outline="cyan") # Traffic Light traffic_light=canvas.create_oval(220,200,270,250,fill="cyan",outline="cyan") vx= 7.0 # x velocity vy= 7.0 # y velocity
  • 4.
    # Robot robot1=canvas.create_oval(10,385,25,370,fill='purple', outline='purple') x=random.randrange(1,4) # Generates a random number to determine a route if x==1: # Start of loop for Route 1 lightcolour() for t in range(1,5): for t in range(1,3): downright() for t in range(1,46): right() for t in range(1,20): up() lightcolour() for t in range(1,20): upleft() for t in range(1,5): downleft() for t in range(1,8): upleft() for t in range(1,3): down() for t in range(1,10): downleft()
  • 5.
    for t inrange(1,8): downright() lightcolour() for t in range(1,8): downleft() for t in range(1,8): down() lightcolour() for t in range(1,9): downleft() for t in range(1,2): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,10,385,25,370) canvas.update() time.sleep(.1) # End of loop for Route 1 If x==2: lightcolour() # Start of loop for Route 2 for t in range(1,5): for t in range(1,12): up() for t in range(1,10): right()
  • 6.
    for t inrange(1,10): upright() lightcolour() for t in range(1,5): right() for t in range(1,20): upright() for t in range(1,22): down() lightcolour() for t in range(1,8): right() for t in range(1,20): down() for t in range(1,21): left() for t in range(1,18): up() lightcolour() for t in range(1,18): left() for t in range(1,12): downleft() for t in range(1,6):
  • 7.
    down() lightcolour() fort in range(1,2): x1,y1,x2,y2=canvas.coords(robot1) canvas.coords(robot1,10,385,25,370) canvas.update() time.sleep(.1) # End of loop for Route 2 If x==3: lightcolour() # Start of loop for Route 3 for t in range(1,5): for t in range(1,10): upright() for t in range(1,20): up() for t in range(1,10): upright() for t in range(1,12): downright() for t in range(1,12): downleft() lightcolour() for t in range(1,16):
  • 8.
    right() for tin range(1,8): upright() for t in range(1,12): upleft() for t in range(1,6): down() lightcolour() for t in range(1,8): downleft() for t in range(1,10): downright() for t in range(1,10): upright() for t in range(1,12): downright() lightcolour() for t in range(1,13): downleft() for t in range(1,38): left() for t in range(1,3): upleft() for t in range(1,2): x1,y1,x2,y2=canvas.coords(robot1)
  • 9.
    canvas.coords(robot1,10,385,25,370) canvas.update() time.sleep(.1) # End of loop for Route 3 #To complete the GUI window.mainloop() SCREENSHOT OF OUTPUT