如何使用Python,Pyglet移动精灵?

问题描述

无论我怎么努力,精灵都不会移动,代码是正确的,我不会问,但是我有一个绝望的情况,求助! 我已经使用过KeyStateHandler,但是它也不起作用。

import pyglet
from pyglet.window import keys

x = 300
y = 300                                           

w=pyglet.window.Window(600,600)
i = 
pyglet.resource.image("pl.png")
sprite = pyglet.sprite.Spite(i)

@w.event
def on_draw():
    w.clear()
    sprite.draw(x,y)
@w.event
def key(symbol,modifiers):
    if symbol == K.UP:
       x+=10

解决方法

如果要在函数内部修改全局变量,则需要指定它是全局变量。

@w.event
def key(symbol,modifiers):
    global x
    if symbol == K.UP:
       x += 10

如果不这样做,实际上是在创建一个 local 变量。 x += 10x = x + 10是同一件事。如果您在函数中编写此代码,而不将x声明为全局变量,则python会认为您想创建一个局部变量x,该变量等于全局变量x加10。当函数退出时,局部变量将被销毁,全局变量将保持不变。