Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
961 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python pygame aide pour un projet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python pygame aide pour un projet

n°2281778
kimminv
Posté le 19-05-2016 à 21:40:56  profilanswer
 

Bonjour !
 
Dans le cadre du projet pour l'épreuve de bac en ISN, nous avons décidé de créer un jeu labyrinthe en 4 niveaux en language python et pygame.
 
Voilà le problème, notre groupe a décidé de faire un multijoueur en local, mais le 2e joueur ne veut pas s'afficher, sans compter que le bouton " option " ne marche pas, et que la fenêtre plante quand on quitte. Je ne comprends pas comment ni pourquoi ça ne fonctionne pas. Toute aide sera la bienvenue, même infime.
 
Voici le lien du dossier : http://www.mediafire.com/download/ [...] 2/Laby.zip
 
Ps : j'ai déjà posté un autre message de ce genre, je ne sais pas si il fallait que je continue sur le même topic ou pas... voici le lien du topic : http://forum.hardware.fr/hfr/Progr [...] 5014_1.htm

mood
Publicité
Posté le 19-05-2016 à 21:40:56  profilanswer
 

n°2281779
bistouille
Posté le 20-05-2016 à 00:50:35  profilanswer
 

C'est une erreur classique.
 

Code :
  1. if choix == 'n1' or 'n2' or 'n3':
  2.         start(1, choix)


 
Là python comprend si choix vaut n1, c'est ok, sinon il vaut n2.
 

Code :
  1. >>> a = 4
  2. >>> a == 1 or 2
  3. 2
  4. >>>


 
Donc utilise une liste ou un tuple.
 

Code :
  1. if choix in('n1',  'n2', 'n3') :
  2.         start(1, choix)


 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2281815
kimminv
Posté le 20-05-2016 à 19:14:26  profilanswer
 

Merci infiniment ! Je ne connaissais pas cette méthode, ça me sauve presque la vie !  
 
