乌龟图形:我无法使用按键来缩小和扩大乌龟

时间:2020-09-28 18:15:51

标签: python python-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...")

1 个答案:

答案 0 :(得分:0)

我使用Toast.makeText(this, "text", Toast.LENGTH_SHORT).setGravity(Gravity.TOP, 0, 0).show(); 引起了Uriya Harpeness的注意。我将其切换为turtlesize,这使我可以更正代码。

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

对于复位功能,我只需要写shapesize

player.shapesize(1, 1, 1)