Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème jeux de déplacement d'un cercle

    17 novembre 2017 à 11:55:08

    Bomjour à tous, étant un débutant de l'extrême sur python je suis venus demander des conseils avisés. Sur mon programme, j'ai un soucis de limite. Comment faire pour que mon cercle ne sorte pas du canevas lors de son déplacement ??

    Deuxième question, comment faire pour que les carrés noires deviennent un obstacle (donc infranchissable par le cercle) ??

    Merci d'avance

    #Importation de tkinter

    from tkinter import *

    fen=Tk()

    #Delimitation de mon espace de jeux qui a pour ses 4 cotés une valeur de 400.

    COTE=400

    #Creation d'une matrice 6x6 afin de définir aléatoirement les cases noires

    import numpy as np

    a=np.random.randint(4,size=(6,6)) #Pour pas qu'il ny ait trop de cases noires, les valeurs de 3 dans la matrice seront les cases noires

    print(a)

    can=Canvas(fen,bg="white", height=COTE, width=COTE)

    can.pack()   #Creation de la surface de jeux

    NB_DE_CASES=6

    PAS=COTE/NB_DE_CASES  #Delimitation du damier 

    x=0

    y=0

    #Creation des lignes horizontales

    while (x<=NB_DE_CASES):

            can.create_line(0,PAS*x,COTE,PAS*x,fill='black')

            x=x+1

    #Creation des lignes verticales       

    while (y<=NB_DE_CASES):

            can.create_line(PAS*y,0,PAS*y,COTE,fill='black')

            y=y+1

    def traceCercle(x, y):

        r=15  #rayon

        #passage des coordonnées en cases aux coordonnées pixels

        x=PAS/2*(x-1)

        y=PAS/2*(y-1)

        #ici la fonction renvoie une référence vers le cercle créé pour pouvoir le réutiliser ultérieurement

        return can.create_oval(x-r, y-r, x+r, y+r, fill='blue',outline='black')

    #Position initiale de mon pion sur le damier        

    monPion=traceCercle(2,12)

    #Mouvement à droite avec la flèche droite du clavier

    def flecheDroite(event):

        print("déplace vers la droite")

        can.move(monPion,PAS,0)

        can.pack()

    #Mouvement à gauche avec la flèche gauche du clavier  

    def flecheGauche(event):

        print("déplace vers la gauche")

        can.move(monPion,-PAS,0)

        can.pack()

    #Mouvement en haut avec la flèche haut du clavier   

    def flecheHaut(event):

        print("déplace vers le haut")

        can.move(monPion,0,-PAS)

        can.pack()

    #Mouvement en bas avec la flèche bas du clavier

    def flecheBas(event):

        print("déplace vers le bas")

        can.move(monPion,0,PAS)

        can.pack()

    #Liaisons des touches du clavier avec les définitions de celles-ci

    fen.bind("<Right>",flecheDroite)  

    fen.bind("<Left>",flecheGauche)

    fen.bind("<Up>",flecheHaut)

    fen.bind("<Down>",flecheBas)

    #Creation des cases noires dans le damier par l'intermediaire de la matrice np crée de facon aléatoire avec des chiffres entre 1 et 3

    #Chiffre 3 est égal à une case noire

    ###PREMIèRE COLONNE###

    if a[0,0] == 3:

        can.create_rectangle(0,0,PAS,PAS,fill='black',outline='black')

    if a[1,0] == 3:

        can.create_rectangle(0,PAS,PAS,2*PAS,fill='black',outline='black')

    if a[2,0] == 3:

        can.create_rectangle(0,2*PAS,PAS,3*PAS,fill='black',outline='black')

    if a[3,0] == 3:

        can.create_rectangle(0,3*PAS,PAS,4*PAS,fill='black',outline='black')

    if a[4,0] == 3:

        can.create_rectangle(0,4*PAS,PAS,5*PAS,fill='black',outline='black')

    ###DEUXIèME COLONNE###

    if a[0,1] == 3:

        can.create_rectangle(PAS,0,2*PAS,PAS,fill='black',outline='black')

    if a[1,1] == 3:

        can.create_rectangle(PAS,PAS,2*PAS,2*PAS,fill='black',outline='black')

    if a[2,1] == 3:

        can.create_rectangle(PAS,2*PAS,2*PAS,3*PAS,fill='black',outline='black')

    if a[3,1] == 3:

        can.create_rectangle(PAS,3*PAS,2*PAS,4*PAS,fill='black',outline='black')

    if a[4,1] == 3:

        can.create_rectangle(PAS,4*PAS,2*PAS,5*PAS,fill='black',outline='black')

    if a[5,1] == 3:

        can.create_rectangle(PAS,5*PAS,2*PAS,6*PAS,fill='black',outline='black')

    ###TROISIèME COLONNE###

    if a[0,2] == 3:

        can.create_rectangle(2*PAS,0,3*PAS,PAS,fill='black',outline='black')

    if a[1,2] == 3:

        can.create_rectangle(2*PAS,PAS,3*PAS,2*PAS,fill='black',outline='black')

    if a[2,2] == 3:

        can.create_rectangle(2*PAS,2*PAS,3*PAS,3*PAS,fill='black',outline='black')

    if a[3,2] == 3:

        can.create_rectangle(2*PAS,3*PAS,3*PAS,4*PAS,fill='black',outline='black')

    if a[4,2] == 3:

        can.create_rectangle(2*PAS,4*PAS,3*PAS,5*PAS,fill='black',outline='black')

    if a[5,2] == 3:

        can.create_rectangle(2*PAS,5*PAS,3*PAS,6*PAS,fill='black',outline='black')

    ###QUATRIèME COLONNE###

    if a[0,3] == 3:

        can.create_rectangle(3*PAS,0,4*PAS,PAS,fill='black',outline='black')

    if a[1,3] == 3:

        can.create_rectangle(3*PAS,PAS,4*PAS,2*PAS,fill='black',outline='black')

    if a[2,3] == 3:

        can.create_rectangle(3*PAS,2*PAS,4*PAS,3*PAS,fill='black',outline='black')

    if a[3,3] == 3:

        can.create_rectangle(3*PAS,3*PAS,4*PAS,4*PAS,fill='black',outline='black')

    if a[4,3] == 3:

        can.create_rectangle(3*PAS,4*PAS,4*PAS,5*PAS,fill='black',outline='black')

    if a[5,3] == 3:

        can.create_rectangle(3*PAS,5*PAS,4*PAS,6*PAS,fill='black',outline='black')

    ###CINQUIèME COLONNE###

    if a[0,4] == 3:

        can.create_rectangle(4*PAS,0,5*PAS,PAS,fill='black',outline='black')

    if a[1,4] == 3:

        can.create_rectangle(4*PAS,PAS,5*PAS,2*PAS,fill='black',outline='black')

    if a[2,4] == 3:

        can.create_rectangle(4*PAS,2*PAS,5*PAS,3*PAS,fill='black',outline='black')

    if a[3,4] == 3:

        can.create_rectangle(4*PAS,3*PAS,5*PAS,4*PAS,fill='black',outline='black')

    if a[4,4] == 3:

        can.create_rectangle(4*PAS,4*PAS,5*PAS,5*PAS,fill='black',outline='black')

    if a[5,4] == 3:

        can.create_rectangle(4*PAS,5*PAS,5*PAS,6*PAS,fill='black',outline='black')

    ###SIXIèME COLONNE###

    if a[1,5] == 3:

        can.create_rectangle(5*PAS,PAS,6*PAS,2*PAS,fill='black',outline='black')

    if a[2,5] == 3:

        can.create_rectangle(5*PAS,2*PAS,6*PAS,3*PAS,fill='black',outline='black')

    if a[3,5] == 3:

        can.create_rectangle(5*PAS,3*PAS,6*PAS,4*PAS,fill='black',outline='black')

    if a[4,5] == 3:

        can.create_rectangle(5*PAS,4*PAS,6*PAS,5*PAS,fill='black',outline='black')

    if a[5,5] == 3:

        can.create_rectangle(5*PAS,5*PAS,6*PAS,6*PAS,fill='black',outline='black')

    can.create_text(PAS/2,5.5*PAS,text="Start",font="Arial 12",fill='green') 

    can.create_text(5.5*PAS,PAS/2,text="Goal",font="Arial 12",fill='red') 

    #Fait tourner le tout pour créer l'interface interactive

    fen.mainloop()  

    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2017 à 19:41:03

      Bonjour, pour insérer du code sur ce forum, merci d'utiliser le bouton code </> prévu à cet effet, en choisissant le bon langage, ce qui active la coloration syntaxique. Ce seras plus lisible pour tout le monde.

      Je t'invite à éditer ton message.

      • Partager sur Facebook
      • Partager sur Twitter

      Problème jeux de déplacement d'un cercle

      × 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