Problème avec mon jeu Pygame
Meziane
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je cherche à créer un jeu avec Pygame utilisant plusieurs classes pour les différents objets, j'ai donc trouvé le code redondant et j'ai décidé de le simplifier en créant une super-classe Object mais cela ne fonctionne pas, voilà le code :
import pygame, random, sys def quit(): pygame.quit() sys.exit() def e(location): return 'C:\\Users\\Meziane\\Desktop\\space\\'+location pygame.init() screen = pygame.display.set_mode((640,640)) pygame.display.set_caption("Space") clock = pygame.time.Clock() score = 0 ammo = 0 menu = 0 count2 = 0 count=0 maxcount = 10 bg = pygame.image.load(e('BG.png')).convert_alpha() vectorx = 0 class Object(pygame.sprite.Sprite): def __init__(self,x,y,img): super().__init__() self.sprite = pygame.image.load(e(img)).convert_alpha() self.rect = self.sprite.get_rect(center = (x,y)) self.mask = pygame.mask.from_surface(self.sprite) class Asteroid(pygame.sprite.Sprite): def __init__(self,x,y): super().__init__(x,y,'asteroid.png') class Coin(Object): def __init__(self,x,y): super().__init__(x,y,'Coin.png') class Player(Object): def __init__(self,x,y): super().__init__(x,y,'shiep.png') class Text: def __init__(self,text,x,y,font,w,color,t): self.font = pygame.font.Font(font,w) self.text = self.font.render(text,t,color).convert_alpha() self.rect = self.text.get_rect(midleft = (x, y)) score_text = Text(str(score),50,25,None,50,'White',True) shiep = Player(0,590) l = [] c = [] while True: for event in pygame.event.get(): if event.type == pygame.QUIT: quit() if menu == 0: if count < maxcount: count+=1 else: count=0 maxcount = random.randint(10,25) if count2 < 60: count2+=1 else: count2=0 ammo +=1 keys_pressed = pygame.key.get_pressed() if keys_pressed[pygame.K_LEFT] and vectorx > -15: vectorx -= 3 if keys_pressed[pygame.K_RIGHT]and vectorx <15: vectorx += 3 if vectorx > 0: vectorx -=1 if vectorx < 0: vectorx +=1 shiep.rect.x += vectorx if shiep.rect.right <= 0: shiep.rect.left = 639 if shiep.rect.left >= 640: shiep.rect.right = 0 screen.blit(bg, (0,0)) screen.blit(shiep.sprite, shiep.rect) if count == 5: l.append(Asteroid(random.randint(0,640), -30)) if random.randint(0,60) == 5: c.append(Coin(random.randint(0,640), -30)) for i in l: i.rect.y += 15 screen.blit(i.sprite, i.rect) if i.rect.y >= 700: l.remove(i) if pygame.sprite.collide_mask(shiep, i): quit() for i in c: i.rect.y += 15 screen.blit(i.sprite, i.rect) if i.rect.y >= 700: c.remove(i) if pygame.sprite.collide_mask(shiep, i): c.remove(i) score += 100 score_text = Text("Score : "+str(score),10,25,None,50,'White',True) screen.blit(score_text.text, score_text.rect) ammo_text = Text("Balles : "+str(ammo),450,25,None,50,'White',True) screen.blit(ammo_text.text, ammo_text.rect) score += 1 elif menu == 1: pass pygame.display.update() clock.tick(60)
Vu que vous ne possedez pas les fichiers nécéssaires, je vous donne l'erreur qu'on m'a donné :
Traceback (most recent call last): File "c:\Users\Meziane\Desktop\space\main.py", line 99, in <module> if count == 5: l.append(Asteroid(random.randint(0,640), -30)) File "c:\Users\Meziane\Desktop\space\main.py", line 40, in __init__ super().__init__(x,y,'asteroid.png') File "C:\Users\Meziane\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pygame\sprite.py", line 116, in __init__ self.add(*groups) File "C:\Users\Meziane\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pygame\sprite.py", line 134, in add self.add(*group) TypeError: pygame.sprite.Sprite.add() argument after * must be an iterable, not int
Merci de votre aide ^^
A voir également:
- Problème avec mon jeu Pygame
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
- Jeu google - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
es-tu certain de ta ligne 38?
la ligne 38 est la ligne 37 dans mon code je pense qu'il y a du avoir un decalement de ligne
Es-tu certain de la déclaration de "class Asteroid"?