Reputation: 55
My program uses Turtle to draw shapes. It shows the following menu:
If the user enters "4", the program should draw the shapes in the order they are in the list.
[PROBLEM]: So it should draw a circle and a rectangle with random values. I am having problems trying to do that as well as removing the shapes if the user enters "3". I have left an example of the way I am approaching Drawing Shapes using the random function for circle.
Also, what should my code be if choice == 3 (removing the shapes)?
All help is greatly appreciated. Thanks!
import turtle
import random
def circle():
turtle.pensize(1)
turtle.penup()
turtle.goto(x, yCoordinate)
turtle.pendown()
turtle.color(color)
turtle.circle(radius)
turtle.hideturtle()
turtle.done()
def rectangle():
turtle.penup()
turtle.goto(xRectangle - width / 2, yRectangle - height / 2)
turtle.pendown()
turtle.color(colorRectangle)
turtle.goto(xRectangle - width / 2, yRectangle + height / 2)
turtle.goto(xRectangle + width / 2, yRectangle + height / 2)
turtle.goto(xRectangle + width / 2, yRectangle - height / 2)
turtle.goto(xRectangle - width / 2, yRectangle - height / 2)
turtle.hideturtle()
turtle.done()
def remove():
pass
def shapes():
turtle.pensize(1)
turtle.penup()
turtle.goto(x.random, yCoordinate.random)
turtle.pendown()
turtle.color(random)
turtle.circle(radius.random)
COMMANDS = [None, circle, rectangle, remove, shapes, exit]
ABORT = len(COMMANDS) - 1
PROMPT = "1. Draw a circle\n2. Draw a rectangle\n3. Remove Shapes\n4. Draw Shapes\n5. Quit"
while True:
choice = turtle.numinput("Pick a number", prompt=PROMPT, default=ABORT, minval=1, maxval=ABORT)
if choice == 1:
x = int(input("Enter the X Coordinate: "))
yCoordinate = int(input("Enter the Y Coordinate: "))
radius = int(input("Enter the Radius: "))
color = str(input("Enter desired Color (choose red, yellow, blue or green): "))
xCoordinate = (x - radius)
if choice == 2:
xRectangle = int(input("Enter the X Coordinate: "))
yRectangle = int(input("Enter the Y Coordinate: "))
height = int(input("Enter Height: "))
width = int(input("Enter Width: "))
colorRectangle = str(input("Enter desired Color (choose red, yellow, blue or green): "))
if choice == 3:
print(1)
if choice == 4:
print(shapes)
if choice is None:
choice = ABORT
else:
choice = int(choice)
if 1 <= choice <= ABORT:
COMMANDS[choice]()
turtle.mainloop() # never reached
Upvotes: 0
Views: 567
Reputation: 1047
Your functions are missing parameters, also it a good practice to use "elif", it reduces the number of checks you make and will reduce logical errors as well
Also, make sure to refer back to the documentation for syntax help! https://docs.python.org/3.3/library/turtle.html?highlight=turtle#turtle.clear
I made some modifications to your code to achieve what you need
import turtle
import random
# Create a turtle object
myturtle = turtle.Turtle()
def circle(x, yCoordinate, radius, color):
myturtle.pensize(1)
myturtle.penup()
myturtle.goto(x, yCoordinate)
myturtle.pendown()
myturtle.pencolor(color)
myturtle.circle(10)
myturtle.hideturtle()
def rectangle(xRectangle, yRectangle, width, height, colorRectangle):
myturtle.penup()
myturtle.goto(xRectangle - width / 2, yRectangle - height / 2)
myturtle.pendown()
myturtle.pencolor(colorRectangle)
myturtle.goto(xRectangle - width / 2, yRectangle + height / 2)
myturtle.goto(xRectangle + width / 2, yRectangle + height / 2)
myturtle.goto(xRectangle + width / 2, yRectangle - height / 2)
myturtle.goto(xRectangle - width / 2, yRectangle - height / 2)
myturtle.hideturtle()
def rremove():
myturtle.clear()
def shapes():
myturtle.pensize(1)
myturtle.penup()
myturtle.goto(x.random, yCoordinate.random)
myturtle.pendown()
myturtle.color(random)
myturtle.circle(radius.random)
COMMANDS = [None, circle, rectangle, rremove, shapes, exit]
ABORT = len(COMMANDS) - 1
PROMPT = "1. Draw a circle\n2. Draw a rectangle\n3. Remove Shapes\n4. Draw Shapes\n5. Quit"
COLORS = ['red', 'yellow', 'blue', 'green']
while True:
choice = turtle.numinput("Pick a number", prompt=PROMPT, default=ABORT, minval=0, maxval=ABORT)
choice = int(choice)
if choice == 1:
x = int(input("Enter the X Coordinate: "))
yCoordinate = int(input("Enter the Y Coordinate: "))
radius = int(input("Enter the Radius: "))
color = str(input("Enter desired Color (choose red, yellow, blue or green): "))
xCoordinate = (x - radius)
circle(x, yCoordinate, radius, color)
elif choice == 2:
xRectangle = int(input("Enter the X Coordinate: "))
yRectangle = int(input("Enter the Y Coordinate: "))
height = int(input("Enter Height: "))
width = int(input("Enter Width: "))
colorRectangle = str(input("Enter desired Color (choose red, yellow, blue or green): "))
rectangle(xRectangle, yRectangle, width, height, colorRectangle)
elif choice == 3:
COMMANDS[choice]()
elif choice == 4:
#Here you can adjust the lower and upper bounds of the random number
x, yCoordinate, color, radius = random.randint(10,40), random.randint(10,200), random.choice(COLORS), random.randint(10,200)
COMMANDS[1](x, yCoordinate, radius,color)
print("Drew a circle")
xRectangle, yRectangle, width, height, colorRectangle = random.randint(10,200), random.randint(10,200), random.randint(10,200),random.randint(10,200), random.choice(COLORS)
COMMANDS[2](xRectangle, yRectangle, width, height, colorRectangle)
print("Drew a rectangle")
elif choice == 5:
COMMANDS[choice]()
else:
print("Invalid, try again...")
continue
Upvotes: 1