2015-04-15 1 views
0

Im actuellement dans une classe de codage d'introduction et pour mon projet, je suis en train d'apprendre le module pyglet pour créer un jeu avec une image en arrière-plan, et ont un caractère sur la gauche qu'un utilisateur peut faire sauter, puis les sauts viennent de la droite à une vitesse définie que l'utilisateur va sauter par-dessus. J'ai besoin d'utiliser des classes pour l'affectation, et j'ai vraiment du mal à créer une classe d'image-objet. Heres mon code actuel:Création d'un jeu à l'aide pyglet (sprites en particulier)

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() 

je sais qu'il ya probablement mal, mais tout ce que j'ai essayé (en utilisant des jeux pré-existante comme exemples) n'a pas fonctionné non plus.

mon message d'erreur actuel est:

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

im vraiment coincé et ont essayé de comprendre cela pendant des heures et ne fait aucune marge de manœuvre. toute aide que vous pouvez offrir serait grandement appréciée. Merci beaucoup!

MISE À JOUR: i récemment changé le code, en remarquant le problème que Gustav a souligné, et changer l'appel final à

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

mais maintenant je reçois l'erreur

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' 

Répondre

0

Le message d'erreur est vous dire exactement quelle ligne est l'erreur et exactement ce qui ne va pas. Vous initialisez la classe Jump sans passer dans un argument pour le paramètre requis img.

Vous pouvez corriger ce soit en changeant la méthode d'initialisation ou votre appel à Jump().

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