这是我的密码。每次我循环,它都会产生乌龟的闪烁,而不是我所希望的干净的动作
我相信错误在底部的While-True循环中,我尝试了各种方法来消除闪烁,但都不成功。使用PyCharm和最新版本的Python
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
wn = turtle.Screen()
wn.setup(SCREEN_WIDTH, SCREEN_HEIGHT)
wn.title("Space Arena:")
wn.bgcolor("black")
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
class Sprite():
def __init__(self, x, y, shape, color):
self.x = x
self.y = y
self.shape = shape
self.color = color
dx =0
dy =0
def update(self):
self.x += self.dy
self.y += self.dy
def render(self, pen):
pen.goto(self.x, self.y)
pen.shape(self.shape)
pen.color(self.color)
pen.stamp()
player = Sprite(0, 0, "triangle", "white")
player.dx = -1
player.dy = 0.5
enemy = Sprite(0, 100, "square", "red")
enemy.dx = -1
enemy.dy = 0.3
powerup = Sprite(0, -100, "circle", "blue")
powerup.dx = -1
powerup.dy = 0.1
#sprites list
sprites = []
sprites.append(player)
sprites.append(enemy)
sprites.append(powerup)
#main loop
while True:
#clear screen
pen.clear()
#do game stuff
#uptate sprites
for sprite in sprites:
sprite.update()
#render sprite
for sprite in sprites:
sprite.render(pen)
#update the screen
turtle.update()
wn.mainloop()
主要问题是您没有正确地使用
turtle.update()
,即在关闭turtle.tracer()
的上下文中。然而,还有一些次要的问题:while True:
不应该处于像turtle这样的事件驱动环境中;与其让三个精灵实例操纵(并不断改变)一只pen
海龟,不如让精灵海龟和elminate在我们工作时跺脚按照上述思路重新编写代码:
你应该得到你想要的平滑运动。(除非PyCharm和
mainloop()
之间存在冲突。)相关问题 更多 >
编程相关推荐