turtle-graphics:我在使用按键缩小和增大海龟时遇到问题

turtle-graphics: I am having trouble using keys to shrink and grow the turtle

我写了一段代码,可以让乌龟在盒子里四处移动。如果您按下某些键,例如 g 表示增长,s 表示收缩,我正在尝试编写一部分来更改其大小。 但是,我觉得我让它变大变小的方式不是很好。每当乌龟处于默认大小并且我按下收缩时,我都会收到一条错误消息,指出它的 stetch_len/stretch_wid 不能是 0.

我已经尝试使用 if 来制作它,因此如果它的大小为 1,它就不会缩小,但我无法让它工作。我觉得可能和我缩小的方法有关系,但我不确定。

半相关,我设置了一个按钮,可以在按下时将乌龟重置为默认值。但是,如果我让乌龟变大,它就不会缩小那么多。我做得越大,它的默认值似乎就越大。同样,我认为这与我使用的更改大小的方法有关,但我不确定。

import turtle
import os

#Creates the window for the game
wn = turtle.Screen()
wn.bgcolor("cyan")
wn.title("Game Test")

#Creates the background for the game
border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("black")
border_pen.penup()
border_pen.setposition(-250,-250)
border_pen.pendown()
border_pen.pensize(1)
for side in range(4):
    border_pen.fd(500)
    border_pen.lt(90)
border_pen.hideturtle()

#Creates the turtle
player = turtle.Turtle()
player.color("black")
player.shape("square")
player.pensize(2)
#player.penup()
player.setposition(0, 0)
player.setheading(90)
player.shapesize(1)

playerspeed = 10



# This resets the player to its default, beginning state
def reset():
    player.setposition(0, 0)
    player.setheading(90)
    player.shapesize(1)


# Makes the character grow larger
def grow():
    size = player.turtlesize()
    increase = tuple([1 + num for num in size])
    player.turtlesize(*increase)
    return

#Makes the character shrink
def shrink():
    size = player.turtlesize()
    decrease = tuple([-1 + num for num in size])
    if player.turtlesize() == 1:
        return
    else:
        player.turtlesize(*decrease)
    return

# Prints the characters coordinates in a seperate window from the game
def place():
    b, c = player.pos()
    print("\n")
    print(b, ",", c)


# These are the keys you push to activate different things
# The movement uses a number pad, which make programming diagonal keys easier.
turtle.listen()
turtle.onkeypress(reset, "5")
turtle.onkey(grow, "g")
turtle.onkey(shrink, "s")
turtle.onkey(place, "p")


input("Press any key to exit...")

Uriya Harpeness 引起了我的注意,我正在使用 turtlesize。我将其切换为 shapesize,这样我就可以更正代码。

为了解决这个问题,我使用了 shapesize 并将变量设置为 a、b、c 而不是大小。这让我可以添加到每个值,然后将新值设置为 shapesize.

也是reset函数的意思,我只需要写player.shapesize(1, 1, 1)

#Makes the character shrink
def shrink():
    a, b, c = player.shapesize()
    if a > 1:
        a = a - 1
        b = b - 1
        c = c - 1
        player.shapesize(a, b, c)
        print(a, b, c)
    else:
        print(a, b, c)
        return