Petit soucis en pygame
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Petit soucis en pygame



  1. #1
    T1tou

    Smile Petit soucis en pygame


    ------

    Salut tout le monde j'ai un petit soucis avec mon code. Je voudrais afficher un score, mais je n'y arrive malheureusement pas... un tout ti peu d'aide svpp

    Mon code grosso modo :

    Code:
    import pygame
    
    def lire_images():
        # Lecture des images
        images = {}
    
        # lecture de l'image du perso
        image = pygame.image.load("perso.png").convert_alpha()
        images["perso"]=image
        image = pygame.image.load("background.jpg").convert()
        images["fond"]=image
        image = pygame.image.load("balle.png").convert_alpha()
        images["balle"]=image
    
        # Choix de la police pour le texte
        font = pygame.font.Font(None, 34)
        image = font.render('<Escape> pour quitter', True, (255, 255, 255))
        images["texte1"]=image
    
    
        return images
    
    
    
    def deplacer_balle(boom, dx, dy):
        boom.rect.x += dx
        boom.rect.y += dy
        
        if boom.rect.x<=0 :
            dx = -dx
        if boom.rect.y<=0 :
            dy = -dy
    
        largeur, hauteur = boom.fenetre.get_size()
    
        if boom.rect.x>=largeur-boom.rect.w :
            dx = -dx
        if boom.rect.y>=hauteur-boom.rect.h :
            dy = -dy
    
        return dx, dy
    
    def deplacer_perso(excalibur, touches):
        if touches[pygame.K_LEFT] :
            excalibur.rect.x-=5
        if touches[pygame.K_RIGHT] :
            excalibur.rect.x+=5
        if touches[pygame.K_UP] :
            excalibur.rect.y-=5
        if touches[pygame.K_DOWN] :
            excalibur.rect.y+=5
    
        largeur, hauteur = excalibur.fenetre.get_size()
    
        if excalibur.rect.x<=0 :
            excalibur.rect.x=0
        if excalibur.rect.y<=0 :
            excalibur.rect.y=0
    
        if excalibur.rect.x>=largeur-excalibur.rect.w :
            excalibur.rect.x=largeur-excalibur.rect.w
        if excalibur.rect.y>=hauteur-excalibur.rect.h :
            excalibur.rect.y=hauteur-excalibur.rect.h
    
    class ElementGraphique:
        def __init__(self,image,fenetre):
            self.image=image
            self.rect = image.get_rect()
            self.fenetre = fenetre
    
        def afficher(self):
            self.fenetre.blit(self.image, self.rect)
    
    
    # Initialisation de la bibliotheque pygame
    pygame.init()
    
    #creation de la fenetre
    largeur = 600
    hauteur = 450
    window=pygame.display.set_mode((largeur,hauteur))
    afficher = {}
    pts = 0
    
    images = lire_images()
    
    
    perso = ElementGraphique(images["perso"],window)
    # creation d'un rectangle pour positioner l'image du personnage
    perso.rect.x = 300
    perso.rect.y = 80
    
    # lecture de l'image du fond
    fond = ElementGraphique(images["fond"],window)
    
    balle = ElementGraphique(images["balle"],window)
    balle.rect.x = 400
    balle.rect.y = 300
    
    dx = 3
    dy = 4
    
    texte1 = ElementGraphique(images["texte1"],window)
    
    texte1.rect.x = 10
    texte1.rect.y = 10
    
    
    # servira a regler l'horloge du jeu
    horloge = pygame.time.Clock()
    
    # La musique
    
    # la boucle dont on veut sortir :
    #   - en appuyant sur ESCAPE
    #   - en cliquant sur le bouton de fermeture
    i=1;
    continuer=True
    while continuer == True:
    
        # fixons le nombre max de frames / secondes
        horloge.tick(30)
    
        i=i+1
        print (i)
    
        # on recupere l'etat du clavier
        touches = pygame.key.get_pressed();
    
        # si la touche ESC est enfoncee, on sortira
        # au debut du prochain tour de boucle
        # si le joueur et la balle se touche mutuellement continuer=False.
        if touches[pygame.K_ESCAPE] :
            continuer=False
    
        if perso.rect.colliderect(balle.rect) :
        	continuer=False
    
        if i==100 :
        	pts = 1
        	font = pygame.font.Font(None, 34)
        	afficher = font.render(str(pts), True, (255, 255, 255))
        	window.blit(afficher, (10, 10))
    
        # Deplacement perso
        dx, dy = deplacer_balle(balle, dx, dy)
    
        deplacer_perso(perso, touches)
    
        # Affichage du fond
        fond.afficher()
    
        # Affichage Perso
        perso.afficher()
    
        # Affichage Balle
        balle.afficher()
    
        # Affichage du Texte
        texte1.afficher()
    
        # rafraichissement
        pygame.display.flip()
    
        # Si on a clique sur le bouton de fermeture on sortira
        # au debut du prochain tour de boucle
        # Pour cela, on parcours la liste des evenements
        # et on cherche un QUIT...
        for event in pygame.event.get():   # parcours de la liste des evenements recus
            if event.type == pygame.QUIT:     #Si un de ces evenements est de type QUIT
                continuer = False	   # On arrete la boucle
    
    # fin du programme principal...
    pygame.quit()
    La partie pour lescore :
    Code:
    if i==100 :
        	pts = 1
        	font = pygame.font.Font(None, 34)
        	afficher = font.render(str(pts), True, (255, 255, 255))
        	window.blit(afficher, (10, 10))
    Vous aurez remarqué que j'utilise le compteur pour établir comment recevoir le score(ça n'est que le début).

    Mercii de votre attentionn

    -----

  2. #2
    umfred

    Re : Petit soucis en pygame

    renomme ton afficher et ton font peut-être (qui rentrent peut-être en "conflit" avec ta fonction afficher et le font de pygame)

Discussions similaires

  1. GUI avec pygame raspberry
    Par DECIDELife dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 25/07/2018, 10h28
  2. petit soucis
    Par cysto dans le forum Biologie
    Réponses: 7
    Dernier message: 28/04/2012, 08h56
  3. Un petit soucis...
    Par invitea6d8fa77 dans le forum Chimie
    Réponses: 2
    Dernier message: 27/10/2009, 07h40
  4. petit soucis dss
    Par astrololo dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 3
    Dernier message: 25/05/2009, 20h26
  5. Petit soucis ac ma TI 89
    Par invite5fa5a522 dans le forum Dépannage
    Réponses: 6
    Dernier message: 25/12/2004, 08h40