【问题标题】:Python User Input CheckerboardPython 用户输入棋盘
【发布时间】:2017-10-16 22:28:43
【问题描述】:

对于我的任务,我正在尝试制作一个 5 x 5 的棋盘,用户可以选择颜色和正方形大小。我知道了如何根据用户输入制作正方形大小和颜色,但在如何开始循环或如何创建 5 x 5 棋盘格方面遇到了一些麻烦。我只是不确定我能做些什么来移动乌龟来制作一个 5x5 板。到目前为止我已经完成了这么多,如果有人可以帮助我开始,我将非常感激!

import turtle

def main():
    length = int(input("Enter a desired length (from 1-150.)"))
    keepGoing = 'y'

    while keepGoing == 'y':
        print("What color would you like to draw?")
        print("    Enter 1 for Black")
        print("          2 for Blue")
        print("          3 for Red")
        print("          4 for Green")
        choice = int(input("          Your choice?"))

        if choice == 1:
            square(0,0,length,'black')
        elif choice == 2:
            square(0,0,length,'blue')
        elif choice == 3:
            square(0,0,length,'red')
        elif choice == 4:
            square(0,0,length,'green')
        else:
            print("ERROR: only enter 1-4.")

def square(x, y, width, color):
    turtle.clear()
    turtle.penup()            # Raise the pen
    turtle.goto(x, y)         # Move to (X,Y)
    turtle.fillcolor(color)   # Set the fill color
    turtle.pendown()          # Lower the pen
    turtle.begin_fill()       # Start filling
    for count in range(4):    # Draw a square
        turtle.forward(width)
        turtle.left(90)
    turtle.end_fill()
#calling main function
main()

【问题讨论】:

  • 只需绘制并填充每个正方形。遍历所有方块,确定它们的位置。然后在每个位置绘制一个适当颜色的正方形。

标签: python input turtle-graphics


【解决方案1】:

首先,您在没有任何接口的情况下开发了您的用户界面——下次您可能会以另一种方式开始。其次,不要重新发明布尔值(例如while keepGoing == 'y')。第三,对于您绘制一个正方形所花费的代码量,我们可以标记整个网格:

from turtle import Turtle, Screen

COLORS = ["Black", "Blue", "Red", "Green"]
GRID = 5
STAMP_UNIT = 20

def main():
    length = int(input("Enter a desired length (from 1-150): "))
    keepGoing = True

    while keepGoing:
        print("What color would you like to draw?")
        for i, color in enumerate(COLORS, start=1):
            print("    Enter {} for {}".format(i, color))
        choice = int(input("          Your choice? "))

        if 1 <= choice <= len(COLORS):
            grid(-length * GRID // 2, -length * GRID // 2, length, COLORS[choice - 1])
            keepGoing = False
        else:
            print("ERROR: only enter 1-{}.".format(len(COLORS)))

def grid(x, y, width, color):
    tortoise = Turtle('square', visible=False)
    tortoise.shapesize(width / STAMP_UNIT)
    tortoise.color(color)
    tortoise.penup()

    for dy in range(0, GRID):
        tortoise.goto(x, y + width * dy)

        for dx in range(dy % 2, GRID, 2):
            tortoise.setx(x + width * dx)

            tortoise.stamp()

screen = Screen()

main()

screen.exitonclick()

用法

> python3 test.py
Enter a desired length (from 1-150): 30
What color would you like to draw?
    Enter 1 for Black
    Enter 2 for Blue
    Enter 3 for Red
    Enter 4 for Green
          Your choice? 2

输出

这是一个完美的例子,说明冲压比绘图更简单、更快捷。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多