Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur dans mon programme, mais je ne c'est pas co

j'ai demande a un développeur professionnel il a pas trouve

2 juin 2020 à 10:55:41

Bonjour je débute en programmation et j'ai un problème dans mon programme (que je fais en même temps que graven puisque j'apprend avec sa serie) mais j'ai une erreur dans mon programme que lui n' a pas j'ai vérifié 4 fois mais je ne trouve pas l'erreur les programmes sont là : https://www.dropbox.com/sh/ipoy2s5dhcl53k2/AACJ3cSTQfl9Q1PftpVwjUQ2a?dl=0
  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 11:57:20

Personne ne va cliquer sur ton lien. C'est quoi l'erreur ? Et le code ?
  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 18:19:09

Programme main.py:


import pygame

from game import Game

game = Game()


pygame.init()



#creer la fenetre
pygame.display.set_caption("Comète Fall")
screen = pygame.display.set_mode((1080,720))


running = True



#boucle
while running:
#affichage des images
background = pygame.image.load('assets/bg.jpg')
screen.blit(background, (0, -200))

screen.blit(game.player.image, game.player.rect)

for projectile in game.player.all_projectiles:
projectile.move()

for monster in game.all_monster:
monster.forward()

game.player.all_projectiles.draw(screen)

game.all_monster.draw(screen)

if game.pressed.get(pygame.K_RIGHT)and game.player.rect.x + game.player.rect.width < screen.get_width():
game.player.move_right()
elif game.pressed.get(pygame.K_LEFT)and game.player.rect.x > 0:
game.player.move_left()
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True

if event.key == pygame.K_SPACE:
game.player.launch_projectile()

elif event.type == pygame.KEYUP:
game.pressed[event.key] = False

programme game.py :

import pygame
from player import Player
from monster import Monster


class Game :
def __init__(self, game):
self.game = Game(self)
self.all_player = pygame.sprite.Group()
self.player = Player()
self.all_player.add(self.player)
self.all_monster = pygame.sprite.Group()
self.pressed = {}
self.spawn_monster()

def check_collision(self, sprite, group):
return pygame.sprite.spritecollide(sprite, group, False, pygame.sprite.collide_mask)

def spawn_monster(self):
monster = Monster(self)
self.all_monster.add(monster)

programme player.py :

import pygame

from projectile import Projectile

class Player(pygame.sprite.Sprite):

def __init__(self, game):
super().__init__()
self.game = game
self.health = 100
self.max_health = 100
self.attack = 10
self.velocity = 7
self.player = Player(self)
self.all_projectiles = pygame.sprite.Group()
self.image = pygame.image.load('assets/player.png')
self.rect = self.image.get_rect()
self.rect.x = 450
self.rect.y = 500


def launch_projectile(self):
projectile = Projectile(self)
self.all_projectiles.add(projectile)


def move_right(self):
if not self.game.check_collision(self, self.game.all_monster):
self.rect.x += self.velocity

def move_left(self):
self.rect.x -= self.velocity

programme projectile.py:

import pygame

class Projectile(pygame.sprite.Sprite):
def __init__(self, player):
super().__init__()
self.velocity = 12.5
self.player = player
self.image = pygame.image.load('assets/projectile.png')
self.image = pygame.transform.scale(self.image, (50, 50))
self.rect = self.image.get_rect()
self.rect.x = player.rect.x + 120
self.rect.y = player.rect.y + 80
self.origin_image = self.image
self.angle = 0

def rotate(self):
self.angle += 8
self.image = pygame.transform.rotozoom(self.origin_image, self.angle, 1)
self.rect = self.image.get_rect(center=self.rect.center)

def remove(self):
self.player.all_projectiles(self)


def move(self):
self.rect.x += self.velocity
self.rotate()

if self.player.game.check_collision(self, self.player.game.all_monster):
self.remove

if self.rect.x > 1080:
self.remove

programme monster.py :

import pygame

class Monster (pygame.sprite.Sprite):
def __init__(self, game):
super().__init__()
self.game = game
self.health = 100
self.max_health = 100
self.attack = 5
self.image = pygame.image.load('assets/mummy.png')
self.rect = self.image.get_rect()
self.rect.x = 1000
self.rect.y = 540
self.velocity = 5

def forward(self):
if not self.game.check_collision(self, self.game.all_player):
self.rect.x -= self.velocity

Voila chaque programme dans leur intégralité. 

Merci de t'intéresser aux sujets


  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 18:44:33

"j'ai demande a un développeur professionnel il a pas trouve"

on dirait un putaclic youtube.

