Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python海龟图形比例大小和位置_Python_Turtle Graphics - Fatal编程技术网

Python海龟图形比例大小和位置

Python海龟图形比例大小和位置,python,turtle-graphics,Python,Turtle Graphics,我需要一些关于Python海龟图形的帮助。我需要创建一个房子,它在中每次都变小,用于。。。在范围内()循环 我正在用三个基本的海龟形状组成的房子来创造风景。有没有一种方法,当我创建一个基本形状的房子,我可以使用为。。。in range()循环以更改房屋位置并使其尺寸更小 到目前为止,我正在尝试的是: def house(turtlename,hs,xroof,xdoor,xwindow,ywindow): housesquare(turtlename,hs) turtlename.pu()

我需要一些关于Python海龟图形的帮助。我需要创建一个房子,它在
中每次都变小,用于。。。在范围内()
循环

我正在用三个基本的海龟形状组成的房子来创造风景。有没有一种方法,当我创建一个基本形状的房子,我可以使用
为。。。in range()
循环以更改房屋位置并使其尺寸更小

到目前为止,我正在尝试的是:

def house(turtlename,hs,xroof,xdoor,xwindow,ywindow):
 housesquare(turtlename,hs)
 turtlename.pu()
 turtlename.goto ((int(hs*xroof),int(hs*1)))
 turtlename.pd()
 housetriangle(turtlename,hs)
 turtlename.pu()
 turtlename.goto((int(hs*xdoor),0 ))
 turtlename.pd()
 housedoor(turtlename,hs*0.7,hs*0.3)
 turtlename.pu()
 turtlename.goto((int(hs*xwindow), int(hs*ywindow)))
 turtlename.pd()
 housesquare(turtlename,hs*0.3)

使用此代码,我尝试绘制第二个较小尺寸的房子。
goto()
命令扰乱了整个形状,我必须手动完成所有操作,但任务是使用
来。。。在范围(4)
中绘制四个房子,每个房子都要小一些,并且距离要小一些。

您需要以相对的方式绘制,而不是绝对的方式绘制。您可以使用
.goto()
执行此操作,它看起来像:

turtle.goto(turtle.xcor() + hs * xwindow, turtle.ycor() + hs * ywindow)
也就是说,相对于您现在所在的位置移动。但是,完全避免
.goto()
并使用相对运动方法(如
.forward()
.backward()
.left()
,&
.right()
)可能更简单。下面是使用这些相对运动方法对代码进行的返工:

from turtle import Turtle, Screen

def housesquare(turtle, width):
    for _ in range(4):
        turtle.forward(width)
        turtle.left(90)

def housetriangle(turtle, base):
    for _ in range(3):
        turtle.forward(base)
        turtle.left(120)

def housedoor(turtle, height, width):
    for _ in range(2):
        turtle.forward(width)
        turtle.left(90)
        turtle.forward(height)
        turtle.left(90)

def house(turtle, hs, xroof, xdoor, xwindow, ywindow):
    housesquare(turtle, hs)

    turtle.penup()
    turtle.left(90)
    turtle.forward(hs)
    turtle.right(90)
    turtle.forward(hs * xroof)
    turtle.pendown()
    housetriangle(turtle, hs)

    turtle.penup()
    turtle.right(90)
    turtle.forward(hs)
    turtle.left(90)
    turtle.forward(hs * xdoor)
    turtle.pendown()
    housedoor(turtle, hs * 0.7, hs * 0.3)

    turtle.penup()
    turtle.backward(hs * xdoor)
    turtle.forward(hs * xwindow)
    turtle.left(90)
    turtle.forward(hs * ywindow)
    turtle.right(90)
    turtle.pendown()
    housesquare(turtle, hs * 0.3)

    turtle.penup()
    turtle.backward(hs * xwindow)
    turtle.left(90)
    turtle.backward(hs * ywindow)
    turtle.right(90)
    turtle.pendown()

screen = Screen()
yertle = Turtle()

size = 100

for factor in range(1, 4):

    house(yertle, size / factor, 0.0, 0.2, 0.6, 0.4)

    yertle.penup()
    yertle.forward(1.5 * size / factor)
    yertle.right(15)
    yertle.pendown()

yertle.hideturtle()

screen.exitonclick()
请注意,由于相对的绘制逻辑,它不仅可以绘制不同尺寸的房屋,还可以旋转房屋:


如果你们帮我创造一个房子,女巫每次都会变小。这将是一个很大的帮助