Python龟棋盘

时间:2018-04-26 22:48:07

标签: python turtle-graphics

import turtle

def main():
     t=turtle
     s=int(input("Enter the length of each square: "))
     t.screensize(2000,2000,"lightblue")
     for row in range(0,5):
         for column in range(0,5):
             if (row+column)%2==0:
                 t.pendown()
                 t.fillcolor("black")
                 t.begin_fill()
                 square(s,row,column)
             else:
                 t.pendown()
                 t.fillcolor("white")
                 t.begin_fill()
                 square(s,row,column)
             t.goto(s+row*s,s+column*s)
def square(s,row,column):
     t=turtle
     t.penup()
     n=0
     for count in range(4):
          t.pendown()
          t.forward(s)
          t.left(90)
     t.end_fill()
     t.penup()
main()

所以今天我接到了一项任务,要求我创建一个5乘5的棋盘格。到目前为止,我有这个代码,它设法创建大部分棋盘格。但是,我仍然在某个地方犯了错误,或者我错过了一些关键信息。

enter image description here

附图显示了错误程序的样子。

程序通过创建黑色方块开始,可以在左下角看到。然后它一直工作到右上角,可以看到空白区域。

请帮忙。

3 个答案:

答案 0 :(得分:1)

让我们尝试标记而不是绘图。这可以提高我们的速度,同时简化逻辑。我们盖上一个大的黑色正方形来代表棋盘,然后将白色方块加盖到它上面:

{{1}}

<强>输出

enter image description here

答案 1 :(得分:0)

t.goto(s+row*s,s+column*s)移动到内部for循环的开头就可以了。

基本上我们需要先将乌龟移动到起始位置然后开始绘制。

我还清理了代码,将冗余行放在square函数中。 另外,添加t.penup()以便乌龟在到达起始位置并开始绘制之前不会显示绘图。

import turtle

def main():
     t=turtle
     t.penup()
     s=int(input("Enter the length of each square: "))
     t.screensize(2000,2000,"lightblue")
     for row in range(0,5):
         for column in range(0,5):              
              t.goto(s+row*s,s+column*s)
              if (row+column)%2==0:
                   square(s,row,column,"black")
              else:
                  square(s,row,column,"white")

def square(s,row,column,color):
     t=turtle
     t.pendown()
     t.fillcolor(color)
     t.begin_fill()
     t.penup()
     n=0
     for count in range(4):
          t.pendown()
          t.forward(s)
          t.left(90)
     t.end_fill()
     t.penup()
main()

enter image description here

答案 2 :(得分:0)

Anil_M几分钟就打败了我;但我想提供一些额外的代码清理,因为你有太多不必要的penuppendown和不必要的参数传递。

试试这个:

import turtle

t = turtle.Turtle()
t.speed(0)

def main():
     s=int(input("Enter the length of each square: "))
     for row in range(5):
         for column in range(5):
             if (row+column)%2==0:
                 color = "black"
             else:
                 color = "white"
             t.penup()
             t.goto(row*s,column*s)
             t.pendown()
             filled_square(s, color)

def filled_square(s, color):
     t.fillcolor(color)
     t.begin_fill()
     for count in range(4):
          t.forward(s)
          t.left(90)
     t.end_fill()

main()