mais ... j'ai quand même téléchargé par curiosité, problème lors de l'extraction. Ensuite j'ai effacé __pycache__ au cas où y aurait un coup tordu.

F5 et ... y a une erreur dès la ligne 4.

-
Edité par josmiley 2 juin 2020 à 18:44:46

  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

2 juin 2020 à 19:02:22

josmiley a écrit:

"j'ai demande a un développeur professionnel il a pas trouve"

on dirait un putaclic youtube.

mais ... j'ai quand même téléchargé par curiosité, problème lors de l'extraction. Ensuite j'ai effacé __pycache__ au cas où y aurait un coup tordu.

F5 et ... y a une erreur dès la ligne 4.

-
Edité par josmiley il y a 15 minutes

Ça sert à rien d'essayer, on n'est pas des développeurs professionnels. On ne trouvera jamais ...

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

2 juin 2020 à 20:03:33

Dibéo a écrit:

Voila chaque programme dans leur intégralité. 

thelinekioubeur a écrit:

C'est quoi l'erreur ?

Dibéo, est-ce que tu débug sans lire les messages d'erreur ? Nous non plus, donc poste les avec.

Et au passage il y a un bouton pour poster du code, c'est l'avant dernier qui ressemble à ça : </>

Parce que là on perds l'indentation, et sans message d'erreur, on a aucune idée de où chercher.

  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

2 juin 2020 à 20:04:27

