TP3A Ajout de quelques commentaires
This commit is contained in:
parent
5b75e9904c
commit
c26cb355eb
|
@ -32,7 +32,7 @@ def jouerIA(nom, descr, niveau):
|
|||
nbre_tirs = 0
|
||||
res = False
|
||||
while not BN.tous_coules(jeu):
|
||||
BN.afficher_jeu(jeu) # Décommenter pour une nouvelle fonctionalité
|
||||
BN.afficher_jeu(jeu)
|
||||
tir = choisir_tir(jeu, res, niveau)
|
||||
nbre_tirs += 1
|
||||
nav, res = BN.analyse_un_tir(jeu, tir)
|
||||
|
@ -42,7 +42,8 @@ def jouerIA(nom, descr, niveau):
|
|||
print(nav + " touché.")
|
||||
else:
|
||||
print(nav + " coulé.")
|
||||
BN.sauver_result(nom, descr, nbre_tirs)
|
||||
BN.sauver_result(nom+' (IA)', descr, nbre_tirs)
|
||||
# On rajoute IA dans les scores pour repérér les tricheurs
|
||||
print("Terminé en %d tirs" % nbre_tirs)
|
||||
|
||||
def choisir_tir(jeu, res, niveau):
|
||||
|
@ -84,40 +85,41 @@ def en_bonds(esp, c):
|
|||
def choisir_tir_3(jeu, res):
|
||||
"""
|
||||
dict, int → (int, int)
|
||||
IA forte, prend en priorité les cases adjacentes à celles touchées
|
||||
IA bonne, prend en priorité les cases adjacentes à celles touchées
|
||||
"""
|
||||
# Choix du mode
|
||||
if 'ia' not in jeu:
|
||||
if 'ia' not in jeu: # On crée un dict qui stockera quelques variables utiles
|
||||
jeu['ia'] = dict()
|
||||
jeu['ia']['mode'] = 0
|
||||
jeu['ia']['cl'] = -1
|
||||
jeu['ia']['mode'] = 0 # 0 : aléatoire, 1 : cases adjacentes à la dernière touche
|
||||
#jeu['ia']['cl'] = -1
|
||||
if type(res) == int:
|
||||
if res == BN.COULE:
|
||||
jeu['ia']['mode'] = 0
|
||||
jeu['ia']['mode'] = 0 # Retour en mode aléatoire
|
||||
elif res == BN.TOUCHE:
|
||||
jeu['ia']['d_touche'] = jeu['ia']['d_coup']
|
||||
jeu['ia']['d_touche'] = jeu['ia']['d_coup'] # Stockage de a dernière touche
|
||||
jeu['ia']['mode'] = 1
|
||||
|
||||
# Acteur
|
||||
if jeu['ia']['mode'] == 1: # Si en mode recherche
|
||||
proxi = [(0, 1), (0, -1), (1, 0), (-1, 0)]
|
||||
if jeu['ia']['mode'] == 1: # Si en mode adjacent
|
||||
proxi = [(0, 1), (0, -1), (1, 0), (-1, 0)] # Cases de proximité
|
||||
for i in proxi:
|
||||
x = jeu['ia']['d_touche'][0] + i[0]
|
||||
y = jeu['ia']['d_touche'][1] + i[1]
|
||||
coup = (x, y)
|
||||
if coup not in jeu['coups_joues'] and en_bonds(jeu['plateau'], coup):
|
||||
break
|
||||
if i == proxi[-1]: # Si sans succès, on essaye autre chose
|
||||
break # Si coup non joué et dans le plateau, on valide
|
||||
if i == proxi[-1]: # Si aucune case adjacente ne fonctionne,
|
||||
# retour en mode aléatoire
|
||||
# (arrive quand 2 navires sont cote à cote)
|
||||
jeu['ia']['mode'] = 0
|
||||
if jeu['ia']['mode'] == 0: # Si en mode aléatoire
|
||||
while 1:
|
||||
while True:
|
||||
x = randint(1, jeu['plateau']['larg'])
|
||||
y = randint(1, jeu['plateau']['larg'])
|
||||
coup = (x, y)
|
||||
if coup not in jeu['coups_joues']:
|
||||
break
|
||||
jeu['ia']['d_coup'] = coup
|
||||
jeu['ia']['d_coup'] = coup # Stockage du dernier coup joué
|
||||
return coup
|
||||
|
||||
|
||||
|
|
Reference in a new issue