【问题标题】:Turtle for loop to create image乌龟 for 循环创建图像
【发布时间】:2018-03-18 03:22:09
【问题描述】:
frame = [
    ",,,,,,,,,,,,,,,,,,,,,,,,,",
    ",,,,,,****,,,,,,,,,*,,,,,",
    ",,,,,*!!!!*,,,,,,,*¤*,,,,",
    ",,,,*!!!!!!*,,,,,,*¤¤*,,,",
    ",,,,*!!!!!!*,,,,,,*¤¤*,,,",
    ",,,*!!!!!!!!*,,,,*¤¤¤¤*,,",
    ",,*!!!!,*!!!*,,,,*¤¤%¤*,,",
    ",,*!!!!**!!!!*,,,*¤%%¤*,,",
    ",,*!!!!**!!!!*,,,,*%**,,,",
    ",,,*!!!!!!!!!!*,,,*!*,,,,",
    ",,,,**!!!!!!!!!*,*!!*,,,,",
    ",,,,,,***!!*!!!**!!*,,,,,",
    ",,,,,,,*%%*!!!!!*!!*,,,,,",
    ",,,,,,,*%%%**!!!*!*,,,,,,",
    ",,,,,,*,*%%%!!!!**,,,,,,,",
    ",,,,,,,***%%!!!**,,,,,,,,",
    ",,,,,,,,,,***!**,,,,,,,,,",
    ",,,,,,,,,,,*,!,*,,,,,,,,,",
    ",,,,,,,,,,,,****,,,,,,,,,",
    ",,,,,,,,,,,,,,,,,,,,,,,,,"
]

colors = {
            ","  :  "white",
            "*"  :  "black",
            "!"  :  "orange",
            "¤"  :  "red",
            "%"  :  "yellow"
}

from mobilechelonian import Turtle
dragon = Turtle()

dragon.speed(10)
for row in frame:
    for symbol in row:
        dragon.pencolor(colors[symbol])
        dragon.forward(1)
    dragon.penup
    dragon.backward(25)
    dragon.right(90)
    dragon.forward(1)
    dragon.left(90)

我在 jupyterhub 中有这段代码,它是用来绘制图片的。但是我只得到一个白色的小方块。另外,如果有人知道如何重新调整屏幕以全比例显示图片,我将不胜感激!

【问题讨论】:

  • 您忘记调用penup 方法:dragon.penup()。我也没有看到任何dragon.pendown() 电话。您可以只提高速度,或增加forward 步数。
  • dragon.penup 不调用penup 方法,它只是评估它,然后丢弃结果。要调用它,您必须添加括号,即dragon.penup()
  • 我重新制定了它并在 dragon.penup 中添加了 () 以及在 fragon.left(90) 之后的最后写了 dragon.pendown ,这给了我一个更奇怪的结果。

标签: python for-loop turtle-graphics


【解决方案1】:

以下替换你的代码(保持代码前的数据/变量不变),使用Python自带的turtle模块并添加缩放:

from turtle import Turtle, Screen
import tkinter as _

_.ROUND = _.BUTT

SCALE = 4

screen = Screen()
width, height = screen.window_width() / SCALE, screen.window_height() / SCALE
screen.setworldcoordinates(-width//2, -height//2, width//2, height//2)

dragon = Turtle(visible=False)
dragon.speed('fastest')
dragon.width(SCALE)

for row in frame:
    dragon.pendown()
    for symbol in row:
        dragon.pencolor(colors[symbol])
        dragon.forward(1)
    dragon.penup()
    dragon.backward(len(row))
    dragon.right(90)
    dragon.forward(1)
    dragon.left(90)

screen.exitonclick()

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2019-06-05
    相关资源
    最近更新 更多