[Python Tkinter]- Bataille Naval

- Bataille Naval [Python Tkinter] - Python - Programmation

Marsh Posté le 28-05-2018 à 18:54:26    

bonjours/ bonsoir, je travail actuellement sur une Bataille Naval sur le Python 3.6. J'aurais besoin d'aide/conseil principalement sur la partie "notification" de mon programme afin de pouvoir lui faire afficher les prix (qu'on rentre en meme temps que les coordonnée des navires) que le joueur gagne en coulant un bateaux specifique. Ma version final devra comporter 6 bateau sur cette grille 10x10. Je tien a preciser qu'a la base, ce programme tournée tout seul avec un choix de placement aléatoire des navires. Je remercie d'avance les personnes qui pourront m'aider a me debloquer...
 
voici le programme en question :
 

Code :
  1. from tkinter import*
  2. from random import*
  3. from tkinter.messagebox import *
  4. global case_choisie
  5. #global plateau_case_a_un
  6. def positionClicAppui(event): #position + changement de couleur appuie
  7.     X = event.x     
  8.     Y = event.y
  9.     global case_choisie
  10.    
  11.     case_choisie = plateau.find_closest(X,Y)[0]#intervale des cases selectionné
  12.     print("Détection clic de la souris : " )
  13.     print("x :", X,"y :", Y,"Identifiant case :", case_choisie)
  14.          
  15.  
  16.                         ####notification####
  17.     if plateau_case_a_un.count(case_choisie) != 0 :
  18.         a=Label(notification,textvariable=degat).pack()
  19.         plateau.itemconfigure(case_choisie,fill='green')
  20.         degat.set('touché')
  21.        
  22.     elif plateau_case_a_un.count(case_choisie) == 0 :
  23.         b=Label(notification,textvariable=degat).pack()
  24.         plateau.itemconfigure(case_choisie,fill='blue')
  25.         degat.set('raté')
  26.                     ####
  27.        
  28. # Création d'une grille 10 x 10 avec des 1 aléatoires représentant les cases occupées sur le programme
  29. def plateau_remplissage():
  30. #########################################################################################################################################################################################################
  31.     global plateau_aleatoire
  32.     plateau_aleatoire = []
  33.     plateau_case_a_un=[]
  34.     #print("Génération de coordonnées aléatoires pour les cases à  1 :" )   # Création d'une grille vide
  35.     for i in range(0,10):                # Création d'une liste à deux dimensions
  36.         plateau_aleatoire.append([])       
  37.         for j in range(0,10):
  38.             plateau_aleatoire[i].append(0)   
  39. ######################################################
  40.     print ("bateau 1:" )   
  41.     a = int (input("axe x: " ))            # Choix aléatoire de l'abscisse de la case         
  42.     b = int (input("axe y: " ))             # Choix aléatoire de l'ordonnee de la
  43.     prix1= input("prix bateau 1: " )
  44.     print ("bateau 2:" )   
  45.     c = int (input("axe x: " ))                 
  46.     d = int (input("axe y: " ))
  47.     prix2= input("prix bateau 2: " )
  48.     plateau_aleatoire[a][b] = 1         #créer autant de fois cette ligne qu'il y a de bateau avec des variables x y differentes
  49.     plateau_aleatoire[c][d] = 1
  50.     return plateau_aleatoire
  51. ############################################################################################################################################################################################################
  52. # Affichage des cases à 1 sur le plateau
  53. def plateau_affichage(a):
  54.     global k                                           
  55.     global plateau_case_a_un
  56.     plateau_case_a_un=[]
  57.     for i in range(0,10):                             
  58.         for j in range(0,10):
  59.             if a[i][j]==1:
  60.                 k = 10*j+i+1           # Calcul de l'identifiant de la case à partir de ses coordonnées
  61.                 plateau.itemconfigure(k,fill='red')
  62.                
  63.                 plateau_case_a_un.append(k)
  64.  
  65.     return 1
  66. #-------------------------------------------------------------------#
  67. #                   Programme principal tkinter                     #
  68. #-------------------------------------------------------------------#                                             
  69. fen1 = Tk()
  70. fen1.title('Plateau de jeu')
  71. plateau = Canvas(fen1,bg='white', height=500, width=500)
  72. plateau.pack(side=LEFT)
  73. #Création du plateau avec une grille 10 x 10
  74. for i in range(0,500,50):
  75.         for j in range(0,500,50):
  76.             plateau.create_rectangle(i,j,i+50,j+50,fill='yellow',outline='black',width=2)
  77.            
  78.            
  79. # Détection et affichage des coordonnées du clic de la souris lors d'un appui sur Button_1
  80. plateau.bind("<Button-1>", positionClicAppui) 
  81. plateau.pack()
  82. # Affichage du plateau avec les cases bateaux
  83. global plateau_aleatoire
  84. affiche = plateau_affichage(plateau_remplissage())
  85.                                                                     #Bouton quitter
  86. def callback():
  87.     if askyesno('Quitter', 'Voulez vous vraiment nous quitter ?'):
  88.         showinfo("au revoir...","hoooo...." )
  89.         fen1.destroy()
  90.     else:
  91.         showinfo('Tant mieux', 'Cool !')
  92.         showinfo("^^", "Bonne chance ! ^^" )
  93. Button(text='Quitter', command=callback).pack()
  94. #################################################################################
  95. notification =LabelFrame(fen1,text="Prix gagner",padx=100,pady=20)
  96. notification.pack(fill="both", expand="yes" )
  97. degat=StringVar()
  98.                                                 #affichage image arriere plan
  99. photo=PhotoImage(file= "loup_ephe.gif" )     #mettre l'image en gif et la redimensionner sur paint avec les pixels
  100. canvas = Canvas(fen1, width=265, height=190, background='yellow')
  101. image=canvas.create_image(0, 0, ancho=NW, image=photo)
  102. canvas.pack()
  103. fen1.mainloop()

Reply

Marsh Posté le 28-05-2018 à 18:54:26   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed