簡體   English   中英

調用隨機值以繪制形狀和刪除形狀

[英]call random values for drawing shapes and removing shapes

我的程序使用 Turtle 來繪制形狀。 它顯示以下菜單:

  1. 進入圈子
  2. 輸入矩形
  3. 刪除形狀
  4. 繪制形狀
  5. 出口

如果用戶輸入“4”,程序應該按照它們在列表中的順序繪制形狀。

[問題] :所以它應該畫一個圓和一個隨機值的矩形。 如果用戶輸入“3”,我在嘗試這樣做以及刪除形狀時遇到問題。 我留下了一個例子,說明我使用隨機的 function 來繪制圓形。

另外,如果選擇 == 3(刪除形狀),我的代碼應該是什么?

非常感謝所有幫助。 謝謝!

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

您的函數缺少參數,使用“elif”也是一個好習慣,它減少了您進行的檢查次數,也將減少邏輯錯誤

另外,請務必參考文檔以獲取語法幫助! https://docs.python.org/3.3/library/turtle.html?highlight=turtle#turtle.clear

我對您的代碼進行了一些修改以實現您所需要的

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM