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 :

PyGame et Collision


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut PyGame et Collision
    Bonjour,

    Comme mon nom l'indique je débute avec python (surtout avec le module pygame), mon but étant de faire un "smash bros" ultra simplifié où il n'y aurai qu'un niveau... Bref,j'ai donc besoin de faire des collisions pour que moi personnage ne traverse pas le sol.
    J'aimerai par la suite faire une gestion de la vie/dégâts/attaques/ennemis mais ça ce sera pour une prochaine fois.
    Alors voici mon code pour le moment (Je suis sur Pycharm,python 3.X) :
    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
    71
    72
    73
     
     
    import pygame
     
    pygame.init()
    son = pygame.mixer.Sound("musique.ogg")
     
     
    #Ouverture de la fenêtre Pygame
    fenetre = pygame.display.set_mode((640, 480))
    image_icone = pygame.image.load("dk_droite.png").convert()
    icone = pygame.image.load("dk_droite.png")
    pygame.display.set_icon(icone)
    #Titrei
    pygame.display.set_caption("Jeu ADAM")
    #Chargement et collage du fond
    fond = pygame.image.load("imagebis.jpg").convert()
    fenetre.blit(fond, (0,0))
     
    #Chargement et collage du personnage
    perso = pygame.image.load("dk_droite.png").convert_alpha()
    position_perso = perso.get_rect()
    fenetre.blit(perso, position_perso)
     
    #Rafraîchissement de l'écran
    pygame.display.flip()
    #BOUCLE INFINIE
    running = 1
     
    # BOUCLE INFINIE
    continuer = 1
    pygame.key.set_repeat(100, 30)
    son.play()
    while continuer:
     
        for event in pygame.event.get():  # Attente des événements
            if event.type == pygame.QUIT:
                continuer = 0
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_TAB:  # Si "TAB"
                    son.stop()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:  # Si "entrée"
                    son.play()
     
     
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:  # Si "espace"
     
                    position_perso = position_perso.move(0, -20)
     
                if event.key == pygame.K_UP:  # Si "flèche haut"
     
                    position_perso = position_perso.move(0, -10)
                    perso = pygame.image.load("dk_haut.png").convert_alpha()
                if event.key == pygame.K_LEFT:  # Si "flèche gauche"
     
                    position_perso = position_perso.move(-10 , 0)
                    perso = pygame.image.load("dk_gauche.png").convert_alpha()
                if event.key == pygame.K_RIGHT:  # Si "flèche droite"
     
                    position_perso = position_perso.move(10, 0)
                    perso = pygame.image.load("dk_droite.png").convert_alpha()
                if event.key == pygame.K_DOWN:  # Si "flèche bas"
                    # On descend le perso
                    position_perso = position_perso.move(0, 10)
                    perso = pygame.image.load("dk_bas.png").convert_alpha()
     
        # Re-collage
        fenetre.blit(fond, (0, 0))
        fenetre.blit(perso, position_perso)
        # Rafraichissement
        pygame.display.flip()
    Merci de votre aide future ! Je précise que le programme fonctionne

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Ton niveau est représenté dans un fichier texte ? Si oui peux-tu le présenter pour qu'on t'expliques comment faire ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Ton niveau est représenté dans un fichier texte ? Si oui peux-tu le présenter pour qu'on t'expliques comment faire ?
    Pour le moment je n'ai pas de niveau (aussi je voudrais qu'à la fin je puisse mettre une "image" pour le mur )
    Comment dois-je faire le niveau ?
    Voici une image de ce que ça donne pour l'instant
    Nom : Capture.PNG
Affichages : 501
Taille : 564,5 Ko

    Merci !

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Bonjour,

    Comment dois-je faire le niveau ?
    On peut commencer par un fichier texte représentant des entiers de 0 à 9 représentant chacun un objet du jeu.

    Par exemple : 0 <- MUR

    Donc faire une étude des divers objets présents dans ton jeu, sera un bon début.

    EDIT: Attention, avec Pygame, on travaille avec les pixels !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,



    On peut commencer par un fichier texte représentant des entiers de 0 à 9 représentant chacun un objet du jeu.

    Par exemple : 0 <- MUR

    Donc faire une étude des divers objets présents dans ton jeu, sera un bon début.

    EDIT: Attention, avec Pygame, on travaille avec les pixels !
    Donc si je comprends bien, je fais mon fichier texte sous cette forme avec par exemple 0 pour rien et 1 pour un mur ?
    0000000000000000000000000111000
    1111111111111111100000000000000
    0010000000000000000000000000000

    Je dois faire un nombre de ligne de hauteur et de longueur égal au nombre de pixels de mon programme ?
    Comment dire à Python que je veux que ce fichier texte doit être mon niveau ?


    Merci infiniment de votre aide

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Je dois faire un nombre de ligne de hauteur et de longueur égal au nombre de pixels de mon programme ?
    Un mur fait 20 pixels, tu es en 300x300 pixels, ça fait donc 15 lignes contenant 15 colonnes...

    Comment dire à Python que je veux que ce fichier texte doit être mon niveau ?
    Il faut lire le fichier texte et pour chaque ligne, pour chaque colonne de la ligne, "blitter" tes objets.

Discussions similaires

  1. Pygame les arcanes des collisions
    Par Pyjapaï dans le forum GUI
    Réponses: 9
    Dernier message: 23/08/2013, 19h04
  2. pygame : problème collisions
    Par mat238 dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 21/05/2012, 01h24
  3. Réponses: 3
    Dernier message: 06/01/2012, 15h26
  4. collision entre groupe de sprites (pygame)
    Par jean-pat dans le forum Programmation multimédia/Jeux
    Réponses: 8
    Dernier message: 17/09/2011, 16h22
  5. [Pygame] detection collision en utilisant surface.get_at
    Par Gavroche7 dans le forum Programmation multimédia/Jeux
    Réponses: 5
    Dernier message: 24/01/2009, 09h18

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