User3230
User3230

Reputation: 55

call random values for drawing shapes and removing shapes

My program uses Turtle to draw shapes. It shows the following menu:

  1. Enter Circle
  2. Enter Rectangle
  3. Remove Shape
  4. Draw Shapes
  5. Exit

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

Answers (1)

Marsilinou Zaky
Marsilinou Zaky

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

Related Questions