使用pyglet创建游戏(特别是精灵)

时间:2015-04-15 01:18:31

标签: python class sprite pyglet

我目前正处于一个介绍编码类,对于我的最终项目,我正在尝试学习pyglet模块来创建一个背景中带有图片的游戏,并在左侧有一个用户可以跳转的角色,以及然后以设定的速度从右侧跳跃,用户将跳过。我需要使用类进行赋值,并且我真的很难使用创建精灵类。继承了我目前的代码:

import pyglet

window = pyglet.window.Window(700,700) 
image = pyglet.image.load('IMG_3315.jpg')#use 10x10 in. image
#image_2 = pyglet.image.load('IMG_3559.jpg') 

main_batch = pyglet.graphics.Batch()
score_label = pyglet.text.Label(text="Score: 0", x=570, y=650, batch=main_batch)
the_jump = pyglet.image.load("jumpsi.png") 

#horse = pyglet.sprite.Sprite(image_2, x = 50, y = 50)

# background_sound = pyglet.media.load(
#          'Documents/Leave The Night On.mp3',
#          streaming=False)


class Jump(pyglet.sprite.Sprite):   
    def __init__(self, img, x=0, y=0, blend_src=770, blend_dest=771, batch=None, group=None, usage='dynamic', subpixel=False):
        self.img = the_jump
        self.x = 50
        self.y = 50

    def draw(self):
        self.draw()

# verticle = Jump('verticle')

@window.event        
def on_draw():
    window.clear()
    image.blit(0, 0)
    main_batch.draw()
    window = Jump()
    #horse.draw()
    #background_sound.play()

if __name__ == "__main__":
    sprite = Jump()
    pyglet.app.run()

我知道它可能是错的,但我尝试的其他一切(使用预先存在的游戏作为例子)也没有用。

我当前的错误消息是:

Traceback (most recent call last):
  File "jumper.py", line 39, in <module>
    sprite = Jump()
TypeError: __init__() takes at least 2 arguments (1 given)

我只是真的陷入困境,一直试图想出这个问题几个小时而没有任何回旋余地。我们将非常感谢您提供的任何帮助。非常感谢!

更新:我最近更改了代码,注意到Gustav指出的问题,并将结束调用更改为

if __name__ == "__main__":
    sprite = Jump(the_jump)
    pyglet.app.run()

但现在我收到了错误

Traceback (most recent call last):
  File "jumper.py", line 39, in <module>
    sprite = Jump(the_jump)
  File "jumper.py", line 21, in __init__
    self.x = 50
  File "/Library/Python/2.7/site-packages/pyglet/sprite.py", line 459, in _set_x
    self._update_position()
  File "/Library/Python/2.7/site-packages/pyglet/sprite.py", line 393, in _update_position
    img = self._texture
AttributeError: 'Jump' object has no attribute '_texture'

1 个答案:

答案 0 :(得分:0)

错误消息告诉您错误所在的确切位置以及确切错误。您正在初始化Jump类而不传入所需参数img的参数。

您可以通过更改初始化方法或调用Jump()来解决此问题。

Here's an example for how to read Python's traceback.