TP3A choisir_tir_3 vraiment fixé et documentation

This commit is contained in:
Geoffrey Frogeye 2015-02-17 11:49:47 +01:00
parent 75b07840c0
commit 5b75e9904c

View file

@ -19,7 +19,7 @@ from random import randint
def jouerIA(nom, descr, niveau):
"""
str, str -> ()
str, str ()
procédure de jeu complet de bataille navale,
le nom du joueur est donné par le paramètre nom,
et le jeu est décrit dans le fichier descr.
@ -36,7 +36,6 @@ def jouerIA(nom, descr, niveau):
tir = choisir_tir(jeu, res, niveau)
nbre_tirs += 1
nav, res = BN.analyse_un_tir(jeu, tir)
print(res)
if res == BN.RATE:
print("raté.")
elif res == BN.TOUCHE:
@ -54,7 +53,8 @@ def choisir_tir(jeu, res, niveau):
return tir
def choisir_tir_1(jeu, res):
""" dict, int -> (int, int)
"""
dict, int (int, int)
IA de bas niveau, tire aléatoirement dans la grille
"""
x = randint(0, jeu['plateau']['larg'])
@ -62,7 +62,8 @@ def choisir_tir_1(jeu, res):
return (x, y)
def choisir_tir_2(jeu, res):
""" dict, int -> (int, int)
"""
dict, int (int, int)
IA moyenne, tire aléatoirement mais jamais deux fois au même endroit
"""
x,y= randint(1, jeu['plateau']['larg']), randint(1, jeu['plateau']['haut'])
@ -74,37 +75,42 @@ def choisir_tir_2(jeu, res):
return (x, y)
def en_bonds(esp, c):
"""
dict, tuple bool
Indique si la position c est dans l'espace maritime esp
"""
return not (c[0] > esp['larg'] or c[0] <= 0 or c[1] <= 0 or c[1] > esp['haut'])
def choisir_tir_3(jeu, res):
"""
dict, int (int, int)
IA forte, prend en priorité les cases adjacentes à celles touchées
"""
# Choix du mode
if 'ia' not in jeu:
jeu['ia'] = dict()
jeu['ia']['mode'] = 0
jeu['ia']['cl'] = -1
if type(res) == int:
if res == BN.COULE:
# input("COULÉ")
jeu['ia']['mode'] = 0
elif res == BN.TOUCHE:
# input("TOUCHÉ")
jeu['ia']['d_touche'] = jeu['ia']['d_coup']
jeu['ia']['mode'] = 1
# Acteur
if jeu['ia']['mode'] == 1: # Si en mode recherche
# print('DEBUG MODE RECHERCHE', jeu['ia']['d_touche'])
proxi = [(0, 1), (0, -1), (1, 0), (-1, 0)]
for i in proxi:
x = jeu['ia']['d_touche'][0] + i[0]
y = jeu['ia']['d_touche'][1] + i[1]
coup = (x, y)
# print('COUP', coup)
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
# (arrive quand 2 navires sont cote à cote)
jeu['ia']['mode'] = 0
else: # Si en mode aléatoire
if jeu['ia']['mode'] == 0: # Si en mode aléatoire
while 1:
x = randint(1, jeu['plateau']['larg'])
y = randint(1, jeu['plateau']['larg'])