首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >turtle-graphics:我在使用钥匙来缩小和生长海龟时遇到了麻烦

turtle-graphics:我在使用钥匙来缩小和生长海龟时遇到了麻烦
EN

Stack Overflow用户
提问于 2020-09-29 02:15:52
回答 1查看 31关注 0票数 0

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

我尝试过使用if使它在大小为1的情况下不能缩小,但我无法让它工作。我想这可能与我缩小它的方法有关,但我不确定。

半相关的是,我设置了一个按钮,当按下时将海龟重置为默认设置。但是,如果我让乌龟长得更大,它就不会缩小那么多。我把它做得越大,它的违约似乎就变得越大。再一次,我认为这与我用来改变大小的方法有关,但我不确定。

代码语言:javascript
复制
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...")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-29 03:36:20

乌里娅·哈彭内斯让我注意到我使用的是turtlesize。我把它切换到shapesize,这样我就可以纠正代码了。

为了解决这个问题,我使用了shapesize,并将变量设置为a、b、c而不是大小。这使得我只需将每个值相加,然后将新值设置为shapesize

这也意味着对于重置函数,我只需要编写player.shapesize(1, 1, 1)

代码语言:javascript
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64107503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档