Bataille Navale Python
Maybe your like
Navigation
Discussion : bataille navale Python Sujet :


Inscrivez-vous gratuitementpour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter
- Vous n'êtes pas encore inscrit sur Developpez.com ? Inscrivez-vous gratuitement !
- Recherche avancée

- Forum
- Autres langages
- Python
- Général Python
- bataille navale Python
Discussion : bataille navale Python Sujet : Python
- Outils de la discussion
- Afficher une version imprimable
- S'abonner à cette discussion…
- Affichage
- Mode linéaire
- Choisir le mode hybride
- Choisir le mode arborescent
- 09/05/2018, 10h21 #1 bigben38
Nouveau candidat au Club
LycéenInscrit enMai 2018Messages1
Détails du profil
Informations personnelles :Sexe :
Localisation : France, Isère (Rhône Alpes)Informations professionnelles :Activité : LycéenInformations forums :Inscription : Mai 2018Messages : 1
bataille navale Python Bonjour à tous, Je suis en Terminale option ISN et je dois présenter un jeu de bataille navale sous Python. C'est un jeu opposant 2 joueurs (pas contre l'ordinateur) et le placement des bateaux est manuel. Malheureusement, il plante à la mise en place des bateaux. Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 #Grille comportant les bateaux carte = [ #Grille du joueur B [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # x = 0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # x = 1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # x = 2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], # ... [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #y--> 0 1 2 3 4 ... ], #Grille joueur A [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] ] #Liste des bateaux avec leur longueur # Bateau n 1 ==> longueur = 5 # Bateau n 2 ==> longueur = 4 # ... # correspond au nombre de coup restant aÃÆÃâÃâ*ââ¬â¢ÃÆÃ¢Ã¢ââ¬Å¡Ã¬Ãâ¦ÃÂ¡ÃÆÃââââÂ¬Ã Â¡ÃÆÃ¢â¬Å¡ÃâÃÂ* couler bateaux = [[0,5,4,3,2,1], [0,2,3,0,0,0]] #Fonction sommant le nb de coup restant a̢̮â¬Å¡ÃâÃÂ* couler def fct_non_trouve(grille): total=0 for reste in grille: total = total + reste return(total) import random #print(fct_non_trouve(bateaux)) #Debut du jeu #Saisie des noms des joueurs Nom_joueur_A = input("Nom du joueur A: ") Nom_joueur_B = input("Nom du joueur B: ") #determination qui commence le jeu liste_joueurs = [Nom_joueur_A, Nom_joueur_B] Qui_joue = random.choice(liste_joueurs) index_joueur = liste_joueurs.index(Qui_joue) #------------------------------------------------------------------------------- def ajouter(point, vecteur): x, y = point dx, dy = vecteur return x+dx, y+dy def construire_bateau (pt, dir, lg): x, y = pt dx, dy = dir bateau = [pt] pt = ajouter(pt,dir) for i in range (lg-1): bateau.append(pt) pt = ajouter(pt,dir) return bateau print("Joueur ",Nom_joueur_A," place ces bateaux") for tour_placement in range(4): position1 = int(input("X")) position2 = int(input("Y")) orientation = int( input("orientation 6 = Est / 4 = Ouest / 8 = Nord / 2 = Sud")) if orientation == 6: coucou = 0,1 elif orientation == 4: coucou = 0,-1 elif orientation == 8: coucou = -1,0 elif orientation == 2: coucou = 1,0 if tour_placement == 0: bateau_1 = construire_bateau((position1,position2),(coucou),2) carte[0][bateau_1[0][0]][bateau_1[0][1]] = 5 carte[0][bateau_1[1][0]][bateau_1[1][1]] = 5 if tour_placement == 1: bateau_2 = construire_bateau((position1,position2),(coucou),3) carte[0][bateau_2[0][0]][bateau_2[0][1]] = 4 carte[0][bateau_2[1][0]][bateau_2[1][1]] = 4 carte[0][bateau_2[2][0]][bateau_2[2][1]] = 4 if tour_placement == 2: bateau_3 = construire_bateau((position1,position2),(coucou),3) carte[0][bateau_3[0][0]][bateau_3[0][1]] = 3 carte[0][bateau_3[1][0]][bateau_3[1][1]] = 3 carte[0][bateau_3[2][0]][bateau_3[2][1]] = 3 if tour_placement == 3: bateau_4 = construire_bateau((position1,position2),(coucou),4) carte[0][bateau_4[0][0]][bateau_4[0][1]] = 2 carte[0][bateau_4[1][0]][bateau_4[1][1]] = 2 carte[0][bateau_4[2][0]][bateau_4[2][1]] = 2 carte[0][bateau_4[3][0]][bateau_4[3][1]] = 2 if tour_placement == 4: bateau_5 = construire_bateau((position1,position2),(coucou),5) carte[0][bateau_5[0][0]][bateau_5[0][1]] = 1 carte[0][bateau_5[1][0]][bateau_5[1][1]] = 1 carte[0][bateau_5[2][0]][bateau_5[2][1]] = 1 carte[0][bateau_5[3][0]][bateau_5[3][1]] = 1 carte[0][bateau_5[4][0]][bateau_5[4][1]] = 1 tour_placement = tour_placement + 1 print(carte[0]) #------------------------------------------------------------------------------- while True: print("Joueur ",Qui_joue, " joue") tir_x = int(input("Position x: (entrer une valeur entre: 0-9) ")) while tir_x > 9 or tir_x < 0 : tir_x = int(input("La position x entre n est pas dans la grille: (entrer une valeur entre: 0-9) ")) tir_y = int(input("Position y: (entrer une valeur entre: 0-9) ")) while tir_y > 9 or tir_y < 0 : tir_y = int(input("La position y pas dans la grille: (entrer une valeur entre: 0-9) ")) num_bateau = carte[index_joueur][tir_x][tir_y] # toucher pas toucher if num_bateau > 0 : bateaux[index_joueur][num_bateau] -= 1 print("touche!!!!!") if bateaux[index_joueur][num_bateau] == 0: print("bateau num", num_bateau ," coule") carte[index_joueur][tir_x][tir_y] = -carte[index_joueur][tir_x][tir_y] else: print("plouf...") carte[index_joueur][tir_x][tir_y] = carte[index_joueur][tir_x][tir_y] - 10 #Controle fin de partie if fct_non_trouve(bateaux[index_joueur]) == 0: break #changer de joueur if carte[index_joueur][tir_x][tir_y] < -10 : Qui_joue = Qui_joue else: if index_joueur == 0 : Qui_joue = liste_joueurs[1] else: Qui_joue = liste_joueurs[0] index_joueur = liste_joueurs.index(Qui_joue) print(carte) print("Joueur ", Qui_joue, " a coule tous les bateaux ennemis!!!")
Répondre avec citation 0 0 - 09/05/2018, 11h45 #2 lg_53
Membre Expert 






