Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/09/2010, 09:51
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Novato. Fallo usando distintas clases (Python 3)

Algunas observaciones como comentarios en el código.

Código Python:
Ver original
  1. #Filename: bombo.py
  2. import random
  3.  
  4. class Bombo:
  5.     largo=0
  6.     lista_bolas=[True,]
  7.  
  8.  
  9.     def __init__(self, n):
  10.         for i in range(n-1):
  11.             self.lista_bolas.append(True)
  12.         self.largo=n
  13.  
  14.  
  15.     def total_bolas(self):
  16.         j=0
  17.         for i in range(self.largo):
  18.             if(self.lista_bolas[i]==True):
  19.                 j+=1
  20.         return j
  21.  
  22.  
  23.     def saca_bola(self):
  24.         alea=0
  25.         while(self.lista_bolas[alea]==False):#Aqui nunca entra
  26.             alea=int(random.random()*largo)
  27.             if(self.lista_bolas[alea]==True):
  28.                 self.lista_bolas[alea].append(False)
  29.                 return alea
  30.         return alea #Siempre regresa 0
  31.  
  32.  
  33.     def mete_bola(self, n):
  34.         self.lista_bolas[n]=True
  35.  
  36.  
  37.     def quedan_bolas(self):
  38.         for i in range(self.largo):
  39.             if (self.lista_bolas[i]==True):
  40.                 return True
  41.         return False
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. #Filename: tablero.py
  52.  
  53. class Tablero:
  54.     sw=0
  55.     lista_tablero=[[],[],[]]
  56.     filas=0
  57.     columnas=0
  58.  
  59.  
  60.     def __init__(self, f, c, bolas):
  61.         self.filas=f-1
  62.         self.columnas=c-1
  63.         bombo = Bombo(bolas)
  64.         for i in range (f-1):
  65.             for j in range (c-1):
  66.                 self.lista_tablero[i].append(bombo.saca_bola())
  67.  
  68.                
  69.     def pintar_tablero(self):
  70.         for i in range (self.filas):
  71.             print(self.lista_tablero[i]) #Aqui falta un print
  72.  
  73.  
  74.     def buscar_valor(self, n):
  75.         for i in range (self.filas):
  76.             for j in range (self.columnas):
  77.                 if (self.lista_tablero[i][j] == n):
  78.                     self.lista_tablero[i][j] = 0
  79.  
  80.  
  81.     def linea(self):
  82.         for i in range (self.filas):
  83.             cont = 0
  84.             for j in range (self.columnas):
  85.                 if (self.lista_tablero[i][j] == 0):
  86.                     cont += 1
  87.                     if (cont == self.columnas):
  88.                         print ("Canto linea")
  89.                         return True
  90.         return False
  91.  
  92.  
  93.     def bingo(self):
  94.         for i in range (self.filas):
  95.             for j in range (self.columnas):
  96.                 if (self.lista_tablero[i][j]!=0):
  97.                     return False
  98.         print ("El juego acabó, se ha cantado bingo")
  99.         return True
  100.  
  101.  
  102.  
  103. #Filename: bingo.py
  104. #Realmente es el main.
  105. class Bingo:
  106.     bola = 0
  107.     cont = 1
  108.     fin = False
  109.     tablero_h = Tablero(3, 5, 90)
  110.     tablero_c = Tablero(3, 5, 90)
  111.     bombi = Bombo(90)
  112.     print ("Bienvenido al juego del bingo")
  113.     print ("Este es su tablero:")
  114.     tablero_h.pintar_tablero()
  115.     print ("Este es el tablero de la CPU:")
  116.     tablero_c.pintar_tablero()
  117.     while (bombi.quedan_bolas() == True and fin == False ):
  118.         print ("Turno ", cont)
  119.         cont += 1
  120.         print ("Sacando una bola")
  121.         bola = bombi.saca_bola() #Aqui siempre regresa 0
  122.         print ("Ha salido la bola ", bola)
  123.         tablero_h.buscar_valor (bola)
  124.         print ("Su tablero ha quedado asi:")
  125.         tablero_h.pintar_tablero()
  126.         tablero_c.buscar_valor (bola)
  127.         print ("El tablero de la CPU ha quedado asi:")
  128.         tablero_c.pintar_tablero()
  129.         if (tablero_c.bingo() == True or tablero_h.bingo() == True): #Truena al primer intento
  130.                 fin = True #Por si fuera poco no dice quien gana
  131.  
  132. 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:
Código Python:
Ver original
  1. from mi_modulo import mi_clase
Recuerda que modulo = archivo y paquete = carpeta.

Si mi modulo se llama tablero.py y mi clase se llama Tablero
Entonces hago un
Código Python:
Ver original
  1. from tablero import Tablero