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

Bataille navale en python

jycreyn
jycreyn
Niveau 1
14 septembre 2019 à 17:55:41

Bonjour, je débute en python et j'aimerais faire un bataille navale. J'ai fait ceci :

from random import *
rejouer = int(1)
while rejouer == 1:

A = randint(1,10)
B = randint (1,10)
C = 999
D = 999

while A != C or B != D :
C=int(input("Trouve les coordonnées x"))
D=int(input("Trouve les coordonnées y"))
print("X = ",C,"Y = ",D)
if A==C and B==D:
print("Touché!")
if A!=C and B!=D:
print("Dans l'eau...")
if A!=C and B==D or A==C and B!=D:
print("Bonne collone ou bonne ligne")

print("On rejoue ?")
recomencer = ("1 = oui / 0 = non")

Cela marche bien mais j'aimerais faire en sorte que lorsque l'on tape acoté du bateau il y ait ecris "frolé".
Mais je ne sais pas comment m'y prendre sans avoir a effectuer 8 test.... ( toutes les case a coté )

Voicis les 8 test que je voudrai supprimer
if A==C+1 and B==D:
print("Frôlé!")
if A==C-1 and B==D:
print("Frôlé!")
if A==C and B==D+1:
print("Frôlé!")
if A==C and B==D-1:
print("Frôlé!")
if A==C+1 and B==D+1:
print("Frôlé!")
if A==C-1 and B==D-1:
print("Frôlé!")
if A==C-1 and B==D+1:
print("Frôlé!")
if A==C+1 and B==D-1:
print("Frôlé!")

Je voudrais simplifier ce code.
Existe-t-il un commande pour connaitre la "distance" entre deux variable int ?

Merci d'avance pour votre aide :D

blackapplex
blackapplex
Niveau 10
14 septembre 2019 à 20:43:21

A priori à partir du moment où tu mets 50 "if", tu es sur la mauvaise route comme tu t'en doutes :ok:
C'est classique de devoir faire "le tour" d'une coordonnée (x,y), là pour ton cas je te conseillerai de simplement passer par un double for.


for dx in [-1, 1]
    for dy in [-1, 1]
        if A == C+dx and B == D+dy and not (dx == 0 and dy == 0)
            print("frolé")

Du coup là t'as un delta x et un delta y que tu peux appliquer à C et D

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