Ingénieur calcul scientifiqueInscrit enMars 2013Messages1 229
Détails du profil
Informations personnelles :Sexe :
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)Informations professionnelles :Activité : Ingénieur calcul scientifiqueInformations forums :Inscription : Mars 2013Messages : 1 229
Chez moi ca fonctionne à part que tu ne demande pas au 2eme joueur de placer lui aussi ses bateaux ... A part ce point, diverse remarques : 1) Ca serait bien de préciser la taille du bateau que tu demandes de placer pour plus de clareté pour l'utilisateur. 2) Pour être plus sympa côté utilisateur, plutot que de demander et X et Y, on pourrait juste demander la position (par exemple, l'utilisateur entre A1, on laisse sous forme chaine de caractère), et toi tu retraduis que ca correspond à X=0 et Y=0 Suffit de te faire une fonction pour ca, qui prendrait le premier caractère puis le passerais à ce dico par exemple
{'A':0,'B':1, ... etc ... } , et pour le chiffre après, juste transformer le caractère en chiffre et retrancher 1 (pour que l'utilisateur commence à 1, et que python comprenne 0). 3) Ensuite il y a des choses immondes dans ton code ! Par exemple tu écris des choses dont la structure est comme ça :Code : Sélectionner tout - Visualiser dans une fenêtre à part Code : Sélectionner tout - Visualiser dans une fenêtre à part
Si tu dois tester à chaque fois l'indice de ta boucle alors quel est l'intéret de la boucle ? Pourquoi ne pas écrire directement la suite des taches à faires comme ceci ?1234567891011 for tour_placement in range(4): if tour_placement == 0: tache if tour_placement == 1: autre_tache if tour_placement == 2: encore_une_autre_tache if tour_placement == 3: etc ... if tour_placement == 4: etc .. Code : Sélectionner tout - Visualiser dans une fenêtre à part
Et là plus besoin de boucle ni de if. Ensuite ca, ca serait si tes taches étaient vraiment différentes les unes des autres. Là non pas du tout, ca fait juste mettre un bateau sur une carte. Fais toi une fonction du type :123456 tache autre_tache encore_une_autre_tache etc ... etc .. Code : Sélectionner tout - Visualiser dans une fenêtre à part
et après simplement :123 def ajoute_bateau_sur_carte(num_carte, bateau, code_bateau) : for position in bateau : carte[num_carte][position[0]][position[1]] = code_bateau Code : Sélectionner tout - Visualiser dans une fenêtre à part
4) Autre chose qui ne va pas :123456789101112131415 for tour_placement,longueur_bateau in enumerate([2,3,3,4,5]): position1 = int(input("X")) position2 = int(input("Y")) orientation = int( input("orientation 6 = Est / 4 = Ouest / 8 = Nord / 2 = Sud")) if orientation == 6: coucou = 0,1 elif orientation == 4: coucou = 0,-1 elif orientation == 8: coucou = -1,0 elif orientation == 2: coucou = 1,0 bateau = construire_bateau((position1,position2),(coucou),longueur_bateau) ajoute_bateau_sur_carte(0, bateau, 5-tour_placement) Code : Sélectionner tout - Visualiser dans une fenêtre à part
Non! La structure for va déjà incrémenter toute seule la variable tour_placement ! Suffit d'écrire ceci pour s'en rendre compte :123 for tour_placement in range(4): ## ... tour_placement = tour_placement + 1 Code : Sélectionner tout - Visualiser dans une fenêtre à part
5) Fait toi également une fonction qui affiche en console la grille de manière sympa (plutot que d'avoir juste ta liste de liste brut). Ca pourrait afficher qqch comme ca par exemple :12 for i in range(4): print(i) Code : Sélectionner tout - Visualiser dans une fenêtre à part 123456789101112 | A B C D E F G H I J ----+-------------------------------- 1 | -5 0 0 0 0 0 0 0 0 0 2 | 5 0 0 0 0 0 0 0 0 0 3 | 0 0 4 0 0 0 0 0 0 0 4 | 0 0 4 0 0 0 0 0 0 0 5 | 0 0 4 0 3 0 0 0 0 0 6 | 0 0 0 0 3 0 0 0 0 0 7 | 0 0 0 0 3 0 2 0 0 0 8 | 0 0 0 0 0 0 2 0 0 0 9 | 0 0 0 0 0 0 2 0 0 0 10 | 0 0 0 0 0 0 2 0 0 0
Répondre avec citation 0 0
| Actualités | F.A.Q PYTHON | TUTORIELS PYTHON | SOURCES PYTHON | OUTILS PYTHON | LIVRES PYTHON | PyQt |

- Forum
- Autres langages
- Python
- Général Python
- bataille navale Python
Discussions similaires
- Bataille navale c Par idealj78 dans le forum C Réponses: 5 Dernier message: 07/12/2006, 00h42
- aide pour jeu de la bataille navale Par Jeannot Alpin dans le forum Delphi Réponses: 17 Dernier message: 19/11/2006, 21h33
- bataille navale Par keenurives dans le forum C Réponses: 7 Dernier message: 21/11/2005, 13h15
- [LG]Programme Bataille Navale en Pascal Par RaFaL dans le forum Langage Réponses: 21 Dernier message: 10/06/2003, 22h22
Partager
Partager
Tag » Code Bataille Navale Python
-
Une Bataille Navale Codée En Python Sur NumWorks - Nsi.xyz
-
Niveau Intermédiaire [Rendre Les Objets Intelligents Grâce à Python]
-
TP3 Bataille Navale
-
Bataille Navale Entierement Sur Python - OpenClassrooms
-
[PDF] Jeu De Bataille Navale [sr07] - Examen - Unisciel
-
[PDF] Travaux Pratiques Initiation à La Programmation Avec Python Feuille ...
-
Bataille Navale Python - YouTube
-
Live Coding Spécial 1k. On Code Une Bataille Navale ! - YouTube
-
Une Bataille Navale Réalisée En Python Avec La Librairie Pygame.
-
[PDF] Séance 10: Bataille Navale - IRIF
-
Nclv/Battleship: Bataille Navale PVP / PVE - GitHub
-
Tutoriel Sur La Programmation Python Bataille Navale - Cours-Gratuit
-
Python : Bataille Navale En Local Ou En Reseau :d - CodeS SourceS
-
[PDF] Bataille Navale