Ayuda con variable
Publicado por Juan Rios (2 intervenciones) el 05/06/2007 08:01:08
Hola a todos... la verdad no sé mucho de como programar en Python, pero tuve que aprender para hacer mi tesis.
Sucede que estamos desarrollando el juego de la brisca, pero tengo un error que no he podido solucionar... y que me tiene un poco angustiado...
Les dejo el código para ver si alguien se anima a ayudarme:
class Main_PyBrisca(wx.Frame):
def __init__(self, *args, **kwds):
...
# end wxGlade
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Se_Puede = 0
self.Mano_en_Juego = 0
self.texto1, self.texto2, self.texto3, self.texto4, self.texto5 = "", "", "", "", ""
self.texto6, self.texto7, self.texto8, self.texto9, self.texto10 = "", "", "", "", ""
self.timer = wx.Timer(self, -1)
self.timer.SetOwner(self)
def __set_properties(self):
# begin wxGlade: Main_PyBrisca.__set_properties
# end wxGlade
def OnTimer(self,event):
if self.Se_Puede == 1:
pass
else:
c_carta = self.Cpu.Responder(1,self.Cartas_Jugadas,j_carta,self.triunfo)
txt = c_carta.numero + ' de ' + c_carta.palo + '.JPG'
self.Respuesta_Carta.SetBitmap(wx.Bitmap("./cartas/" + txt, wx.BITMAP_TYPE_JPEG))
self.Cartas_Jugadas.AnadirCartaFin(c_carta)
self.Jugadas_Cpu.AnadirCartaFin(c_carta)
print c_carta.numero + ' de ' + c_carta.palo
self.Se_Puede = 1
def OnLeftClick(self, event):
Objeto = event.GetEventObject()
self.Carta_a_Jugar = Objeto.GetId()
if self.Carta_a_Jugar == 101 and Objeto.GetBitmap() != wx.NullBitmap and self.Se_Puede == 1:
self.Salida_Carta.SetBitmap(self.Jug_Carta_1.GetBitmap())
if self.Mano_en_Juego == 1:
j_carta = self.Jug.VerCarta_(1,self.texto1)
self.Cartas_Jugadas.AnadirCartaFin(j_carta)
self.Jugadas_Jug.AnadirCartaFin(j_carta)
elif self.Mano_en_Juego == 2:
j_carta = self.Jug.VerCarta_(2,self.texto1)
self.Cartas_Jugadas.AnadirCartaFin(j_carta)
self.Jugadas_Jug.AnadirCartaFin(j_carta)
self.Jug_Carta_1.SetBitmap(wx.NullBitmap)
self.Se_Puede = 0
def __do_layout(self):
# begin wxGlade: Main_PyBrisca.__do_layout
# end wxGlade
def ComenzarJuego(self):
"Definimos los Jugadores de Juego, Humano y CPU"
self.Jug = Jugador1()
self.Cpu = JugadorPC()
self.Cartas_Jugadas = TMazo()
self.Jugadas_Jug = TMazo()
self.Jugadas_Cpu = TMazo()
self.Rec_Jug = TMazo()
self.Rec_Cpu = TMazo()
Ptos_Jug = 0
Ptos_Cpu = 0
self.Jug.Repartir('1') #Que reparta al Humano Primero
self.Cpu.Repartir('1')
self.turno = 'Jug'
self.carta_triunfo = self.Cpu.VerCarta(2,-1)
self.triunfo = self.carta_triunfo.palo
self.Se_Puede = 1
self.timer.Start(3000)
# end of class Main_PyBrisca
class IPLAPyBrisca(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frm_Main = Main_PyBrisca(None, -1, "")
self.SetTopWindow(frm_Main)
frm_Main.Show()
return 1
# end of class IPLAPyBrisca
if __name__ == "__main__":
Baraja = TBarEspanola()
Baraja.CrearBaraja()
Baraja.BarajarCartas()
IPLA_PyBrisca = IPLAPyBrisca()
IPLA_PyBrisca.MainLoop()
Cada vez que el Evento del Timer "OnTimer" se ejecuta, me da el siguiente error:
Traceback (most recent call last):
File "C:\Documents and Settings\MetalTux\Mis documentos\Ipla_PyBrisca\Ipla_Py_Brisca_2.py", line 818, in OnTimer
c_carta = self.Cpu.Responder(1,self.Cartas_Jugadas,j_carta,self.triunfo)
NameError: global name 'j_carta' is not defined
Qué puedo hacer??? como lo puedo arreglar???
Por favor necesito de vuestra ayuda, pues debo tener el programa listo para este Miércoles...
Saludos y gracias de antemano...
Sucede que estamos desarrollando el juego de la brisca, pero tengo un error que no he podido solucionar... y que me tiene un poco angustiado...
Les dejo el código para ver si alguien se anima a ayudarme:
class Main_PyBrisca(wx.Frame):
def __init__(self, *args, **kwds):
...
# end wxGlade
self.Bind(wx.EVT_TIMER, self.OnTimer)
self.Se_Puede = 0
self.Mano_en_Juego = 0
self.texto1, self.texto2, self.texto3, self.texto4, self.texto5 = "", "", "", "", ""
self.texto6, self.texto7, self.texto8, self.texto9, self.texto10 = "", "", "", "", ""
self.timer = wx.Timer(self, -1)
self.timer.SetOwner(self)
def __set_properties(self):
# begin wxGlade: Main_PyBrisca.__set_properties
# end wxGlade
def OnTimer(self,event):
if self.Se_Puede == 1:
pass
else:
c_carta = self.Cpu.Responder(1,self.Cartas_Jugadas,j_carta,self.triunfo)
txt = c_carta.numero + ' de ' + c_carta.palo + '.JPG'
self.Respuesta_Carta.SetBitmap(wx.Bitmap("./cartas/" + txt, wx.BITMAP_TYPE_JPEG))
self.Cartas_Jugadas.AnadirCartaFin(c_carta)
self.Jugadas_Cpu.AnadirCartaFin(c_carta)
print c_carta.numero + ' de ' + c_carta.palo
self.Se_Puede = 1
def OnLeftClick(self, event):
Objeto = event.GetEventObject()
self.Carta_a_Jugar = Objeto.GetId()
if self.Carta_a_Jugar == 101 and Objeto.GetBitmap() != wx.NullBitmap and self.Se_Puede == 1:
self.Salida_Carta.SetBitmap(self.Jug_Carta_1.GetBitmap())
if self.Mano_en_Juego == 1:
j_carta = self.Jug.VerCarta_(1,self.texto1)
self.Cartas_Jugadas.AnadirCartaFin(j_carta)
self.Jugadas_Jug.AnadirCartaFin(j_carta)
elif self.Mano_en_Juego == 2:
j_carta = self.Jug.VerCarta_(2,self.texto1)
self.Cartas_Jugadas.AnadirCartaFin(j_carta)
self.Jugadas_Jug.AnadirCartaFin(j_carta)
self.Jug_Carta_1.SetBitmap(wx.NullBitmap)
self.Se_Puede = 0
def __do_layout(self):
# begin wxGlade: Main_PyBrisca.__do_layout
# end wxGlade
def ComenzarJuego(self):
"Definimos los Jugadores de Juego, Humano y CPU"
self.Jug = Jugador1()
self.Cpu = JugadorPC()
self.Cartas_Jugadas = TMazo()
self.Jugadas_Jug = TMazo()
self.Jugadas_Cpu = TMazo()
self.Rec_Jug = TMazo()
self.Rec_Cpu = TMazo()
Ptos_Jug = 0
Ptos_Cpu = 0
self.Jug.Repartir('1') #Que reparta al Humano Primero
self.Cpu.Repartir('1')
self.turno = 'Jug'
self.carta_triunfo = self.Cpu.VerCarta(2,-1)
self.triunfo = self.carta_triunfo.palo
self.Se_Puede = 1
self.timer.Start(3000)
# end of class Main_PyBrisca
class IPLAPyBrisca(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
frm_Main = Main_PyBrisca(None, -1, "")
self.SetTopWindow(frm_Main)
frm_Main.Show()
return 1
# end of class IPLAPyBrisca
if __name__ == "__main__":
Baraja = TBarEspanola()
Baraja.CrearBaraja()
Baraja.BarajarCartas()
IPLA_PyBrisca = IPLAPyBrisca()
IPLA_PyBrisca.MainLoop()
Cada vez que el Evento del Timer "OnTimer" se ejecuta, me da el siguiente error:
Traceback (most recent call last):
File "C:\Documents and Settings\MetalTux\Mis documentos\Ipla_PyBrisca\Ipla_Py_Brisca_2.py", line 818, in OnTimer
c_carta = self.Cpu.Responder(1,self.Cartas_Jugadas,j_carta,self.triunfo)
NameError: global name 'j_carta' is not defined
Qué puedo hacer??? como lo puedo arreglar???
Por favor necesito de vuestra ayuda, pues debo tener el programa listo para este Miércoles...
Saludos y gracias de antemano...
Valora esta pregunta


0