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
A priori à partir du moment où tu mets 50 "if", tu es sur la mauvaise route comme tu t'en doutes
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