Bonjour. Comme je suis trop bon (et sans doute aussi trop c** il faut se l'avouer), j'ai cliqué sur le lien.

class Game :
    def __init__(self):
        self.all_player = pygame.sprite.Group()
        self.player = Player(self)
        self.all_player.add(self.player)
        self.all_monster = pygame.sprite.Group()
        self.pressed = {}
        self.spawn_monster()
class Player(pygame.sprite.Sprite):

    def __init__(self, game):
        super().__init__()
        self.game = game
        self.health = 100
        self.max_health = 100
        self.attack = 10
        self.velocity = 7
        self.all_projectiles = pygame.sprite.Group()
        self.image = pygame.image.load('assets/player.png')
        self.rect = self.image.get_rect()
        self.rect.x = 450
        self.rect.y = 500

Quant à ta persévérance ... il va falloir s'accrocher ... 'Un développeur professionnel', je pleure de rire.

Sinon je trouve que les sprite sont très jolis, donc si tu les a fait toi-même bien joué, sinon tu pourrais complimenter cette personne de ma part.


  • Partager sur Facebook
  • Partager sur Twitter

typage structurel ftw

2 juin 2020 à 20:10:30

digammaF a écrit:

Bonjour. Comme je suis trop bon (et sans doute aussi trop c** il faut se l'avouer), j'ai cliqué sur le lien.


Je connaissais le C, le C#, et le C++ ... mais pas le C**

Encore une N-ième version ?

-
Edité par josmiley 2 juin 2020 à 20:10:46

  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

2 juin 2020 à 20:23:23

Jveux bien croire qu'un développeur professionnel n'a pas pu t'aider avec des infos comme ça :-°
  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 21:34:32

(désole je l'ai oublie dans le message precedent)Le message d'erreur est :
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "C:/Users/Lenovo/Documents/Programation/python/game/main.py", line 4, in <module>
    game = Game()
TypeError: __init__() missing 1 required positional argument: 'game'

-
Edité par Dibéo 2 juin 2020 à 21:36:05

  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 22:23:00

Comme le dit l'erreur il manque un argument

-
Edité par thelinekioubeur 2 juin 2020 à 22:23:08

  • Partager sur Facebook
  • Partager sur Twitter
2 juin 2020 à 23:14:01

Quand je vois

class Game :
    def __init__(self, game):
        self.game = Game(self)

C'est direct la case tutoriel et apprentissage des bases. Pour moi ça c'est un Maximum Recursion

  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

3 juin 2020 à 10:58:23

Ca me dit pas comment résoudre mon probleme il manque encore des infos pour savoir ?

Je sais qu'il manque un argument mais je sais pas lequelle ?

-
Edité par Dibéo 3 juin 2020 à 11:01:46

  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2020 à 11:40:30

Dibéo a écrit:

Ca me dit pas comment résoudre mon probleme il manque encore des infos pour savoir ?

Je sais qu'il manque un argument mais je sais pas lequelle ?

Non mais ton code ne fonctionnera pas, conceptuellement il y a une grosse erreur... à chaque création de jeu, tu crées à nouveau un jeu, qui va en créer un autre et ainsi de suite. Faut virer cette ligne self.game = Game(self), c'est obligatoire.

Je pense vraiment que tu sais pas trop ce que tu fais... self représente quoi pour toi ?

  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

3 juin 2020 à 11:41:24

missing 1 required positional argument: 'game'
l'argument game...
  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2020 à 15:08:11

??? J'ai donné un code qu'il suffit juste de copier-coller et même là le problème n'est pas résolu? J'ai manqué un truc ?
  • Partager sur Facebook
  • Partager sur Twitter

typage structurel ftw

3 juin 2020 à 16:29:24

digammaF a écrit:

??? J'ai donné un code qu'il suffit juste de copier-coller et même là le problème n'est pas résolu? J'ai manqué un truc ?


On peut facilement expliquer pourquoi, faut pas hésiter à y indiquer les manques de logique pour que le PO les évite plus tard.
  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

3 juin 2020 à 18:55:10

Dibéo a écrit:

Ca me dit pas comment résoudre mon probleme il manque encore des infos pour savoir ?

Je sais qu'il manque un argument mais je sais pas lequelle ?

C'est toi qui a codé la classe Game, donc on peut penser que c'est toi le mieux placé pour savoir quel argument elle attend ?

EDIT : Si tu es aussi paumé que ça, c'est peut-être à cause du cours que tu suis qui est pas adapté à ton niveau (ou qui est juste mal foutu) ?

N'hésite pas à changer de cours si tu galères, par exemple celui de Swinnen est pas trop mal : https://inforef.be/swi/download/apprendre_python3_5.pdf

-
Edité par LoupSolitaire 3 juin 2020 à 18:57:36

  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

3 juin 2020 à 21:00:05

Enfaîte c'est bon merci diagammaf a résolu mon problème est j'ai compris que enfaîte je répéter game dans game ce qui faisait une sorte de boucle infini donc ça na pas fonctionner.
  • Partager sur Facebook
  • Partager sur Twitter
12 juillet 2022 à 0:30:24

moi,j'ai testé ton prog,mais pour moi sa affiche :

     "C:\Users\Aicha\element team\venv\Scripts\python.exe" "C:/Users/Aicha/element team/main.py"

pygame 2.1.2 (SDL 2.0.18, Python 3.10.5)

Hello from the pygame community. https://www.pygame.org/contribute.html

Traceback (most recent call last):

  File "C:\Users\Aicha\element team\main.py", line 6, in <module>

    game = Game(game)

  File "C:\Users\Aicha\element team\game.py", line 8, in __init__

    self.game = Game(self)

  File "C:\Users\Aicha\element team\game.py", line 8, in __init__

    self.game = Game(self)

  File "C:\Users\Aicha\element team\game.py", line 8, in __init__

    self.game = Game(self)

  [Previous line repeated 496 more times]

RecursionError: maximum recursion depth exceeded

Process finished with exit code 1

  • Partager sur Facebook
  • Partager sur Twitter
12 juillet 2022 à 12:00:13

un peu de déterrage (2ans), l'explication de ça est donné dans le message de fred1599 du 3/06/2022 à 11h40:

fred1599 a écrit:

Dibéo a écrit:

Ca me dit pas comment résoudre mon probleme il manque encore des infos pour savoir ?

Je sais qu'il manque un argument mais je sais pas lequelle ?

Non mais ton code ne fonctionnera pas, conceptuellement il y a une grosse erreur... à chaque création de jeu, tu crées à nouveau un jeu, qui va en créer un autre et ainsi de suite. Faut virer cette ligne self.game = Game(self), c'est obligatoire.

Je pense vraiment que tu sais pas trop ce que tu fais... self représente quoi pour toi ?


La conclusion c'est de virer ce game dans la déclaration du __init__ de la classe Gamme et le self.gamme=Game(self)
  • Partager sur Facebook
  • Partager sur Twitter
14 juillet 2023 à 12:50:07

je l'ai fait mais toujours la meme erreur
  • Partager sur Facebook
  • Partager sur Twitter
17 juillet 2023 à 16:51:19

Si tu reviens seulement une fois par an sur ce sujet ... tu vas pas beaucoup avancé. 

Recréé un sujet en mettant ton code (en utilisant le bouton </>) et les messages d'erreurs

Dans l'idée, tu as/avait un Game qui créé un Game qui créé un Game qui créé un Game .......

  • Partager sur Facebook
  • Partager sur Twitter
17 juillet 2023 à 23:32:47

@greenhackerboy Bonsoir, merci de créer votre propre sujet en nous fournissant le code que vous avez écrit inséré sur le forum à l'aide du bouton code </> de la barre d'outil; une description de votre problématique et les messages d'erreurs si il y en a.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter