Ayuda: Bug en Triqui escrito en Python

Clown

Lanero Reconocido
21 Oct 2003
516
Buenas. Hice un Triqui, Tres en Raya, TicTacToe o como quieran llamarlo. Tengo un problema: hay un bug que no sé de dónde salió... Si se ocupan las tres primeras casillas de la primera fila, el programa se bloquea... De resto funciona perfectamente! Bueno, aquí publico el código fuente, sólo hay que cambiarle la extensión de .txt a .py. Iba a subirlo compilado a .exe (con py2exe) pero no se puede porque pesa más del tamaño permitido par adjuntos. Si alguien me puede a descubrir de donde proviene el bug, gracias!
 

Archivos adjuntos

  • Triqui.txt
    6 KB · Visitas: 920
.exe? para que? no los puedo ejecutar en mi linux.

en cualquier lenguaje si la funcion retorna algo, debes asegurarte de que realmente retorne algo y no someter eso a condiciones...

tu error esta en la funcion alguienGano(), debes quitar ese elif: del final y solo dejar el return false, asi:

Código:
	#Si llega hasta aqui es porque nadie ha ganado, revisar si hay empate
	elif (triqui[0]!=".") and (triqui[1]!=".") and (triqui[2]!="."):
		if (triqui[3]!=".") and (triqui[4]!=".") and (triqui[5]!="."):
			if (triqui[6]!=".") and (triqui[7]!=".") and (triqui[8]!="."):
				return empate
	return False

todos esos if que tienes en el chequeo de empate no tienen else y por tanto no retornan en caso de no cumplirse
 
Bueno, el error lo corregí de esta manera:

en la parte:
Código:
#Si llega hasta aqui es porque nadie ha ganado, revisar si hay empate
	elif (triqui[0]!=".") and (triqui[1]!=".") and (triqui[2]!="."):
		if (triqui[3]!=".") and (triqui[4]!=".") and (triqui[5]!="."):
			if (triqui[6]!=".") and (triqui[7]!=".") and (triqui[8]!="."):
				return empate
	else:                
		return False

Se iba a un loop infinito si las tres primeras casillas estaban llenas pero las siguientes no.

Lo corregí de esta manera:

Código:
#Si llega hasta aqui es porque nadie ha ganado, revisar si hay empate
	elif "." not in triqui:
		return empate
	else:                
		return False

Ahora quiero hacer un Ahorcadito! jajajaja
 
Hola: me gustó mucho el código que utilizaste para hacer el triqui, pero no entiendo cual es la función de este bloque en el programa. Alguien podría ayudarme con eso?
def muestraTablero(tablero):
""" Muestra el tablero"""
print "%s %s %s\n%s %s %s\n%s %s %s" % tuple(tablero)
 

Los últimos temas