Partage
  • Partager sur Facebook
  • Partager sur Twitter

projet ISN

position aléatoire d'une image

    18 avril 2019 à 18:13:25

    bonjour à tous pour mon projet de bac d'ISN je fais un pacman revisité. A l’intérieur je souhaite insérer des images mais la position doit être alétoire. J'ai réussi à trouver comment faire pour que la position de mon image soit aléatoire. Malgré cela mon image peut se mettre n'importe où, y compris sur les murs, ce que je ne souhaite pas évidemment. Je n'arrive pas à trouver une solution pour que mon image se mette aléatoirement exclusivement sur les chemin et non sur les murs. Merci pour votre aide

    ps: voici mon programme pour le moment je n'est pas réussi à créer les murs en collision. le parcours est défini par la liste "Niveau", les "0" représentent les murs et les "1" les chemins. 

    ################################################ PAC GIRL 2.0 ##################################################
    
    """     Importation de pygame et de tous ses modules
            + Chargement et initialisation des modules        """
    
    import pygame
    from pygame.locals import*
    import random
    
    pygame.init()
    
    """     Définition des constantes   """
    
    nbr_case_longueur = 29
    nbr_case_largeur = 16
    taille_case = 30 #en pixels
    longueur_fenetre = nbr_case_longueur * taille_case
    largeur_fenetre = nbr_case_largeur * taille_case
    
    ######################################## CREATION DU PROGRAMME PRINCIPAL ######################################
    
    def main(): #fonction associée au programme principal
    
    #Initialisation de la fenètre d'affichage
        pygame.display.set_caption("Pac Girl 2.0") #je renomme mon jeu
        fenetre = pygame.display.set_mode((longueur_fenetre, largeur_fenetre))
        #on crée une fenètre w/ le module display (de resolution 900*510)
    
    #Chargement et collage du fond
        fond = pygame.image.load("background.png").convert_alpha() #importation et convertion au format Pygame
        fenetre.blit(fond, (0,0)) #collage de l'img en haut a droite de la fenetre
    
    #Chargement et collage du personnage
        perso = pygame.image.load("Pix.png").convert_alpha() #importation et convertion au format Pygame
        position_perso = perso.get_rect() #création d'une surface en entourant l'image d'un rectangle
        position_perso = pygame.Rect(0,210,30,30) #positionnement de la surface dans la case depart
        fenetre.blit(perso, position_perso) #collage de l'img sur la fenètre
    
    #chargement et collage d'une lettre
        lettre = pygame.image.load("arrivee.png").convert_alpha() #importation et convertion au format pygame
        position_lettre = lettre.get_rect() #création d'une surface en entourant l'image d'un rectangle
        position_lettre = (random.randint(0,largeur_fenetre),random.randint(0,longueur_fenetre)) #definition d'une position aléatoire de l'img
        fenetre.blit(lettre,position_lettre) #collage de l'img sur la fenètre de manière aléatoire
    
    
    #Rafraîchissement de l'écran
        pygame.display.flip()
    
    ################################## CREATION DU NIVEAU #################################################
    
        Niveau = [
            [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
            [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
            [0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0],
            [0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0],
            [0,1,1,1,0,1,0,0,1,0,1,0,1,1,1,0],
            [0,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0],
            [0,1,0,1,0,1,0,0,1,0,0,0,1,0,1,0],
            [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
            [0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0],
            [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
            [0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0],
            [0,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0],
            [0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0],
            [0,1,0,1,0,1,1,0,1,1,1,1,1,1,1,0],
            [0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0],
            [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
            [0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0],
            [0,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0],
            [0,1,0,1,0,0,1,0,0,0,1,0,1,0,1,0],
            [0,1,0,1,1,1,1,1,1,1,1,0,1,0,1,0],
            [0,1,0,1,0,0,0,0,0,0,1,0,1,0,1,0],
            [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
            [0,1,0,0,0,0,0,0,1,0,1,0,1,0,1,0],
            [0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0],
            [0,1,0,1,0,0,1,0,1,1,1,0,1,0,1,0],
            [0,1,0,1,0,0,1,0,1,1,1,0,1,0,1,0],
            [0,1,0,1,0,0,1,0,0,0,0,0,1,0,1,0],
            [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
            [0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],
            ]
    
        mur = pygame.image.load("Mur.png").convert_alpha() #importation et conversion au format pygame
    
        #Création du niveau à partir de la structure écrite dans la liste [Niveau]
        def Générer_niveau(surface, Niveau):
    
            #pour chaque ligne
            for i, ligne in enumerate(Niveau):
                #pour chaque case
                for j, case in enumerate(ligne):
                    #si la case est un 0, on y associe l'img du mur
                    if case == 0:
                        fenetre.blit(mur, (i*30, j*30)) #chaque case fait 30 pixels de coté
    
    ################################## LANCEMENT DU JEU ########################################
    
        """ Création de la boucle principale """
    
        continuer = True #continuer est un bool qui indique à la boucle de continuer à tourner
    
        while continuer:
            for event in pygame.event.get(): #on parcourt la liste des evènements reçus
                #si on clique sur la croix, la fenetre se ferme
                if event.type == pygame.QUIT:
                  continuer = False
                #si on clique sur la touche echap du clavier, la fenetre se ferme
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        continuer = False
    
                """             Liste des commandes claviers
                        Le personnage se deplace en fonction des flèches
                                        du clavier                          """
    
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_DOWN:
                            position_perso = position_perso.move(0, 30) #deplacement d'une case vers le bas
                    elif event.key == pygame.K_UP:
                            position_perso = position_perso.move(0, -30) #deplacement d'une case vers le haut
                    elif event.key == pygame.K_RIGHT:
                            position_perso = position_perso.move(30, 0) #deplacement d'une case vers la droite
                    elif event.key == pygame.K_LEFT:
                            position_perso = position_perso.move(-30, 0) #deplacement d'une case vers la gauche
    
    
    
    
    
            #Re-collage
            fenetre.blit(fond, (0,0))
            Générer_niveau(fenetre, Niveau)
            fenetre.blit(perso, position_perso)
            fenetre.blit(lettre,position_lettre)
            #Rafraichissement
            pygame.display.flip()
    
    
        pygame.quit()
    
    if __name__ == '__main__': main()
    • Partager sur Facebook
    • Partager sur Twitter

    projet ISN

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown