Recurso para consultar
Ejercicio – Primera parte
"""
Juego de Ta-Te-Ti con clases y objetos
"""
import teclado as TEC
class Computadora:
pass
class Humano:
def __init__(self,nombre,ficha):
self.nombre = nombre
self.ficha = ficha
def __str__(self):
return self.nombre + " ==> "+str(self.ficha)
def jugar(self,tablero):
salir = False
while not salir:
fila = TEC.leerInt("FILA: ",0,tablero.cFilas)
columna = TEC.leerInt("COLUMNA: ",0,tablero.cColumnas)
if tablero.ver(fila,columna) == Ficha(' '):
salir = True
return (fila,columna)
class Tateti:
def __init__(self,nombJug1,nombJug2):
self.jugadorUno = Humano(nombJug1,Ficha('X'))
self.jugadorDos = Humano(nombJug2,Ficha('O'))
self.tablero = Tablero()
def elOtro(self,jug):
if jug == self.jugadorUno:
return self.jugadorDos
return self.jugadorUno
def jugarTateti(self):
jugX = self.jugadorUno
terminar = False
print(str(self.tablero))
while not terminar:
print("JUEGA: ",str(jugX))
coor = jugX.jugar(self.tablero)
print("Coordenada: ",coor)
self.tablero.poner(coor[0],coor[1],jugX.ficha)
print(str(self.tablero))
jugX = elOtro(jugX)
class Ficha:
def __init__(self,caracter):
self.caracter = caracter
def __str__(self):
return '[' + self.caracter + ']'
class Tablero:
def __init__(self,cFilas=3,cColumnas=3):
self.cFilas = cFilas
self.cColumnas = cColumnas
self.m = self.crear()
def filaIgual(self,fila,ficha):
for c in range(self.cColumnas):
if self.m[fila] != ficha:
return False
return True
def columnaIgual(self,columna,ficha):
for f in range(self.cFilas):
if self.m[f][columna] != ficha:
return False
return True
def diagonal(self,ficha):
for x in range(self.cFilas):
if self.m[x][x] != ficha:
return False
return True
def antiDiagonal(self,ficha):
f = 0
c = self.cColumnas-1
while f < self.cFilas:
if self.m[f] != ficha:
return False
f += 1
c -= 1
return True
def existe(self,ficha):
return ficha in self.m
def crear(self):
self.m = []
for f in range(self.cFilas):
fil = []
for c in range(self.cColumnas):
fil.append(Ficha(' '))
self.m.append(fil)
return self.m
def poner(self,fila,columna,ficha):
self.m[fila][columna] = ficha
def ver(self,fila,columna):
print("FILA: ",fila," COLUMNA: ",columna,str(self.m[fila][columna]))
return self.m[fila][columna]
def __str__(self):
cadena = ""
for f in range(self.cFilas):
for c in range(self.cColumnas):
cadena += str(self.m[f])
cadena += '\n'
return cadena
def hayLugar(self):
return self.existe(Ficha(' '))
def main():
"""
tablero = Tablero()
tablero.poner(0,0, Ficha('X'))
tablero.poner(1,0, Ficha('X'))
tablero.poner(2,0, Ficha('X'))
print(str(tablero))
"""
tateti = Tateti("Juan","Pinchame")
tateti.jugarTateti()
main()
Resultado hasta el momento
>>> %Run tateti.py
[ ][ ][ ]
[ ][ ][ ]
[ ][ ][ ]
JUEGA: Juan ==> [X]
FILA: 1
COLUMNA: 0
Nota: Usamos el Modulo TECLADO creado en clases anteriores, lo importamos
#LEER UN ENTERO CON CONTROL DE ERROR DE TIPO DE DATO
def leerInt(cartel,desde=-99999999,hasta=99999999):
salir = False
numero = 0
while not salir:
try:
numero = int(input(cartel))
if numero < desde or numero > hasta:
print("ERROR ==> numero fuera de rango\n")
else:
salir = True
except:
print("ERROR ==> Ingrese un numero entero\n")
return numero
#LEER UN FLOAT CON CONTROL DE ERROR DE TIPO DE DATO
def leerfloat(cartel):
salir = False
numero = 0.0
while not salir:
try:
numero = float(input(cartel))
salir = True
except:
pass #SIN MOSTRAR CARTEL DE ERROR
#print("\nERROR ==> Ingrese un numero decimal\n")
return numero