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

Tkinter Python Discussion :

Aide à la création d'un jeu : Le Tower defense


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut Aide à la création d'un jeu : Le Tower defense
    Bien le bonjour à tous , je me présente , Clément je suis en Terminale S Spécialité ISN et je cherche à produire un "tower defense" pour la fin de l'année et le présenter au bac.

    Pour infos , un TD ( Tower defense ) est un jeu qui consiste à se défendre de vagues ennemies qui s'approche de votre base en plaçant des tours autour du chemin que les ennemies empruntent.

    J'ai déjà codé le fond de mon jeu ( qui n'est pas beau mais on s'en fou ) mais désormais j'aimerais coder quelques éléments que je n'arrive pas du tout à faire :

    -un pointeur pour permettre de construire de placer des tours
    -Un système de tir qui partira de ces tours et qui touchera les ennemies et qui disparaîtront
    - Un système d'apparition d'ennemi à un point sous forme de vague ( 10 pour une manche )
    -Un système qui fera marcher les ennemies d'un point A à un point B tout en passant pour différents points pour arriver à une base
    -Un système qui enlève des vies au joueur quand l'ennemi arrive à la base du joueur
    -Et enfin un système d'interface avec l'argent, le numéro de la manche et le nombre de vie restante

    J'ai l'air d'un fainéant en demandant de l'aide , mais je vous assure que çà fais plusieurs semaines que j'essaye de coder ces systèmes, et que je cherche, cherche et recherche encore pour trouver des solutions sans aucun résultats. C'est pour cela que je vous écrit. J'aimerais juste un coup de main qui m'aiderais à avancer car la majorité des choses que je veux n'as pas été vu en cours.

    Un grand merci d'avance .

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Je relance ma question :

    Est ce que ce projet semble trop difficile pour être réalisé ? Ou est ce que l'on peut le simplifier ? Comme par exemple cliquer sur une zone pour que la tour tire sur un ennemi par exemple au lieu du tir automatique de la tour ?

    Merci d'avance

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Est ce que ce projet semble trop difficile pour être réalisé ? Ou est ce que l'on peut le simplifier ?
    Qui peut répondre à ces questions à part vous?

    Comme par exemple cliquer sur une zone pour que la tour tire sur un ennemi par exemple au lieu du tir automatique de la tour ?
    "zone", "tour", "tir" sont des objets externes.
    Ils sont importants: c'est ce que le joueur va voir.
    Importantes aussi sont les actions que pourra faire le jouer comme "cliquer sur une zone".

    "programmer", c'est le boulot à réaliser pour traduire tout çà en code.

    A vous de dire comment vous envisagez de traduire çà, les premiers codes que çà donne, les difficultés que vous rencontrez,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre réponse !

    A vrai dire, mon ami et moi nous nous sommes rendus compte de la complexité de ce programme. On nous a dit qu'il nous fallait une ''intelligence artificielle'', ce qui est surhumain pour nous à programmer je pense. Nous n'avons aussi pas assez de temps pour créer ce gros programme.

    Nous nous sommes tournés vers un autre jeu finalement, plus simple. On déplace un carré avec le clavier à travers un labyrinthe pour rejoindre une sortie.

    Nous avons trouvé le codage qui nous permet de bouger le carré, maintenant on désire créer un programme permettant de placer des murs aléatoirement sans bloquer l'unique route vers la sortie.
    On aimerais , également faire en sorte que notre carré ne puisse pas traverser un mur.

    Pourriez vous nous aider ? Merci

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Pourriez vous nous aider ? Merci
    Les contributeurs du forum se feront un plaisir de lire votre code et de vous donnez des "astuces" le cas échéant.
    Mais on ne va pas voler votre "job".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Je ne demande en aucun cas que l'on réalise mon travail bien sûr.

    Je veux juste un ''point de départ" ou une aide sur une commande qui me permettrait de finir mon projet.

    Comme par exemple : Pouvoir interdire un pion à aller sur une zone lorsqu'on le déplace.

    Merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Je ne demande en aucun cas que l'on réalise mon travail bien sûr.

    Je veux juste un ''point de départ" ou une aide sur une commande qui me permettrait de finir mon projet.

    Comme par exemple : Pouvoir interdire un pion à aller sur une zone lorsqu'on le déplace.

    Merci
    Et toujours pas de code publié à l'horizon. Tant pis.

    Et nous ? Quand est-ce que vous nous aidez ?

    http://www.developpez.net/forums/d14...ation-d-balle/

    @+.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Excusez moi , je vais vous poster ce que l'on a déjà :

    Nous avons trouver un programme Python dont nous allons nous inspirer qui est celui ci (Je citerais plus tard l'auteur quand je l'aurais retrouvé ) :

    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
    #
    import random
    from tkinter import *
     
     
    # script pion.py
    from tkinter import *
     
    def Clavier(event):
        """ Gestion de l'événement Appui sur une touche du clavier """
        global PosX,PosY
        touche = event.keysym
        print(touche)
        # déplacement vers le haut
        if touche == 'z':
            PosY -= 20
        # déplacement vers le bas
        if touche == 's':
            PosY += 20
        # déplacement vers la droite
        if touche == 'd':
            PosX += 20
        # déplacement vers la gauche
        if touche == 'q':
            PosX -= 20
        # Repositionnement du pion 
        Canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)
     
    # Création de la fenêtre 
    Mafenetre = Tk()
    Mafenetre.title('Pion')
     
    # Position du pion au départ 
    PosX = 10
    PosY = 190
     
    # Création d'un widget Canvas 
    Largeur = 520
    Hauteur = 200
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Pion = Canevas.create_rectangle(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='purple')
    Canevas.focus_set()
    Canevas.bind('<Key>',Clavier)
    Canevas.pack(padx =5, pady =5)
     
    # Création d'un widget Button 
    Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy).pack(side=LEFT,padx=5,pady=5)
     
    Mafenetre.mainloop()
    Sinon j'ai codé un arrière plan de labyrinthe qui pourrait être une solution à nos problèmes. Si nous n'arrivons pas à créer des murs aléatoirement, nous nous contenteront d'un labyrinthe pioché aléatoirement parmi quelqu'uns :

    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
    #
    from tkinter import *
    import random
     
    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)
     
    F_Mur=PhotoImage(file='carrnoir.gif')
     
     
    x,y=0,0
    fichier=open('Laby.txt')
    for ligne in fichier:
                for i in range(52):
                            case=ligne[i]
                            if case=='B':
                                        Fond.create_image(x,y,image=F_Mur,anchor="nw")
     
                            x=x+10
                x=0
                y=y+10
     
    fichier.close()
    Voilà , par contre je suis désolé pour le Code pour mettre le programme sous forme de mini fenêtre, je galère un peu à le faire fonctionner veuillez m'en excuser.
    Images attachées Images attachées  

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Excusez moi , je vais vous poster ce que l'on a déjà :

    Nous avons trouver un programme Python dont nous allons nous inspirer qui est celui ci (Je citerais plus tard l'auteur quand je l'aurais retrouvé ) :

    [CODE]#
    import random
    from tkinter import *


    # script pion.py
    from tkinter import *

    def Clavier(event):
    """ Gestion de l'événement Appui sur une touche du clavier """
    global PosX,PosY
    touche = event.keysym
    print(touche)
    # déplacement vers le haut
    if touche == 'z':
    PosY -= 20
    # déplacement vers le bas
    if touche == 's':
    PosY += 20
    # déplacement vers la droite
    if touche == 'd':
    PosX += 20
    # déplacement vers la gauche
    if touche == 'q':
    PosX -= 20
    # Repositionnement du pion
    Canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)

    # Création de la fenêtre
    Mafenetre = Tk()
    Mafenetre.title('Pion')

    # Position du pion au départ
    PosX = 10
    PosY = 190

    # Création d'un widget Canvas
    Largeur = 520
    Hauteur = 200
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Pion = Canevas.create_rectangle(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='purple')
    Canevas.focus_set()
    Canevas.bind('<Key>',Clavier)
    Canevas.pack(padx =5, pady =5)

    # Création d'un widget Button
    Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy).pack(side=LEFT,padx=5,pady=5)

    Mafenetre.mainloop()

    Sinon j'ai codé un arrière plan de labyrinthe qui pourrait être une solution à nos problèmes. Si nous n'arrivons pas à créer des murs aléatoirement, nous nous contenteront d'un labyrinthe pioché aléatoirement parmi quelqu'uns :

    [CODE]#
    from tkinter import *
    import random

    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)

    F_Mur=PhotoImage(file='carrnoir.gif')


    x,y=0,0
    fichier=open('Laby.txt')
    for ligne in fichier:
    for i in range(52):
    case=ligne[i]
    if case=='B':
    Fond.create_image(x,y,image=F_Mur,anchor="nw")

    x=x+10
    x=0
    y=y+10

    fichier.close()

    Voilà , par contre je suis désolé pour le Code pour mettre le programme sous forme de mini fenêtre, je galère un peu à le faire fonctionner veuillez m'en excuser.
    Bonjour,

    Vous avez un bouton "#" en haut à droite de votre éditeur de messages du forum pour insérer du code ou alors vous pouvez taper directement les balises [CODE]...insérez votre code ici...[/CODE].

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #
    from tkinter import *
    import random
     
    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)
     
    F_Mur=PhotoImage(file='carrnoir.gif')
    Aviez-vous remarqué que je vous avais laissé le lien d'une discussion qui a résolu votre problème de collisions de murs ?

    Je vous le remets : http://www.developpez.net/forums/d14...ation-d-balle/

    @+.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Bonjour ! Oui je l'ai vu et je vous en remercie infiniement et j'ai complètement oublié ma phrase pour vous remercier dans mon dernier message désolé ( j'étais légèrement pressé ce matin).

    Alors je vous reposte mon code :

    Le programme sur internet que j'ai trouvé, je l'ai légèrement modifié pour ensuite m'en inspirer :

    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
    import random
    from tkinter import *
     
     
    # script pion.py
    from tkinter import *
     
    def Clavier(event):
        """ Gestion de l'événement Appui sur une touche du clavier """
        global PosX,PosY
        touche = event.keysym
        print(touche)
        # déplacement vers le haut
        if touche == 'z':
            PosY -= 20
        # déplacement vers le bas
        if touche == 's':
            PosY += 20
        # déplacement vers la droite
        if touche == 'd':
            PosX += 20
        # déplacement vers la gauche
        if touche == 'q':
            PosX -= 20
        # Repositionnement du pion 
        Canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)
     
    # Création de la fenêtre 
    Mafenetre = Tk()
    Mafenetre.title('Pion')
     
    # Position du pion au départ 
    PosX = 10
    PosY = 190
     
    # Création d'un widget Canvas 
    Largeur = 520
    Hauteur = 200
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Pion = Canevas.create_rectangle(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='purple')
    Canevas.focus_set()
    Canevas.bind('<Key>',Clavier)
    Canevas.pack(padx =5, pady =5)
     
    # Création d'un widget Button 
    Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy).pack(side=LEFT,padx=5,pady=5)
     
    Mafenetre.mainloop()
    Et voilà le code que j'ai fait pour l'arrière plan du jeu :

    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
    from tkinter import *
    import random
     
    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)
     
    F_Mur=PhotoImage(file='carrnoir.gif')
     
     
    x,y=0,0
    fichier=open('Laby.txt')
    for ligne in fichier:
                for i in range(52):
                            case=ligne[i]
                            if case=='B':
                                        Fond.create_image(x,y,image=F_Mur,anchor="nw")
     
     
     
     
                            x=x+10
                x=0
                y=y+10
     
    fichier.close()
    Je vais essayer de me pencher sur ce que vous m'avez envoyer ! Je vous remercie infiniment ! ( Et merci aussi pour le #CODE )

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Aprés analyse du programme deFatP0ney, je me rend compte que je dois me servir de Balise ( Flag ) :

    Puis je les mettre en relations avec des images ?

    Pour mon jeu :

    Déplacement du carré : - Si, le joueur demande à se déplacer dans telle direction : -Si l'image est celle ci : - Alors le carré se déplacera
    -Si l'image est celle là : - Alors le carré restera immobile

    Le soucis c'est que je connais pas cette commande vu que je suis débutant, vous pourriez m'expliquer comment m'en servir ? S'il vous plait ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Aprés analyse du programme deFatP0ney, je me rend compte que je dois me servir de Balise ( Flag ) :

    Puis je les mettre en relations avec des images ?

    Pour mon jeu :

    Déplacement du carré : - Si, le joueur demande à se déplacer dans telle direction : -Si l'image est celle ci : - Alors le carré se déplacera
    -Si l'image est celle là : - Alors le carré restera immobile

    Le soucis c'est que je connais pas cette commande vu que je suis débutant, vous pourriez m'expliquer comment m'en servir ? S'il vous plait ?
    Balise ? C'est à dire ? Je ne comprends pas.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Voici cette partie qui m’intéresse dans le programme de FatP0ney :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def start_it():
        "démarrage de l'animation"
        global flag
        flag = not flag
        move()
     
    def pause() :
        #nous servira quand on touchera le mur
         "arret de l'animation"
         global flag    
         flag =0
    Ai-je besoin de la commande "flag" pour définir mes zones où mon carré n'est pas censé aller ?

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Voici cette partie qui m’intéresse dans le programme de FatP0ney :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def start_it():
        "démarrage de l'animation"
        global flag
        flag = not flag
        move()
     
    def pause() :
        #nous servira quand on touchera le mur
         "arret de l'animation"
         global flag    
         flag =0
    Ai-je besoin de la commande "flag" pour définir mes zones où mon carré n'est pas censé aller ?
    Non, vous n'avez pas besoin de ce type de flag du tout.

    Prenez cinq minutes pour lire tout le fil de discussion au complet : vous verrez que cette partie est finalement abandonnée car pas une solution du tout.

    En revanche, vers la fin du fil de discussion, des choses intéressantes commencent à émerger et là, vous allez certainement trouver des solutions concernant la collision d'un objet avec des murs.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Désolé d'être un peu lourd, mais je crois avoir trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def move():
        #Si la balle est dans le carré final alors :
        if est_dans_polygone([X,Y],r, carre1[0], carre1[1]):
            bravo()
        #si la balle touche un coté alors :    
        elif len(can1.find_overlapping(*can1.bbox(cerc1))) > 1:
    Aurais-je besoin de ce code ? Je suis vraiment désolé mais nos niveaux langage Python à mon ami et moi même sont vraiment basiques, nous nous contentons des premières bases pour nos programmes.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Désolé d'être un peu lourd, mais je crois avoir trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def move():
        #Si la balle est dans le carré final alors :
        if est_dans_polygone([X,Y],r, carre1[0], carre1[1]):
            bravo()
        #si la balle touche un coté alors :    
        elif len(can1.find_overlapping(*can1.bbox(cerc1))) > 1:
    Aurais-je besoin de ce code ? Je suis vraiment désolé mais nos niveaux langage Python à mon ami et moi même sont vraiment basiques, nous nous contentons des premières bases pour nos programmes.
    oui, pour la condition elif ...

    Ceci sera peut-être plus parlant (extrait de la fin du fil de discussion en question) :

    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
    def move():
        global carre_balle
        carre_balle = can1.bbox(cerc1)
        intersection = can1.find_overlapping(carre_balle[0],carre_balle[1],carre_balle[2],carre_balle[3]) 
        # la balle a heurté qqchose ?
        if len(intersection) >1:
            # la balle a heurté le carré final ?
            if 2 in intersection:
                bravo()
                can1.after(100, passer_de_niveau)
            # non, la balle a heurté un mur !
            else:
                game_over()
        # non, la balle n'a rien heurté
        else:
            can1.move(cerc1, sx*dep, sy*dep)
            can1.after(100, move)
    bon, c'est encore un peu torchis et plâtre, mais il y a de l'idée sur le concept de collision d'une balle contre un mur.

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Je vais essayer de bidouiller çà mais je viens de me rendre compte de quelque chose.

    Je n'en ai pas parler mais j'ai donc récupérer un programme dans lequel se trouve un "Canvas" avec le carré violet :

    Voici le Code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # Création d'un widget Canvas 
    Largeur = 520
    Hauteur = 200
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Pion = Canevas.create_rectangle(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='purple')
    Canevas.focus_set()
    Canevas.bind('<Key>',Clavier)
    Canevas.pack(padx =5, pady =5)
    Ensuite, j'aimerais implanter un fond que j'ai créer avec le code suivant mais DANS le Canvas .

    Voici le Code :

    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
    from tkinter import *
    import random
     
    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)
     
    F_Mur=PhotoImage(file='carrnoir.gif')
     
     
    x,y=0,0
    fichier=open('Laby.txt')
    for ligne in fichier:
                for i in range(52):
                            case=ligne[i]
                            if case=='B':
                                        Fond.create_image(x,y,image=F_Mur,anchor="nw")
     
     
     
     
                            x=x+10
                x=0
                y=y+10
     
    fichier.close()
    Comment faire pour implanter mon fond dans le Canvas puis aprés faire enfin en sorte que mon Carré ne touche pas l'image ''B'' ?

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Je vais essayer de bidouiller çà mais je viens de me rendre compte de quelque chose.

    Je n'en ai pas parler mais j'ai donc récupérer un programme dans lequel se trouve un "Canvas" avec le carré violet :

    Voici le Code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # Création d'un widget Canvas 
    Largeur = 520
    Hauteur = 200
    Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
    Pion = Canevas.create_rectangle(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='purple')
    Canevas.focus_set()
    Canevas.bind('<Key>',Clavier)
    Canevas.pack(padx =5, pady =5)
    Ensuite, j'aimerais implanter un fond que j'ai créer avec le code suivant mais DANS le Canvas .

    Voici le Code :

    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
    from tkinter import *
    import random
     
    fenetre =Tk()
    fenetre.title("Tower Defense 1.0 ! ")
    fenetre.geometry("700x500")
    Fond=Canvas(fenetre,width=700,height=500,bg='white')
    Fond.place(x=0,y=0)
     
    F_Mur=PhotoImage(file='carrnoir.gif')
     
     
    x,y=0,0
    fichier=open('Laby.txt')
    for ligne in fichier:
                for i in range(52):
                            case=ligne[i]
                            if case=='B':
                                        Fond.create_image(x,y,image=F_Mur,anchor="nw")
     
     
     
     
                            x=x+10
                x=0
                y=y+10
     
    fichier.close()
    Comment faire pour implanter mon fond dans le Canvas puis aprés faire enfin en sorte que mon Carré ne touche pas l'image ''B'' ?
    Je ne vois pas de fond dans votre code, je vois juste une variable nommée "Fond" mais qui désigne en réalité un objet Canvas().

    Pour moi, "implanter un fond" signifie "placer une image en fond, en arrière-plan" dans un canevas.

    C'est ce que vous voulez faire ?

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 49
    Points : 3
    Points
    3
    Par défaut
    Je désire placer ce fond là dans un canvas.

    Nom : Laby.png
Affichages : 1406
Taille : 8,4 Ko

    Ensuite le carré est positionné en bas a gauche de ce fond .

    Au fur et à mesure qu'on le déplace il doit s'arrêter devant les murs ( parties noirs ) et seulement avancer dans les couloirs blancs.

    Ou alors vous pensez qu'on peut déplacer ce carré dans la fenêtre directement ? Ce qui faciliterais grandement les choses.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Clemj0057 Voir le message
    Je désire placer ce fond là dans un canvas.

    Nom : Laby.png
Affichages : 1406
Taille : 8,4 Ko

    Ensuite le carré est positionné en bas a gauche de ce fond .

    Au fur et à mesure qu'on le déplace il doit s'arrêter devant les murs ( parties noirs ) et seulement avancer dans les couloirs blancs.

    Ou alors vous pensez qu'on peut déplacer ce carré dans la fenêtre directement ? Ce qui faciliterais grandement les choses.
    Avec une simple image de labyrinthe, ça ne fonctionnera pas : vous ne pourrez pas détecter de collision avec des pixels colorés, l'objet Canvas() de Tkinter ne permet pas ce genre de chose.

    Tout ce que vous pouvez faire, c'est traduire ce labyrinthe avec des caractères dans un fichier texte (exemple "M" pour un carré de mur, "." pour un carré de chemin), enregistrer le fichier texte, puis le lire à partir de votre programme pour le traduire en canvas.create_rectangle() qui font des carrés opaques pour les murs dans une matrice (une grille) de n lignes pour m colonnes.

    Ainsi, les carrés de murs créés seront des canvasItems, des objets identifiables par l'objet Canvas() de Tkinter et vous pourrez gérer les collisions entre les murs et votre personnage qui se déplace dans le labyrinthe.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Besoin d'aide pour un projet de jeu en ligne
    Par FLEO dans le forum Projets
    Réponses: 1
    Dernier message: 21/10/2005, 08h55
  2. [MySQL] Aide à la création d'une requête
    Par tom06440 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/10/2005, 22h05
  3. Topic - La création d'un jeu avec opengl.
    Par AsmCode dans le forum OpenGL
    Réponses: 2
    Dernier message: 18/10/2005, 16h19
  4. Réponses: 19
    Dernier message: 15/03/2005, 09h05
  5. aide sur création d'un composant
    Par laetus dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/07/2004, 10h45

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