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

Programmation multimédia/Jeux Python Discussion :

Aide sur les collision avec pygame [Python 3.X]


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Aide sur les collision avec pygame
    Salut !,
    Alors voila mon soucis,
    je n'arrive pas à faire une collision d'une image que je déplace vers un rectangle, en gros l'image doit s’arrêter sur le rectangle, voici le code complet:

    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 pygame
     
    clock = pygame.time.Clock()
    pygame.init()
     
    #Différentes couleurs
    color_rect = (255, 0, 0)
    color_surface = (37, 11, 11)
    green_color = (100, 255, 100)
    black_color = (0, 0, 0)
    blue_color = (0, 255, 255)
     
    #Titre fenêtre
    pygame.display.set_caption("Mélissandre and Cie...")
     
    #Dimensions surface
    window_surface = pygame.display.set_mode([800, 600])
     
    #Chargement du Perso
    perso = pygame.image.load("head.jpg")
    perso_x = 400
    perso_y = 300
    window_surface.blit(perso, [perso_x, perso_y])
    pygame.display.flip()
     
    #Boucle Infinie
    continued = True
    pygame.key.set_repeat(1, 1)
    while continued:
        window_surface.fill(color_surface)
     
        # Ajout du mur de blocage:
        rect_border = pygame.Rect(4, 3, 793, 595)
        pygame.draw.rect(window_surface, color_rect, rect_border, 1)
     
        rect_top = pygame.Rect(7, 6, 788, 30)
        pygame.draw.rect(window_surface, green_color, rect_top, 1)
     
        for event in pygame.event.get():    #Attente des évènements:
     
            if event.type == pygame.QUIT:
                continued = False
     
            if event.type == pygame.KEYDOWN:
     
                if event.key == pygame.K_UP:
                    if perso_y:
                        perso_y -= 3
     
                if event.key == pygame.K_DOWN:
                    if perso_y:
                        perso_y += 3
     
                if event.key == pygame.K_LEFT:
                    if perso_x:
                        perso_x -= 3
     
                if event.key == pygame.K_RIGHT:
                    if perso_x:
                        perso_x += 3
     
     
        window_surface.blit(window_surface, (0, 0))
        window_surface.blit(perso, [perso_x, perso_y])
     
        clock.tick(63)
        arial_font = pygame.font.SysFont("arial", 20)
        text = arial_font.render(f"{clock.get_fps():.0f} FPS", True, blue_color)
        window_surface.blit(text, [11, 8])
        pygame.display.flip()
    Merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    24 525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 24 525
    Points : 180 690
    Points
    180 690
    Billets dans le blog
    50
    Par défaut
    Bonjour,

    Je ne vois pas de code pour détecter la collision Est-ce la collision avec la bordure de la fenêtre ?

    Pour vous, que veut dire ce code, et pourquoi l'avait vous mis ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut, justement, je ne sais pas quel code il faut mettre, j'ai voulu faire avec colliderect, mais c'est qu'avec les rectangles, et donc j'aimerais pouvoir faire avec mon images qui est le perso principal, pour qu'il s’arrête au bord des deux autres rectangles, c'est à dire, celui qui fait tous le contour de la fenêtre (en rouge) et celui qui fait une bande sur le haut de la fenêtre pour pouvoir afficher d'autres choses par la suite (en vert), dont le compteur de FPS (en bleu).

    Voila j'espère avoir été plus clair, et je précise je suis vraiment débutant donc m'en voulez pas si ce n'est pas très clair.

    Bonne Journée.
    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 221
    Points : 542
    Points
    542
    Par défaut
    Une question pour te mettre encore plus sur la piste : Quels sont les attributs de ton perso/image ? D'après ton explication, claire au passage, tu chauffes déjà un peu héhé.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ohnomorejmmings Voir le message
    Une question pour te mettre encore plus sur la piste : Quels sont les attributs de ton perso/image ? D'après ton explication, claire au passage, tu chauffes déjà un peu héhé.
    Salut, déjà merci de ta réponse,

    Les attributs de mon perso ? Je crois que c'est une entité que je déplace et qui effectuera des actions qui ne sont lier qu'à lui, c'est plus ou moins le centre de mon programme, mais comment ? vu que c'est une image, tu veut que je la transforme en Objet, pour que ce ne soit plus une image mais un personnage ?

    Dans la logique si je ne m'abuse ce serai sa, mais comment ? ^^ je le set dans une variable ? mais je n'est pas le code pour cela, ou bien je le transforme en rectangle ? ou bien je le set dans une variable = perso + rectangle ? pour effetcuer
    toutes ces actions il me manque les "clefs"

    Bonne Soirée

  6. #6
    Membre éprouvé

    Homme Profil pro
    ValueError
    Inscrit en
    avril 2016
    Messages
    684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ValueError

    Informations forums :
    Inscription : avril 2016
    Messages : 684
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    1
    Par défaut
    Salut.

    Citation Envoyé par Myrmidon201 Voir le message
    Les attributs de mon perso ? Je crois que c'est une entité que je déplace et qui effectuera des actions qui ne sont lier qu'à lui, c'est plus ou moins le centre de mon programme, mais comment ? vu que c'est une image, tu veut que je la transforme en Objet, pour que ce ne soit plus une image mais un personnage ?
    Tu peux déjà regarder des choses simples comme le singe et le pong expliqués dans les tutos du site pour voir comment programmer ça avec des objets assez simples.
    https://jeux.developpez.com/tutoriels/Pygame/
    Le temps ronge l'amour comme l'acide.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut,
    D'accord je vais déjà voir sa

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 221
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Myrmidon201 Voir le message
    Les attributs de mon perso ?
    Qu'est-ce qui le définit ? Par exemple d'après les variables perso_x/y on peut déduire qu'il est au moins défini par une position. Je l'entendais au sens général et pas POO. On peut aussi parler de caractéristiques, propriétés… Pour t'aider je t'invite à t'appuyer sur ta description des fenêtres (Bords, zones colorées…).

    Citation Envoyé par Myrmidon201 Voir le message
    pour effetcuer
    toutes ces actions il me manque les "clefs"
    En effet mais tes questions sont pertinentes. En fait ça dépend de ce que tu apprends en cours, des contraintes de l'exercice… D'après ton code je me suis dit programmation fonctionnel mais comme avec la biblio on manipule des objets ça peut prêter à confusion.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je te cache pas que tu m'as un peut perdu ^^,
    j'ai suivi les cours youtube de la chaine "Formation Vidéo": https://www.youtube.com/channel/UCS2...hwd6bNscS60xTg.

    Il fait une formation plutôt complète sur les bases de python, j'ai appris sur la partie de Pygame je te laisse regarder (si tu as le courage), et c'est tous ce que j'ai appris sur le Python, mes bases s’arrêtent à sa pour le moment vu que je part demain à Amsterdam je reviens Samedi soir et dimanche je m'y remettrais,

    Encore merci, même si pour ce dernier message tu m'as un peut perturber je te remercie,
    Je sens la connaissance

    Bonne Soirée

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 221
    Points : 542
    Points
    542
    Par défaut
    Pourquoi pas des vidéos pour se former mais ça dépend de ta méthode. Il faut éviter de les enchaîner et toujours pratiquer en parallèle pour assimiler. Ton code révèle plusieurs lacunes possibles dans tes bases :
    • Le code pygame est un copié-collé ?
    • Des if au lieu de switch
    • Le gros défaut mentionné par LittleWhite

    Tu devrais même pas avoir eu l'idée d'écrire quelque chose comme perso_x/y ou alors c'est que tu viens d'un langage fonctionnel comme le C. J'en viens et j'ai fait pire mais là on est en Python. Donc revoir tout ça et notamment les structures/classes, opérateurs de comparaison…

    À ton retour faudra m'expliquer où je t'ai perdu avec mes questions tordues ahah !!

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut !,
    Effectivement, maintenant que tu le dit, j'ai fait plusieurs erreurs:
    Déjà, j'ai enchaîner toute la formation en 1 semaine, j'ai fait quelque essaies après chaque épisodes pour m’entraîner et bien comprendre, mais j'ai forcément eu du mal à tout assimiler en si peut de temps, car mine de rien, la programmation est une chose de complexe quand c'est la première fois que tu codes.

    2ème erreur, effectivement, le système pour faire se déplacer de mon perso, est un copié collé.

    3ème erreur, j'ai utilisé des if, je ne connais pas la notion de switch, donc si tu as une explication, je suis preneur mais de toute façon je vais aller me renseigner la dessus.

    Donc j'ai à peut prêt compris ce que tu veut me dire , en gros j'ai eu les yeux plus gros que le ventre, et j'en ai pris conscience.


    Pour les questions ou tu m'as perdu, à vrais dire c'est une phrase complète, tu as encrer dans cette phrases un bon nombre d'éléments et sa m'a un peut perdu:

    "Qu'est-ce qui le définit ? Par exemple d'après les variables perso_x/y on peut déduire qu'il est au moins défini par une position. Je l'entendais au sens général et pas POO. On peut aussi parler de caractéristiques, propriétés… Pour t'aider je t'invite à t'appuyer sur ta description des fenêtres (Bords, zones colorées…)."

    Donc je te demande juste si tu pourrais reformuler ça point par point ? (déso) ^^

    Voila j'espère avoir été compréhensible, Merci

  12. #12
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    novembre 2010
    Messages
    2 834
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 834
    Points : 7 788
    Points
    7 788
    Par défaut
    salut,

    juste pour info/en passant :
    Citation Envoyé par ohnomorejmmings Voir le message
    Des if au lieu de switch (...) on est en Python
    Citation Envoyé par https://fr.wikipedia.org/wiki/Switch_(instruction)#En_Python
    En Python, l'instruction switch n'existe pas ; il faut la remplacer par une suite de si/sinon (...)
    ---

    Citation Envoyé par ohnomorejmmings Voir le message
    un langage fonctionnel comme le C
    Citation Envoyé par https://fr.wikipedia.org/wiki/C_(langage)
    C est un langage de programmation impératif (...)
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 221
    Points : 542
    Points
    542
    Par défaut
    Merci pour ces corrections BufferBob à force de jongler entre les langages on finit par s'emmêler les pinceaux et en plus j'étais malade. D'ailleurs je connais peu Python mais comme souvent le problème est plus algorithmique qu'autre chose !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 221
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Myrmidon201 Voir le message
    Donc j'ai à peut prêt compris ce que tu veut me dire , en gros j'ai eu les yeux plus gros que le ventre, et j'en ai pris conscience.
    Hé comme quoi mes explications sont pas si bidons que ça !!

    Citation Envoyé par Myrmidon201 Voir le message
    Pour les questions ou tu m'as perdu, à vrais dire c'est une phrase complète, tu as encrer dans cette phrases un bon nombre d'éléments et sa m'a un peut perdu: […] Donc je te demande juste si tu pourrais reformuler ça point par point ?
    Hum le mieux serait sans doute que quelqu'un d'autre s'en charge. En relisant tout ça dans quelques semaines ça sera sans doute plus clair ! En attendant ça me semble indispensable de reprendre ta formation. Pourquoi pas en te reposant sur un support textuel plutôt question de la ralentir ? Ça te permettra de comparer avec les vidéos et ce ne sont pas les ressources de qualité qui manquent.

    Bon courage !

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut, oui je vais y aller molo ^^,

    Encore merci, A bientôt peut être

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

Discussions similaires

  1. [débutant] besoin d'aide pour un programme
    Par acdchornet dans le forum C++
    Réponses: 12
    Dernier message: 26/10/2006, 22h32
  2. [Débutant] Besoin d'aide pour modifier un jeu
    Par stoff66 dans le forum Assembleur
    Réponses: 9
    Dernier message: 31/08/2006, 18h24
  3. [Débutant]Besoin d'aide pour gestion d'exceptions
    Par H1B4K dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 10h01
  4. Besoin d'aide pour un débutant en procédure stockée
    Par el gringo dans le forum Débuter
    Réponses: 2
    Dernier message: 06/04/2006, 11h17
  5. [débutant].besoin d'aide pour servlet
    Par 2tsiris dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 30/03/2006, 14h36

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