Necesito ayuda no puedo hacer funcionar mi codigo

la consingna es hacer un juego que muestre en pantalla imagenes de famosos y el usuario tiene que decir cual es su profesion mediante botones con las profesiones (Actor,Cantante,Escritor,Politico). Se deve mostrar el tiempo de partida, candidad de vueltas y puntaje.

Este es el codigo:

#sona de import
import pilasengine
pilas = pilasengine.iniciar()
#sona de def
#definir menu
def iniciar_juego():
    global menu
    menu.eliminar()
    global menu
def salir_del_juego():
    pilas.terminar()
def reglas():
    global menu
    menu.eliminar()
    global menu
    menu.eliminar() 
    texto=pilas.actores.Texto("Bienvenido\nEl objetivo de este juego es:\nAdivinar cual es la ocupacion de las personas que\naparecen en pantalla.\nLas ocupaciones son:Actor,Escritor,Cantante y Politico\nPara seleccionar una ocupacion\nsimplemente debes posar el mouse\nsobre el boton que tiene el nombre de la\nocupacion y hacer clik izquierdo.\n Buena suerte!!!")  
    texto.color=pilas.colores.verde                                                 
    texto.y = 0
    texto.x = 0
    boton = pilas.interfaz.Boton("Empezar juego")
    boton.y = -200
    boton.x = -200
    boton.conectar(iniciar_juego)
#definir botones
def boton_actores():
    boton=pilas.interfaz.Boton("Actor")
    boton.y=-200
    boton.x=-100
def boton_cantantes():
    boton=pilas.interfaz.Boton("Cantante")
    boton.y=-200
    boton.x=130
def boton_escritores():
    boton=pilas.interfaz.Boton("Escritor")
    boton.y=-200
    boton.x=50
def boton_politicos():
    boton=pilas.interfaz.Boton("Politico")
    boton.y=-200
    boton.x=-30
#menu
fondo=pilas.fondos.Espacio()
menu = pilas.actores.Menu(
    [
        ('Iniciar Juego',iniciar_juego), ('Salir', salir_del_juego),("Reglas",reglas)
            ]) 
