微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

圆圈应该在您单击时移动但消失

如何解决圆圈应该在您单击时移动但消失

对于课堂作业,班上的每个人都必须编写一个程序,当您单击该形状时,该形状将消失,然后重新出现在其他位置。但是,它只是在我的身上消失了。我的老师查看了一下,没有发现任何问题,但是我仍然不知道如何解决它。这是我写的代码

#-----import statements-----
import turtle as trtl
import random as rand
#-----game configuration----
dizzy_color = "red"
dizzy_size = 3
dizzy_shape = "circle"
#-----initialize turtle-----
dizzy = trtl.Turtle()
dizzy.shape(dizzy_shape)
dizzy.shapesize(dizzy_size)
dizzy.fillcolor(dizzy_color)
#-----game functions--------
def change_position():
  new_xpos = rand.randint(-100,100)
  new_ypos = rand.randint(-50,50)
  dizzy.penup()
  dizzy.hideturtle()
  goto(new_xpos,new_ypos)
  dizzy.showturtle()
  dizzy.pendown()
def dizzy_clicked(x,y): 
  change_position()
#-----events----------------
dizzy.onclick(dizzy_clicked)
wn = trtl.Screen()
wn.mainloop()

乌龟的名字也令人头晕。

解决方法

问题是您调用了goto()方法却忘记了该对象:

goto(new_xpos,new_ypos)

应该是:

dizzy.goto(new_xpos,new_ypos)

如果您或您的老师使用的是正确的Python编程环境,则应该已经看到相关的错误消息:

NameError: name 'goto' is not defined

这就是我编写该程序的方式:

from turtle import Screen,Turtle
from random import randint

DIZZY_COLOR = 'red'
DIZZY_SIZE = 3
DIZZY_SHAPE = 'circle'

def change_position():
    new_xpos = randint(-100,100)
    new_ypos = randint(-50,50)

    dizzy.hideturtle()
    dizzy.goto(new_xpos,new_ypos)
    dizzy.showturtle()

def dizzy_clicked(x,y):
    dizzy.onclick(None)  # disable handler inside handler
    change_position()
    dizzy.onclick(dizzy_clicked)

screen = Screen()

dizzy = Turtle()
dizzy.penup()
dizzy.shape(DIZZY_SHAPE)
dizzy.shapesize(DIZZY_SIZE)
dizzy.fillcolor(DIZZY_COLOR)
dizzy.onclick(dizzy_clicked)

screen.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。