在Python Turtle Graphics中通过屏幕大小绘制线条并限制它们

时间:2016-04-01 02:35:20

标签: python turtle-graphics

我需要为我的方形螺旋绘图程序添加超过屏幕尺寸的初始长度的正确处理,但是,我不确定屏幕尺寸的长度是多少。我假设,因为Turtle图形插画师在屏幕中间开始,它位于程序窗口的中间位置。在这种情况下,下面的代码应该工作我只需要知道屏幕大小的长度。

while startLength >(screen size here):
    startLength=float(input("please enter a value greater than zero: "))

此外,这需要在所有平台上普遍运行,并假设没有像wx这样的跨平台。

我尝试过:

 while startLength >(turtle.forward(turtle.window_width()/2):
        startLength=float(input("please enter a value greater than zero: "))

但是当我输入300-350之间的长度时,它超过了窗口大小。此外,当它完成绘制第一条线并转动90度以绘制螺旋的下一条线(向下)时,它也超过了屏幕的大小。

我正在使用import turtle

以下是我的程序的完整代码。

from turtle import *
import turtle
startLength = float(input("Please enter the length of first side: "))
while startLength < 0:
    startLength=float(input("please enter a value greater than zero: "))
while startLength > (turtle.window_width()/2):
    startLength=float(input("please enter a value that will fit in the window: "))
decrement = int(input("Please enter the change in length of side: "))
while startLength > decrement:
    forward(startLength)
    right(90)
    startLength = startLength - decrement   
forward(startLength)
right(90)

1 个答案:

答案 0 :(得分:0)

理想情况下,人们可以将起点从中心移到左上角,但这里是如何从中心开始的。 对你的代码唯一真正的区别只是我要求起始长度,然后只是继续询问(while循环)它是否太长。忽略我使用raw_input(用于Python 2.x),同样适用于没有括号的打印语句。

import turtle  

bob = turtle.Turtle()
xx,yy= turtle.window_width(), turtle.window_height() 
print 'window size: ',xx,yy
bob.speed(15)

stl=int(raw_input("Please enter length of first side: "))   

while stl>turtle.window_width()/2:
    stl=int(raw_input("Please enter a shorter length that will fit into the window: "))

dec=int(raw_input("Please enter the change in length per iteration: "))   


while stl > dec:
    bob.forward(stl)
    bob.right(90)
    stl= stl- dec

turtle.done()

文字输出:

window size:  1280 1080
Please enter length of first side: 4000
Please enter a shorter length that will fit into the window: 3000
Please enter a shorter length that will fit into the window: 2000
Please enter a shorter length that will fit into the window: 1000
Please enter a shorter length that will fit into the window: 500
Please enter the change in length per iteration: 2

enter image description here

此外,如果窗户可能高于宽度,您可以检查高度。