Si vous auriez une piste pour les " pièges " ( que j'ai oublié de mentionner ) : le rond noir c'est un trou pour revenir au départ, le rond vert, pour aller à l'autre rond vert, et visiblement ça ne fonctionne pas vraiment...  
 
Je vous remercie encore une autre fois, merci beaucoup.

n°2281816
rat de com​bat
attention rongeur méchant!
Posté le 20-05-2016 à 19:34:37  profilanswer
 

A toute première vue:
 
Pour le plantage, votre version de Python n'a pas de console? Je vois un message d'erreur

Code :
  1. Traceback (most recent call last):
  2.   File "...\Laby\LabyProjet.py", line 300
  3. , in <module>
  4.     fenetre.blit(fond, (0,0))
  5. NameError: name 'fond' is not defined


 
Je vois aussi plein de

Code :
  1. libpng warning: Interlace handling should be turned on when using png_read_image

comme avec la version d'avant. D'accord, c'est juste un warning mais c'est quand même mieux si on peut le faire disparaître...
 
Par ailleurs pour faire fonctionner le jeu je suis obligé de rajouter deux lignes au début (merci internet!), je ne sais pas si c'est vraiment un bug ou mon PC...

Code :
  1. import os
  2. os.chdir("C:\....\Laby" )


 
Si j'ai le temps je regarderai plus en détail pour le reste.

n°2281822
bistouille
Posté le 20-05-2016 à 19:59:10  profilanswer
 

,Ce n'est pas un bug, python prend pour référence le répertoire courant où le script a été lancé comme espace de travail.
 
J'avais bien l'erreur de var indéfini, mais pas les warnings que tu as.
 
 


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2281823
rat de com​bat
attention rongeur méchant!
Posté le 20-05-2016 à 20:19:29  profilanswer
 

Pour le warning j'ai fait des recherches, apparemment c'est un bug dans libpng: http://stackoverflow.com/questions [...] read-image . J'ai peut-être installé une mauvaise version de pygame. :o  
 
Pour le chdir() c'est bien ma manière de lancer le script, j'ai fait des essais.
 
Bon ben sur trois trucs deux qui ne sont pas importants, désolé... :o

n°2281824
kimminv
Posté le 20-05-2016 à 20:32:41  profilanswer
 

Pour le plantage : oui, j'ai bien une console, et oui je vois le message d'erreur et j'essaie de trouver ce qui va pas

n°2281825
bistouille
Posté le 20-05-2016 à 20:56:28  profilanswer
 

Mais, en fait, il n'y a rien dans ton application qui fait que ton perso retourne à son point de départ  :pt1cable:  
 
Un indice, pour la façon de procéder (que je ferais), serait d'ajouter une méthode teleporter à ton perso qui prendrais donc comme arguments x, et y, ainsi s'il tombe dans un piège, tu le renvois en position de départ an appelant cette méthode avec comme paramètres 1 et 1.


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
n°2281827
kimminv
Posté le 20-05-2016 à 21:10:39  profilanswer
 

Pourtant si, je l'ai placé dans les classes :
 
def isOnPortal(self):
        if self.niveau.structure[self.case_y][self.case_x] == 'B':
            return True
        else:
            return False
 
    def isOnTrap(self):
        if self.niveau.structure[self.case_y][self.case_x] == 'C':
            return True
        else:
            return False
 
 
Et normalement, ça marche avec ça dans le programme principal :
 
if popo.isOnTrap():
                popo.deplacer('départ')
            elif popo.isOnPortal():
                popo.deplacer('avance')
 
Du moins ça marchait avant :o

n°2281829
bistouille
Posté le 20-05-2016 à 21:32:36  profilanswer
 

Ok, mais dans ta méthode déplacer, il n'y  a aucune condition pour gérer ça.
 
Et ça n'aurait pas de sens de le faire via cette méthode qui doit se contenter de déplacer ton personnage d'une seule case, relatif aux événements clavier.


---------------
On croit souvent avoir vu le fond de la stupidité humaine, et il parfois nécessaire qu'on vous rappelle qu'elle n'a pas de fond.
mood
Publicité
Posté le 20-05-2016 à 21:32:36  profilanswer
 

n°2281831
kimminv
Posté le 20-05-2016 à 21:44:08  profilanswer
 

Ah d'accord merci, je vais essayer de faire ça alors

n°2281834
rat de com​bat
attention rongeur méchant!
Posté le 20-05-2016 à 22:19:52  profilanswer
 

Pour l'option, le problème dont tu parles c'est bien le bouton "quitter"? Parce que le menu option (vide) j'arrive à y accéder sans problème. Regarde bien les deux dernières conditions, tu ne remarques rien?

Code :
  1. if event.button == 1 and event.pos[1] > 644 and event.pos[1] < 712 and event.pos[0] > 735 and event.pos[0] < 663:


Par ailleurs c'est pas cohérent, la variable de la boucle s'appelle "continuer_aide", le symbole '?' fait penser à l'aide mais le menu est titré "options"...

 

Pour le message d'erreur, je n'ai pas cherché à comprendre la logique du code mais le problème disparaît quand on corrige une faute de frappe dans le nom d'une variable: continer_aide. Il n'y a pas une option Python pour rendre obligatoire la déclaration préalable de ses variables? Cela peut éviter bien des ennuis...

 

Pour le reste bistouille en a parlé.


Message édité par rat de combat le 20-05-2016 à 22:21:16
n°2281849
kimminv
Posté le 21-05-2016 à 09:58:36  profilanswer
 

Pour l'option, non avant ça ne marchait pas le fait d'appuyer sur " ? ", mais c'est réglé maintenant :)
 Ah oui merci !  
 
Oui, le nom des variables ne correspond pas avec le titre, mais c'est parce que sur le moment j'ai mis ce qui me passait par la tête, et qu'on savait pas encore si nous devions mettre les règles du jeu dans cette partie ou plutôt les boutons de réglages, comme par exemple un curseur pour régler le son, même si finalement nous n'y arrivons pas... Du coup ça n'a pas changé depuis le début, et je comptais régler ça après le problème majeur du multijoueur à présent réglé
 
 
Il semble que je fasse beaucoup de fautes d'inattention, merci de les relever.

n°2281850
kimminv
Posté le 21-05-2016 à 10:21:19  profilanswer
 

Voilà, le problème des pièges est réglé, merci bistouille !
J'ai rajouté ça :
 
        elif direction == 'départ':
            self.case_x = 1
            self.case_y = 1
            self.x = 28
            self.y = 28
        elif direction == 'avance':
            self.case_x = 18
            self.case_y = 25
            self.x = 476
            self.y = 700
 
C'est vrai que sans, je risquais pas d'avancer loin x)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python pygame aide pour un projet

 

Sujets relatifs
Problème en Python pour un projet de balle rebondissante[SQL] Aide exos (simple)
PYGAME python problème labyrinthe URGENTBesoin d'aide : Pygame
projet web. création de site + de son application.Aide Tkinter Python
Plus de sujets relatifs à : Python pygame aide pour un projet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR