CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Déplacement de canva / Remplacement de variable (Python)

lilylprt
lilylprt
Niveau 1
21 avril 2019 à 12:14:43

Bonjour! Dans le code ci-dessous, j'aimerais créer le déplacement d'un pion (cheval) contenu dans un canva, grâce à un imbriquement de If contenant des positions en pixels. Par exemple :

chevalj=Canvas(plateau, height=42, width=42)   #Caneva contenant le pion, 42 étant de pas entre chaque case du plateau 

chevalj.place(x=Xj-21,y=Yj-21)  #Pour placer le caneva du pion au centre de la case, peut-être que placer Xj et Yj dès maintenant pose problème pour plus-tard donc il suffit de changer directement la valeur numérique initiale de Xj et Yj, comme ça on appelle pas Xj/Yj dès le départ...

chevaljaune=PhotoImage(file='chevaljaune.gif')

chevalJ=chevalj.create_image(21,21,image=chevaljaune)  #Image du pion

Xj=168

Yj=168  #Positions initiales du pion

(...)

If nb == 3  #Résultat du lancer de dé

    If Xj == 168 and Yj == 168

          Xj=42

          Yj=294  #Le personnage avance de 3 cases (ici, en réalité, il quitte le boxe de départ et va se placer sur la première case du parcours)

          plateau.move(chevalj,Xj,Yj)  #"Plateau" étant un caneva contenant le caneva chevalj

Ainsi, le déplacement du pion serait réalisé à partir d'un If de résultat de dé, puis d'un If de position avant lancer de dé. Je pense qu'il faut donc utiliser un "global Xj, Yj" car ces variables changeront constamment, mais je n'y arrive pas. Pour l'instant je n'ai codé qu'un seul cas (quand le joueur est dans le boxe et qu'il fait 6, donc il va sur la première case du parcours) mais il faudrait le faire pour chaque résultat du dé et pour chaque position du pion (c'est très long donc j'aurais besoin de votre aide pour que le principe fonctionne...)

Je n'arrive pas à faire fonctionner ce système, pourriez-vous svp corriger mon code?

from tkinter import*
from random import*
ecran=Tk()
ecran.title('Petits Chevaux')
ecran.attributes('-fullscreen',1)
ecran.configure(background='light grey')
titre=Label(ecran,text='JEU DES PETITS CHEVAUX',font='tk.meHelvetica 18 bold underline',background='light grey')
titre.pack(padx=10,pady=10)

hauteur=714
largeur=714

plateau=Canvas(ecran,bg='white', height=hauteur, width=largeur)
plateau.pack()

fichier_img=PhotoImage(file='plateauphoto.gif')
img=plateau.create_image(357,357,image=fichier_img)

Xj=168
Yj=168
Xb=546
Yb=168
Xv=168
Yv=546
Xr=546
Yr=546

chevalj=Canvas(plateau, height=42, width=42)
chevalj.place(x=Xj-21,y=Yj-21)
#chevalj.attributes('-alpha', 0) (je voulais essayer de mettre un fond trasnparent au canva...)
chevaljaune=PhotoImage(file='chevaljaune.gif')
chevalJ=chevalj.create_image(21,21,image=chevaljaune)
chevalbleu=PhotoImage(file='chevalbleu.gif')
chevalb=plateau.create_image(Xb,Yb,image=chevalbleu)
chevalvert=PhotoImage(file='chevalvert.gif')
chevalv=plateau.create_image(Xv,Yv,image=chevalvert)
chevalrouge=PhotoImage(file='chevalrouge.gif')
chevalr=plateau.create_image(Xr,Yr,image=chevalrouge)


def boutonsfin():
    FenetreFin=Toplevel(ecran)
    FenetreFin.title('Confirmation')
    FenetreFin.geometry('142x52')
    quitterOrester=Label(FenetreFin,text="CONFIRMER?")
    quitterOrester.pack()
    BoutonQuitter=Button(FenetreFin,text='CONFIRMER',activebackground='light grey',command=ecran.destroy)
    BoutonQuitter.pack(side=LEFT)
    BoutonRester=Button(FenetreFin,text='ANNULER',activebackground='light grey',command=FenetreFin.destroy)
    BoutonRester.pack(side=RIGHT)
    

def lancerde():
    FenetreDe=Toplevel(ecran)

    def alea():
        nb=randint(1,3)

        if nb==1 :
            FenetreDe.destroy()
            FenetreDeEffectue=Toplevel(ecran)
            res=Label(FenetreDeEffectue,text='Résultat : '+str(nb), fg='red')
            res.pack(padx=15,pady=10)
            imgde = Canvas(FenetreDeEffectue,bg='white',height=100,width=100)
            imgde.pack(side=TOP)
            img=PhotoImage(file='face1.gif')
            photo=imgde.create_image(50,50,image=img)
            FenetreDeEffectue.mainloop()
            
        
        if nb==2 :
            FenetreDe.destroy()
            FenetreDeEffectue=Toplevel(ecran)
            res=Label(FenetreDeEffectue,text='Résultat : '+str(nb), fg='red')
            res.pack(padx=15,pady=10)
            imgde = Canvas(FenetreDeEffectue,bg='white',height=100,width=100)
            imgde.pack(side=TOP)
            img=PhotoImage(file='face2.gif')
            photo=imgde.create_image(50,50,image=img)
            FenetreDeEffectue.mainloop()
        
        if nb==3 :
            rejouertrois=Toplevel(FenetreDe)
            texte=Label(rejouertrois,text='Vous avez fait 3, rejouez !', width=20,height=1,fg="black")
            texte.pack()
            imgde = Canvas(rejouertrois,bg='white',height=100,width=100)
            imgde.pack(side=TOP)
            img=PhotoImage(file='face3.gif')
            photo=imgde.create_image(50,50,image=img)
            bououtonquittefentre3=Button(rejouertrois,text='Quitter',command=rejouertrois.destroy)
            bououtonquittefentre3.pack(side=BOTTOM)
            rejouertrois.mainloop()
            global Xj
            global Yj
            
            if Xj==168 and Yj==168 :
                Xj=42
                Yj=294
                plateau.move(chevalj,Xj,Yj)
                #plateau.update() (je ne sais pas si cela est utile, j'ai juste testé plusieurs choses dans l'espoir que ça fonctionne)
                #plateau.mainloop() (même chose)
                

    boutonlancedede=Button(FenetreDe,text='Lancer le dé',command=alea)
    boutonlancedede.pack(side=TOP)
    FenetreDe.mainloop()


BoutonDe=Button(ecran,text='LANCER LE DÉ',command=lancerde)
BoutonDe.pack()
BoutonDe.place(relx=0.1, rely=.5)
BoutonFin=Button(ecran,text='FIN DU JEU', command=boutonsfin)
BoutonFin.pack()
BoutonFin.place(relx=.5, rely=.95)
plateau.mainloop()
ecran.mainloop()
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment