我正在尝试创建一个游戏,一只乌龟四处游走,吃点东西。应该出现一个点。当乌龟越过这个圆点时,被吃掉的圆点会消失,而一个新的随机点会出现。另外,海龟的大小每次都应该稍微增长。到目前为止,我有这个:
from turtle import *
from random import randrange
FRAMES_PER_SECOND = 10
bgcolor('black')
def turnRight():
global turtle
turtle.right(15)
def turnLeft():
global turtle
turtle.left(15)
def dotGood():
x = randrange(-250, 250)
y = randrange(-250, 250)
pen1 = Pen()
pen1.hideturtle()
pen1.penup()
pen1.goto(x, y)
pen1.dot(10, "red")
def eaten(z):
global turtle
global moving
if turtle == dotGood():
z = z + .25
def move():
global turtle
global moving
if moving:
for i in range(1):
turtle.penup()
turtle.shape('turtle')
size = .5
eaten(size)
turtle.shapesize(size, size, size)
turtle.color('green')
turtle.forward(10)
ontimer(move, 10 // FRAMES_PER_SECOND)
def start():
global moving
moving = True
move()
def stop():
global moving
moving = False
def border():
pen1 = Pen()
pen1.color("yellow")
pen1.pensize(3)
pen1.hideturtle()
pen1.speed(0)
pen1.penup()
pen1.goto(-275, -275)
pen1.pendown()
for i in range(4):
pen1.fd(550)
pen1.left(90)
def main():
border()
dotGood()
global turtle
turtle = Turtle()
onkey(turnRight, "Right")
onkey(turnLeft, "Left")
onkey(start, "Up")
onkey(stop, "Down")
listen()
if __name__ == "__main__":
main()
现在,所有的圆点都在不断地繁殖,而不是一次一个,乌龟经过一个圆点时不会生长,乌龟经过一个圆点时,圆点也不会消失。我能做些什么来解决这个问题?在
实施中的问题:
通过使食物成为
dot()
,你没有办法干净地删除它,而是使用一个圆形的海龟和stamp()
,因为它返回一个可以通过clearstamp()
干净删除的图章ID。在为了更好地处理,事件处理程序应该在处理当前事件时阻止新事件。在
您不了解
global
的用途,您需要它来实现某些功能,但没有您声明的那样频繁。在你的乌龟移动太快,无法控制。如果你没有代码来控制它在屏幕的边界内,它很容易丢失。在
以下代码尚未完成,但实现了基本功能:您可以移动乌龟,吃了食物就消失了,新的食物出现了,乌龟在吃食物时明显变胖了:
为了使示例更简单,我放弃了边界代码。在
相关问题 更多 >
编程相关推荐