menu.color_normal = pilas.colores.violeta
menu.color_resaltado = pilas.colores.cyan
sound_track=pilas.musica.cargar("track1.wav")
sound_track.reproducir()
tiempo=pilas.actores.Temporizador()
tiempo.ajustar(60,0)
#comienso del juego
puntaje = pilas.actores.puntucion(-280, 200, color=pilas.colores.rojo)
boton=boton_escritores()
boton=boton_actores()
boton=boton_cantantes()
boton= boton_politicos()
#lista de imagenes
imagenes=[["C:\Users\Jose\Desktop\imagenes\actores","a1",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a2",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a3",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a3",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a4",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a5",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a6",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a7",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a8",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a9",boton_actores],["C:\Users\Jose\Desktop\imagenes\actores","a10",boton_actores],["C:\Users\Jose\Desktop\imagenes\cantantes","c1",boton_cantantes]["C:\Users\Jose\Desktop\imagenes\cantantes","c2",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c3",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c4",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c5",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c6",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c7",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c8",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c9",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\cantantes","c10",boton_cantantes],["C:\Users\Jose\Desktop\imagenes\escritores","e1",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e2",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e3",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e4",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e5",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e6",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e7",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e8",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e9",boton_escritores],["C:\Users\Jose\Desktop\imagenes\escritores","e10",boton_escritores],["C:\Users\Jose\Desktop\imagenes\politicos","p1",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p2",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p3",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p4",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p5",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p6",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p7",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p8",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p9",boton_politicos],["C:\Users\Jose\Desktop\imagenes\politicos","p10",boton_politicos]]
azar_imagen = pilas.azar(0, (len(imagenes)-1))

pilas.ejecutar()

Este el error que no se como solucionar:
× # TypeError: list indices must be integers, not tuple
× #
× # Traza del error (las llamadas mas recientes al final):
× # Archivo “C:\PILAS-~1\pilasengine\interprete\editor.py”,linea 646, en ejecutar
× # exec(contenido, self.interpreterLocals)
× # Archivo actual,linea 68, en
× # TypeError: list indices must be integers, not tuple

Buenas, @1155296810_Jose!

Voy a ver si tengo un rato para revisar tu código, que es algo complejo para ver el problema a simple vista. Pero para eso deberías indexarlo correctamente. Por favor revisa este link para aprender a indexar correctamente en el foro, gracias!

EDITO para añadir:

Uffffff!!! He estado revisando tu código y realmente no sabia por donde entrar y salir. Me temo que tu y yo tenemos procesos de “orden” distintos :smile:

Hay varias cosas que no he entendido de tu código (no digo que esté mal, sólo digo que no las entiendo :cold_sweat:) Puede ser que tú sigas una lógica distinta o que tengas conocimientos más avanzados que yo… o quizás tan sólo te has “liado” provando cosas :slight_smile:

Por ejemplo:

boton=boton_escritores()

asignas una def() a una variable?. Esto es programación un tanto avanzada, y hay que ir con cuidado al hacerlo. Yo prefiero métodos más sencillos, un poco por pereza y un poco por hacer el código más entendible :smile:

Tampoco entiendo esta “liada” innecesaria:[quote=“1155296810_Jose, post:1, topic:1552”]
[“C:\Users\Jose\Desktop\imagenes\politicos”,“p10”,boton_politicos]]
[/quote]

Para qué sirve ese “p10” y esa variable “boton_politicos”? El código que te hice de ejemplo funciona mucho mejor que eso y es más sencillo.

Supongo que más tarde querrías conectar los botones a una def de comprobación y usar esos valores como control, pero no he visto que hayas programado ninguna def que haga eso :hushed:

Y no digo que no puedas usar variables en un array, pero… CUIDADO, tienen que estar correctamente definidas previamente!!! De nuevo me encuentro en el dilema de no saber si tienes un gran conocimiento de programación en Python y yo no estoy a tu nivel, o si has probado por probar…

Por lo demás, he encontrado bastantes cosas a rectificar… tantas que he preferido rehacer el código desde 0 y se hace demasiado largo de explicar… :dizzy_face:

Por favor edita tu post e indexa correctamente tu código para que quede correctamente expuesto y yo incluiré mi “versión” para que las compares y veas qué he cambiado.

Un saludo! :wink:

# -*- coding: utf-8
import pilasengine

pilas = pilasengine.iniciar()

### CONSTANTES DURANTE EL JUEGO ###
mifondo = pilas.fondos.Espacio()

sound_track=pilas.musica.cargar("untrue.ogg")
sound_track.reproducir()

# CONTADOR DE CONTROL DE LAS RONDAS JUGADAS #
contador_rondas = 1

################## DEF JUEGO ####################

def juego():
	#5 imagenes bajadas de internet y puestas en la carpeta "fotos"

	#creamos un array bidimensional con las fotos y las ocupaciones

	imagenes=[["fotos/foto1.jpeg","cantante"],
				["fotos/foto2.jpeg","escritor"],
				["fotos/foto3.jpeg","actor"],
				["fotos/foto4.jpeg","politico"],
				["fotos/foto5.jpeg","politico"]
			]
	#creamos un actor sin imagen y sin ocupación:		
	miactor = pilas.actores.Actor()
	miactor.ocupacion = "ninguna"	
	
	# creamos el puntaje
	puntaje = pilas.actores.Puntaje(-280, 200, color=pilas.colores.rojo)###puntucion ?!?!
	
	print("Ronda numero: 1")
	
	# Qué hacer cuando acaba el tiempo???#
	def fin_tiempo():
		pilas.avisar(u"Se te ha acabado el tiempo")
	
	#creamos y iniciamos el temporizador:
	tiempo=pilas.actores.Temporizador()
	tiempo.texto.x = 200
	tiempo.texto.y = 210
	#tiempo.ajustar(60,0)
	tiempo.ajustar(60, fin_tiempo)
	tiempo.reiniciar()

	def nueva_imagen():
		#En vez de eliminar y crear actores,
		#simplemente le cambiamos los atributos
		#de imagen y ocupacion
		aleatorio_imagen = pilas.azar(0, (len(imagenes)-1))		
		
		miactor.imagen = imagenes[aleatorio_imagen][0]
		miactor.ocupacion = imagenes[aleatorio_imagen][1]
		
		#comentar esta linea cuando acabe el productivo: 
		pilas.avisar(u"Este famoso es... " + miactor.ocupacion)
		#solo sirve para controlar mientras se programa
	
	#Tan pronto se entra al juego se activa el darle una imagen al actor:
	nueva_imagen()

	def comprobar_rondas():
		#Lleva la cuenta de las rondas jugadas
		global contador_rondas
		#programado para 10 rondas, se puede cambiar aquí:
		if contador_rondas < 10:									
			contador_rondas += 1
			#se puede cambiar el print por pilas.avisar
			print("Ronda numero: "+str(contador_rondas))		
			#Si la respuesta es correcta suma 5 puntos...
			puntaje.aumentar(5)
			#y crea una nueva pregunta:
			nueva_imagen()
		else:
			#Si ya se jugaron todas las rondas finalizamos el juego:
			puntaje.aumentar(5)
						
			actores = pilas.actores.listar_actores()

			# Elimina todos los actores excepto el fondo y el puntaje
			for actor in actores:
				if actor not in [puntaje,mifondo]:
					actor.eliminar()
			
			#pilas.avisar(u"Puntuación final: "+ str(puntaje.valor))
			aviso = pilas.actores.Texto(u"Puntuación final: "+ str(puntaje.valor), magnitud=50)
			aviso.color = pilas.colores.blanco
			

	def comprobar_pol():
		if miactor.ocupacion == "politico":
			#si es correcto... se comprueban las rondas
			comprobar_rondas()			
		else:
			#si es incorrecto se resta 1 punto.
			#se puede cambiar añadiendo el valor,
			#por ejemplo para restar 3 puntos:
			#puntaje.reducir(3)
			puntaje.reducir()
			
	def comprobar_can():
		if miactor.ocupacion == "cantante":
			comprobar_rondas()
		else:
			puntaje.reducir()

	def comprobar_act():
		if miactor.ocupacion == "actor":
			comprobar_rondas()
		else:
			puntaje.reducir()
			
	def comprobar_esc():
		if miactor.ocupacion == "escritor":
			comprobar_rondas()
		else:
			puntaje.reducir()

	boton_pol = pilas.interfaz.Boton(u"Político",x=-200,y=-180)
	boton_pol.conectar(comprobar_pol)

	boton_can = pilas.interfaz.Boton(u"Cantante",x=-100,y=-180)
	boton_can.conectar(comprobar_can)

	boton_act = pilas.interfaz.Boton(u"Actor",x=100,y=-180)
	boton_act.conectar(comprobar_act)

	boton_esc = pilas.interfaz.Boton(u"Escritor",x=200,y=-180)
	boton_esc.conectar(comprobar_esc)
	
############# END DEF JUEGO ###############


############ DEF MENU ####################
def menu():
	
	def iniciar_juego():
		actores = pilas.actores.listar_actores()
		# Elimina todos los actores excepto el fondo
		for actor in actores:
			if actor not in [mifondo]:
				actor.eliminar()
		# y llamamos a la def que lleva todo el peso del juego
		juego()
			
	def salir_del_juego():
		sound_track.detener()
		pilas.terminar()
		
	def reglas():
		menu.eliminar()
		texto=pilas.actores.Texto("Bienvenido\nEl objetivo de este juego es:\nAdivinar cual es la ocupacion de las personas que\naparecen en pantalla.\nLas ocupaciones son:Actor,Escritor,Cantante y Politico\nPara seleccionar una ocupacion\nsimplemente debes posar el mouse\nsobre el boton que tiene el nombre de la\nocupacion y hacer clik izquierdo.\n Buena suerte!!!")
		texto.color=pilas.colores.verde 
		texto.y = 0
		texto.x = 0
		boton = pilas.interfaz.Boton("Empezar juego")
		boton.y = -200
		boton.x = -200
		boton.conectar(iniciar_juego)
		
	menu = pilas.actores.Menu(
		[
			('Iniciar Juego',iniciar_juego), ('Salir', salir_del_juego),("Reglas",reglas)
		]) 
	menu.color_normal = pilas.colores.violeta
	menu.color_resaltado = pilas.colores.cyan
	
########### END DEF MENU ############
		
		
##########$$$$$$$$$#################
#Iniciamos el juego entrando al menu:	
menu()
##########$$$$$$$$$#################

pilas.ejecutar()