Skip to content

Commit 3a6163f

Browse files
committed
Versión creada en el mettup de sólo 144 líneas
1 parent 8805f10 commit 3a6163f

File tree

1 file changed

+23
-35
lines changed
  • Crea-tus-propios-juegos-en-Python

1 file changed

+23
-35
lines changed

Crea-tus-propios-juegos-en-Python/gato.py

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@
2323
1 - Indica que es una casilla ocupada por una tirada del Humano
2424
-1 - Indica que es una casilla ocupara por una tirada de la IA
2525
"""
26+
2627
import random
2728

2829
class Gato:
2930
def __init__(self):
3031
self.tablero = [
31-
[0,0,0],
32-
[0,0,0],
33-
[0,0,0]
32+
[0, 0, 0],
33+
[0, 0, 0],
34+
[0, 0, 0]
3435
]
3536
self.humano = 1
3637
self.ia = -1
@@ -45,19 +46,19 @@ def imprime_tablero(self):
4546

4647
def humano_elige(self):
4748
print()
48-
resp = input("Humano elige 'x' o 'o'? ")
49-
if resp.lower() == 'x':
49+
resp = input("Elige 'x' o 'o' ? ")
50+
if resp.lower() == "x":
5051
self.simbs = [".", "x", "o"]
5152
else:
5253
self.simbs = [".", "o", "x"]
5354
print()
5455

55-
def tirada(self, p, jugador):
56-
self.tablero[p[0]][p[1]] = jugador
56+
def tirada(self, p, j):
57+
self.tablero[p[0]][p[1]] = j
5758

5859
def juega_humano(self):
5960
print()
60-
resp = input("Turno del humano, elige casilla (ren, col)? ")
61+
resp = input("Turno humano (ren, col) ? ")
6162
p = [int(v) for v in resp.split(",")]
6263
self.tirada(p, self.humano)
6364
print()
@@ -68,89 +69,76 @@ def casillas_libres(self):
6869
if self.tablero[i][j] == 0]
6970

7071
def juega_ia(self):
71-
print()
72-
print("Turno de la IA!")
72+
print("\nTurno de la IA!\n")
7373
casillas = self.casillas_libres()
7474

75-
tablero_aux = [ren[:] for ren in self.tablero]
7675
for c in casillas:
7776
self.tirada(c, self.ia)
7877
if self.gana(self.ia):
7978
return
8079
else:
81-
self.tablero = [ren[:] for ren in tablero_aux]
80+
self.tirada(c, 0)
8281
for c in casillas:
8382
self.tirada(c, self.humano)
8483
if self.gana(self.humano):
8584
self.tirada(c, self.ia)
8685
return
8786
else:
88-
self.tablero = [ren[:] for ren in tablero_aux]
89-
87+
self.tirada(c, 0)
9088
for c in casillas:
9189
if c[0] in [0, 2] and c[1] in [0, 2]:
9290
self.tirada(c, self.ia)
9391
return
94-
9592
if (1, 1) in casillas:
9693
self.tirada((1, 1), self.ia)
9794
return
9895

9996
self.tirada(casillas[0], self.ia)
100-
print()
10197

102-
def gana(self, jugador):
103-
98+
99+
100+
def gana(self, j):
104101
for ren in self.tablero:
105-
if sum(ren) == 3 * jugador:
102+
if sum(ren) == 3 * j:
106103
return True
107104
for col in zip(*self.tablero):
108-
if sum(col) == 3 * jugador:
105+
if sum(col) == 3 * j:
109106
return True
110107
diag1 = [ren[i] for i, ren in enumerate(self.tablero)]
111-
if sum(diag1) == 3 * jugador:
108+
if sum(diag1) == 3 * j:
112109
return True
113110
diag2 = [ren[2-i] for i, ren in enumerate(self.tablero)]
114-
if sum(diag2) == 3 * jugador:
111+
if sum(diag2) == 3 * j:
115112
return True
116113

117-
return False
118-
119114
def imprime_resultado(self):
120115
print()
121116
self.imprime_tablero()
122117
print()
123118
if self.gana(self.humano):
124-
print("El humano gana!")
119+
print("El humano ha ganado!")
125120
elif self.gana(self.ia):
126121
print("La IA gana!")
127122
else:
128123
print("GATOOOOO!")
129-
print()
130-
131-
def es_gato(self):
132-
return False if self.casillas_libres() else True
133124

134125
def run(self):
135126

136127
self.humano_elige()
137128
turno = random.choice([self.humano, self.ia])
138-
while not self.fin_de_juego and not self.es_gato():
129+
while not self.fin_de_juego:
139130
self.imprime_tablero()
140131
if turno == self.humano:
141132
self.juega_humano()
142133
if self.gana(self.humano):
143134
self.fin_de_juego = True
144-
else:
145-
turno = self.ia
135+
turno = self.ia
146136
else:
147137
self.juega_ia()
148138
if self.gana(self.ia):
149139
self.fin_de_juego = True
150-
else:
151-
turno = self.humano
140+
turno = self.humano
152141
self.imprime_resultado()
153142

154-
155143
gato = Gato()
156144
gato.run()

0 commit comments

Comments
 (0)