Algunas observaciones como comentarios en el código.
Código Python:
Ver original#Filename: bombo.py
import random
class Bombo:
largo=0
lista_bolas=[True,]
def __init__(self, n):
for i in range(n-1):
self.lista_bolas.append(True)
self.largo=n
def total_bolas(self):
j=0
for i in range(self.largo):
if(self.lista_bolas[i]==True):
j+=1
return j
def saca_bola(self):
alea=0
while(self.lista_bolas[alea]==False):#Aqui nunca entra
alea=int(random.random()*largo)
if(self.lista_bolas[alea]==True):
self.lista_bolas[alea].append(False)
return alea
return alea #Siempre regresa 0
def mete_bola(self, n):
self.lista_bolas[n]=True
def quedan_bolas(self):
for i in range(self.largo):
if (self.lista_bolas[i]==True):
return True
return False
#Filename: tablero.py
class Tablero:
sw=0
lista_tablero=[[],[],[]]
filas=0
columnas=0
def __init__(self, f, c, bolas):
self.filas=f-1
self.columnas=c-1
bombo = Bombo(bolas)
for i in range (f-1):
for j in range (c-1):
self.lista_tablero[i].append(bombo.saca_bola())
def pintar_tablero(self):
for i in range (self.filas):
print(self.lista_tablero[i]) #Aqui falta un print
def buscar_valor(self, n):
for i in range (self.filas):
for j in range (self.columnas):
if (self.lista_tablero[i][j] == n):
self.lista_tablero[i][j] = 0
def linea(self):
for i in range (self.filas):
cont = 0
for j in range (self.columnas):
if (self.lista_tablero[i][j] == 0):
cont += 1
if (cont == self.columnas):
print ("Canto linea")
return True
return False
def bingo(self):
for i in range (self.filas):
for j in range (self.columnas):
if (self.lista_tablero[i][j]!=0):
return False
print ("El juego acabó, se ha cantado bingo")
return True
#Filename: bingo.py
#Realmente es el main.
class Bingo:
bola = 0
cont = 1
fin = False
tablero_h = Tablero(3, 5, 90)
tablero_c = Tablero(3, 5, 90)
bombi = Bombo(90)
print ("Bienvenido al juego del bingo")
print ("Este es su tablero:")
tablero_h.pintar_tablero()
print ("Este es el tablero de la CPU:")
tablero_c.pintar_tablero()
while (bombi.quedan_bolas() == True and fin == False ):
print ("Turno ", cont)
cont += 1
print ("Sacando una bola")
bola = bombi.saca_bola() #Aqui siempre regresa 0
print ("Ha salido la bola ", bola)
tablero_h.buscar_valor (bola)
print ("Su tablero ha quedado asi:")
tablero_h.pintar_tablero()
tablero_c.buscar_valor (bola)
print ("El tablero de la CPU ha quedado asi:")
tablero_c.pintar_tablero()
if (tablero_c.bingo() == True or tablero_h.bingo() == True): #Truena al primer intento
fin = True #Por si fuera poco no dice quien gana
Bingo()
Definitivamente tiene un estilo muuuy javero, es mas que nada problema de lógica no de sintaxis.
Con los imports ten cuidado esto no es como en java que no sabes que es lo que tienes en tu namespace, aquí todo esta bien controlado.
Por ejemplo para importar una clase de un archivo haces un:
Recuerda que modulo = archivo y paquete = carpeta.
Si mi modulo se llama tablero.py y mi clase se llama Tablero
Entonces hago un