繁体   English   中英

使用函数/循环简化/缩短 turtle 的代码

[英]Simplify/shorten code for turtle using functions/loops

我需要帮助来使用函数/循环来简化/缩短 turtle 的代码。

我正在使用 Python turtle 为角色编写程序。 我设法正确地绘制了角色,但我找不到使代码更短/更高效的方法,因为它看起来太长了。 作为新手,我真的需要帮助:

import turtle
win = turtle.Screen()
ninja = turtle.Turtle()

ninja.pensize(10)
ninja.forward(85)

ninja.penup()
ninja.goto(36,0)
ninja.pendown()
ninja.right(135)
ninja.forward(40)

ninja.left(135)
ninja.forward(67)

ninja.penup()
ninja.goto(58,-12)
ninja.pendown()
ninja.right(38)
ninja.forward(34)

ninja.penup()
ninja.goto(44,-32)
ninja.pendown()
ninja.right(52)
ninja.forward(38)

ninja.penup()
ninja.goto(5,-48)
ninja.pendown()
ninja.left(90)
ninja.forward(75)

ninja.penup()
ninja.goto(-4,-70)
ninja.pendown()
ninja.forward(92)

win.mainloop()

我查看了你的代码,得出了自己的改进逻辑:首先,写得笔不离纸; 第二,尽可能缩短它。 以下是大约四个较短的 turtle 命令,从不抬起笔并产生几乎相同的输出:

from turtle import Screen, Turtle

turtle = Turtle()
turtle.pensize(9)

turtle.forward(85)
turtle.backward(49)

turtle.left(45)
turtle.backward(40)

turtle.right(45)
turtle.forward(70)

turtle.right(38)
turtle.forward(7)
turtle.backward(33)
turtle.forward(24)

turtle.left(39)
turtle.backward(32)
turtle.right(90)
turtle.forward(43)

turtle.left(90)
turtle.forward(44)
turtle.backward(93)
turtle.forward(49)

turtle.left(90)
turtle.forward(23)
turtle.right(90)
turtle.forward(36)
turtle.backward(78)

turtle.hideturtle()
Screen().mainloop()

在此处输入图像描述

对于最后一笔,不提笔花费了我一个额外的 turtle 命令,因此可以使这段代码稍微短一些。 然而,在设计了一个非提升解决方案后,我们可以监控笔停止的位置并将其转化为简单的连接点:

from turtle import Screen, Turtle

points = [ \
    (85, 0), (36, 0), (8, -28), (78, -28), (83, -33), \
    (57, -12), (76, -27), (44, -28), (45, -71), (89, -70), \
    (-4, -71), (45, -71), (44, -48), (80, -47), (2, -48), \
]

turtle = Turtle()
turtle.pensize(9)

for point in points:
    turtle.goto(point)

turtle.hideturtle()
Screen().mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM