Python jeu

Problème de collision

a marqué ce sujet comme résolu.

Bonjour à tous,

Débutante avec Python et plus précisément avec la bibliothèque pygame, j’essaie de créer un jeu qui consiste à faire bouger une voiture sur une route, (accélérer, ralentir, se déplacer sur les cotés), de façon à éviter les obstacles qui sont ici des animaux. Mais je rencontre une petite difficulté: python n’affiche pas de message d’erreur, mais il n’applique pas la collision voiture-obstacles… Pouvez vous me donner un avis ?

def main():
    """programme principal"""
    pygame.init()

    #definition de la fenetre
    screen= pygame.display.set_mode((900, 600),0,32)
    pygame.display.set_caption("josette en voiture")
    fond=pygame.image.load('fondforet.png').convert_alpha() #chargement et collage du fond
    son_fond.play()

    #creation des listes de sprites
    active_sprite_list = pygame.sprite.Group()
    liste_lignes=pygame.sprite.Group()
    Obstacles_sprite_list= pygame.sprite.Group()

    # creation voiture
    voiture = Voiture()
    voiture.rect.x = 300
    voiture.rect.y = 300
    active_sprite_list.add(voiture)

    # lignes centrales
    compteurligne=0
    ligne=Line()
    ligne.rect.y=0
    liste_lignes.add(ligne)
    ligne=Line()
    ligne.rect.y=250
    liste_lignes.add(ligne)
    ligne=Line()
    ligne.rect.y=500
    liste_lignes.add(ligne)

    compteurbarriere1=0
    compteurbarriere2=0
    compteurdecors1=0
    compteurdecors2=0
    compteurobstacle=0

    # Boucle principale
    continuer=1
    while continuer:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                continuer=0

            # touches enfoncees
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    voiture.mvtgauche()
                if event.key == pygame.K_RIGHT:
                    voiture.mvtdroit()
                if event.key == pygame.K_UP:
                    voiture.mvthaut()
                if event.key == pygame.K_DOWN:
                    voiture.mvtbas()

              # touches relevees
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    voiture.stop()
                if event.key == pygame.K_RIGHT:
                    voiture.stop()
                if event.key == pygame.K_UP:
                    voiture.stop()
                if event.key == pygame.K_DOWN:
                    voiture.stop()
        #mise a jour des sprites
        active_sprite_list.update()
        liste_lignes.update()
        Obstacles_sprite_list.update()

        #lignes centrales
        compteurligne+=1
        if compteurligne>250:
           ligne=Line()
           liste_lignes.add(ligne)
           compteurligne=0

        compteurbarriere1+=1
        if compteurbarriere1>45:
           barriere1=fence1()
           active_sprite_list.add(barriere1)
           compteurbarriere1=0
        compteurbarriere2+=1
        if compteurbarriere2>45:
           barriere2=fence2()
           active_sprite_list.add(barriere2)
           compteurbarriere2=0

        compteurdecors1+=1
        if compteurdecors1>250:
            decors=decorsforet()
            active_sprite_list.add(decors)
            compteurdecors1=0

        compteurdecors2+=1
        if compteurdecors2>100:
            sapin=sapins()
            active_sprite_list.add(sapin)
            compteurdecors2=0

        compteurobstacle+=randint(1,10)*0.1
        if compteurobstacle>200:
            choix=randint(1,3)
            if choix==1:
                vache1=vache()
                vache1.rect.x=randint(250,560)
                active_sprite_list.add(vache1)
            if choix==2:
                cheval1=cheval()
                cheval1.rect.x=randint(250,560)
                active_sprite_list.add(cheval1)
            compteurobstacle=0

        #mise a jour des sprites
        active_sprite_list.update()
        liste_lignes.update()
        Obstacles_sprite_list.update()

        #Gestion des collisions
        """collision voiture obstacle"""
        hit_list = pygame.sprite.spritecollide(voiture,Obstacles_sprite_list,False)
        for hit in hit_list:
            son_boum.play()
            fondgameover=pygame.image.load('ecrangameover.png').convert_alpha()
            screen.blit(fondgameover,(0, 0))
            pygame.display.update()
            pygame.time.delay(4000)
            main()

        # affichage
        screen.blit(fond,(0,0))
        liste_lignes.draw(screen)
        active_sprite_list.draw(screen)

        pygame.display.flip()
+0 -0

Bonjour, Oui merci j’ai finalement réussi à régler ce problème hier. Maintenant mes obstacles défilent deux fois plus vite qu’avant et mon écran game over s’affiche à chaque fois que j’essaie de fermer la fenêtre… Mais le plus gros est fait merci pour ta réponse.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte