2017-10-16 233 views
-1

对于我的任务,我试图在用户选择颜色和方形尺寸时制作5 x 5棋盘格。我知道如何根据用户输入制作方形尺寸和颜色,并且在如何启动循环或如何创建5 x 5棋盘格时遇到了一些问题。我只是不确定我能做些什么来移动乌龟来制作5x5的纸板。到目前为止,我已经做了很多工作,如果有人能够帮助我开始,我会非常感激!Python用户输入棋盘

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() 
+0

只需绘制并填充每个方块。循环所有的方块,确定它们的位置。然后在每个位置绘制适当颜色的方形。 –

回答

0

首先,您开发的用户界面没有任何接口 - 您可能会在下次开始时采用其他方式。其次,不要改造布尔值(例如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 

输出

enter image description here

这是一个完美的例子,冲压可以使事情变得比绘图更简单快速。