IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

probleme execution code [Python 2.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut probleme execution code
    Bonjour,

    j'ai un petit soucis, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #import et initialisation
     
    import pygame
    from pygame.locals import *
    import time
     
    pygame.init()
    pygame.font.init()
     
    #fenetre
    pygame.display.set_caption("The Lost by KJ")
    fenetre = pygame.display.set_mode((854, 443))
     
    #initialisation des variables
    score = 0
    continuer = 1
     
    #def
    #choix porte 1
    def choix():
    		score += 1
    		s=str(score)
    		#Cal_Score(score)
    		Af_score(s)
    		porte2()
     
    #affichage score
    def Af_score(s):
    	myfont = pygame.font.SysFont("monospace", 25)
    	score_display = myfont.render(s, 1, (0,0,0))
    	fenetre.blit(score_display, (10, 35))
     
    #transforme score int en str
    def Cal_Score(score):
    	score = str(score)
    	return score
     
    #affichage porte 
    def porte():
    	porte = pygame.image.load("porte.png").convert()
    	fenetre.blit(porte, (0,0))
    	return porte
     
    #affichage port2 "ratturer" pour test
    def porte2():
    	porte2 = pygame.image.load("porte2.png").convert()
    	fenetre.blit(porte2, (0,0))
    	return porte2
     
    #image menu
    menu = pygame.image.load("menu.png").convert()
    fenetre.blit(menu, (0,0))
     
    #rafraichir ecran
    pygame.display.flip()
     
    #main
    while continuer:
    	for event in pygame.event.get():	
    		if event.type == QUIT:
    			continuer = 0
    		if event.type == MOUSEBUTTONDOWN and event.button == 1 and ((event.pos[0] > 120) and( event.pos[1] > 220)) and ((event.pos[0] < 250) and (event.pos[1] < 270)):
    			porte()
    			if event.type == MOUSEBUTTONDOWN and event.button == 1 and (((event.pos[0] > 80) and( event.pos[1] > 70)) and ((event.pos[0] < 220) and (event.pos[1] < 385))) or (((event.pos[0] > 370) and( event.pos[1] > 70)) and ((event.pos[0] < 500) and (event.pos[1] < 390))) or (((event.pos[0] > 665) and( event.pos[1] > 80)) and ((event.pos[0] < 800) and (event.pos[1] < 390))):
    				choix()
     
    		if event.type == MOUSEBUTTONDOWN and event.button == 1 and ((event.pos[0] > 580) and( event.pos[1] > 230)) and ((event.pos[0] < 690) and (event.pos[1] < 280)):
    			continuer = 0
    	pygame.display.flip()
    le problem est que au niveau de l'execution de choix(), il me le fait direct sans verifier le if et donc m'affiche un truc que je veux pas ! (la il affiche une porte "ratturer" (avec paint) au lieu d'une porte normal ( mon image de base))

    des idées?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Bonjour,
    On peut utiliser des indentations de 4 espaces.
    D'autre part, une instruction peut être écrite sur plusieurs lignes (ce qui rend le code plus compréhensible)! (Ligne 65: 374 colonnes, Heu…)
    D'autre part au lieu d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (a < 3) and (a > 1):
    On peut écrire
    Enfin, je ne connais pas PyGame, mais le traitement des événements me semble vraiment très particulier!

    Clodion

  3. #3
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Clodion à raison:

    essaie plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        if event.type == MOUSEBUTTONDOWN and 
            event.button == 1 and 
            (((event.pos[0] > 80) and (event.pos[1] > 70) and (event.pos[0] < 220) and (event.pos[1] < 385)) or 
             ((event.pos[0] > 370) and ( event.pos[1] > 70) and (event.pos[0] < 500) and (event.pos[1] < 390)) or 
             ((event.pos[0] > 665) and ( event.pos[1] > 80) and (event.pos[0] < 800) and (event.pos[1] < 390))):
                 choix()
    Ce sera tout de suite plus lisibles. Ensuite pour ton indentations, choisit entre 4 espaces ou des tab (de 4 espace). Rien d'autre (c'est definit dans la PEP).

    Enfin ne t'embrouille pas trop avec des parentheses superflues. Cela ne rend ton code que plus difficile à analyser.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    On peut encore clarifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if event.type == MOUSEBUTTONDOWN and event.button == 1:
        ep, ep1 = event.pos
        if (80 < ep < 220 and 70 < ep1 < 385) or\ 
                (370 < ep < 500 and 70 < ep1 < 380) or\
                (665 < ep < 800 and 80 < ep1 < 390):
            choix()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme execution code php
    Par dianroca dans le forum Langage
    Réponses: 8
    Dernier message: 09/07/2010, 16h19
  2. Problème execution code
    Par Sayrus dans le forum Général Python
    Réponses: 2
    Dernier message: 09/03/2006, 12h09
  3. probleme de code formulaire
    Par bachilbouzouk dans le forum ASP
    Réponses: 45
    Dernier message: 13/04/2005, 11h01
  4. [debutant] probleme de code :-(
    Par flogreg dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 16/08/2004, 19h20
  5. [Kylix] probleme execution programme
    Par vin's dans le forum EDI
    Réponses: 1
    Dernier message: 31/03/2004, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo