#Grille bataile navale test # -*- coding=utf-8 -*- from tkinter import * from random import * #ouverture du fichier comportant les coordonnées des grilles et celui comportant les coordonnées des bateaux de l'ordi fich=open("coordonnées.txt", "r") fichligne=open("ordi3ligne.txt","r") fichcolonne=open("ordi3colonne.txt","r") fenetre = Tk() #################### # VARIABLES JOUEUR # #################### #x1# colonne du tir #y1# ligne du tir #c1# colonne placement bateau #d1# ligne placement bateau ######################## # VARIABLES ORDINATEUR # ######################## #t1# colonne du tir #t2# ligne du tir #v1# colonne placement bateau #w1# ligne placement bateau #n# est un compteur ################# ### FONCTIONS ### ################# def Fin (): #ok fenetre.quit() fenetre.destroy() #################### # FONCTIONS JOUEUR # #################### ############################## #PLACER LES BATEAUX DU JOUEUR# ############################## def PlaceBateau (a1,b1) : Label(fenetre, borderwidth=10, relief=RIDGE, background='grey', width=2, height=2).grid(row=b1, column=a1, ipadx=5, ipady=5, sticky="SW") ######################################################## #VERIFIER QUE LES BATEAUX DU JOUEUR SOIT DANS LA GRILLE# ######################################################## def VerificationBateau(a1,b1) : #rajouter une conditions pour faire en sorte de 'coller' les cases lorsque l'on place les bateaux if a1<=10 and b1<=10 : # ex : pour le porte avion, faire en sorte qu'il ne soit pas possible de le mettre en a1 a2 a4 a5 a7 PlaceBateau(a1,b1) ListeColonneJoueur.append((a1)) ListeLigneJoueur.append((b1)) print(ListeColonneJoueur) print(ListeLigneJoueur) else : print("Votre bateau est en dehors de la zone de jeu ou mal placer ! veuillez recomencer !") # comment ne pas enregistrer les placements et demander de replacer le bateau ? ##################################### #DEMANDE LES COORDONNEES DES BATEAUX# ##################################### def ActualiserBateau() : #ok print("ETAPE 1 : Placer les bateaux") print('\n') print("Placer le torpilleur de 2 cases") for z in range (2) : d1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) c1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationBateau(c1,d1) print('\n') print("Placer le premier sous-marin de 3 cases") for z in range (3) : d1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) c1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationBateau(c1,d1) print('\n') print("Placer le second sous-marin de 3 cases") for z in range (3) : d1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) c1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationBateau(c1,d1) print('\n') print("Placer le croiseur de 4 cases") for z in range (4) : d1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) c1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationBateau(c1,d1) print('\n') print("Placer le porte avion de 5 cases") for z in range (5) : d1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) c1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationBateau(c1,d1) print('\n') print('Veuilez appuyer sur actualiser Tir pour effectuer chacun de vos tirs') print('\n') ############### #LE JOUEUR TIR# ############### def ActualiserTir() : n=0 while n<1 : print("ETAPE 2 : Tirer !") y1=eval(input("Entrez une lettre comprise entre A et J pour désigner la ligne : ")) x1=eval(input("Entrez un chiffre compris entre 1 et 10 pour désigner la colonne : ")) VerificationTirJoueur(x1,y1) x1=x1+12 #il va falloir operer un decalage etant donne que nous tirons sur la grille adverse :# n=n+1 #ainsi la ligne reste la meme mais la colonne est decalee de 12 rangs vers la droite # t1=randint(1,10) t2=randint(1,10) ResultaTirOrdi(t1,t2) ResultaTirJoueur(x1,y1) #la fonction resultat tir ne fonctionne pas lorsque l'on tir sur un bateau ennemi pas d'affichage rouge print('\n') break def VerificationTirJoueur(a1,b1) : #ok if a1>10 or b1>10 : print("vous tirez hors du terrain !") def ResultaTirJoueur (a1,b1) : #un tire sur un bateau ne met pas la case en rouge -> marche pas pour la premiere condition compteur=0 while compteur<17 : #17 correspond a la longeur des listes if a1+12==ListeColonneBateau[compteur] and b1==ListeLigneBateau[compteur] : #on tir sur la grille adverse d'ou le décalage des colonnes #si les coordonnées d'un bateau ennemi correspondent a ceux de la case sur laquelle on tire (a1,b1) alors la case est senser s'afficher en rouge PB #retirer les coordonnées des bateaux touchés de la liste Label(fenetre, borderwidth=10, relief=RIDGE, background='red', width=2, height=2).grid(row=b1, column=a1, ipadx=5, ipady=5, sticky="SW") Print('Vous avez touché un bateau adverse, Bravo !') else : Label(fenetre, borderwidth=10, relief=RIDGE, background='white', width=2, height=2).grid(row=b1, column=a1, ipadx=5, ipady=5, sticky="SW") Print('Dans l eau, Dommage') compteur=compteur+1 def ResultaTirOrdi (a1,b1) : #meme probleme que la fonction ci dessus compteur=0 while compteur