我写了一段代码,让乌龟在盒子里四处走动。我正在尝试编写一个部分,以便在您按下某些键时更改其大小,例如g代表增长,s代表收缩。然而,我觉得我让它变大和变小的方式并不是很好。每当turtle处于默认大小时,我按下shrink,就会得到一个错误消息,指出它的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...")发布于 2020-09-29 03:36:20
乌里娅·哈彭内斯让我注意到我使用的是turtlesize。我把它切换到shapesize,这样我就可以纠正代码了。
为了解决这个问题,我使用了shapesize,并将变量设置为a、b、c而不是大小。这使得我只需将每个值相加,然后将新值设置为shapesize。
这也意味着对于重置函数,我只需要编写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)
returnhttps://stackoverflow.com/questions/64107503
复制相似问题