1. Cambiar valores de las variables de un módulo al ser importadas: yo tengo un programa con un módulo llamado perfil.py, que contiene datos de los jugadores locales (el dinero de cada uno y el coche asignado para cada uno):
Código Python:
Ver original
#==================================== # ----------PERFIL--------- #==================================== # Estado actual de cada jugador (el J1 y el J2), almacenando datos como el dinero o el coche actual #---Jugador 1 dinero_j1 = 0 coche_j1 = 1 #---Jugador 2 dinero_j2 = 0 coche_j2 = 2
Después utilizo otro módulo en el que necesito esos datos, es tienda.py. Allí lo que hago es según el dinero que tenga lo muestro, y según el coche que tenga asignado pues lo muestro asignado o no. No pongo el código porque es un poco largo y contiene más cosas que no vienen al tema.
La cuestión es, desde tienda.py puedo cambiar los valores de dinero_j1 o coche_j1 y que, una vez cerrado todo el programa, los valores de mantengan cambiados?
2. Problema con los diccionarios: bueno en verdad no estoy seguro de si es problema de los diccionarios, pues aun no los usé mucho y no se si puede ser problema de eso o de otra cosa.
La cuestión es que yo tengo un diccionario con todos los botones para asignar el coche al jugador, tengo una lista con las posiciones de cada botón y después recorro todo el diccionario para ir dibujando los botones en la pantalla. Os dejo los trozos en los que intervienen dichos diccionarios y listas:
Código Python:
Ver original
lista_botones_asig_coche = {} # Lista con todos los botones de asignar el coche lista_pos_botones_asig_coche = [(305, 125), (305, 188), (605, 125), (605, 188), (905, 125), (905, 188), (1205, 125), (1205, 188), (305, 435), (305, 498), (605, 435), (605, 498), (905, 435), (905, 498), (1205, 435), (1205, 498)] # Posición de cada botón de asignar coche for i in range(16): # Creamos los 16 botones (1 por jugador para cada coche) boton = Boton("boton_asignar_coche", "boton_asignar_coche_pulsado") lista_botones_asig_coche[str(i)] = boton #-----Dibujamos los botones en el surface i=0 for clave in lista_botones_asig_coche: surface.blit(lista_botones_asig_coche[clave].image, lista_pos_botones_asig_coche[i]) i+=1
Os dejo también el archivo del boton.py
Código Python:
Ver original
#==================================== # ---------IMPORTS--------- #==================================== import pygame, sys from pygame.locals import * #==================================== # ---------BOTON--------- #==================================== class Boton(): def __init__(self, imagen_normal, img): self.image_normal = pygame.image.load("imagenes/"+imagen_normal+".png") # Imagen cuando el botón no está pulsado self.image_pulsada = pygame.image.load("imagenes/"+imagen_normal+"_pulsado.png") # Imagen cuando el botón está pulsado self.image = self.image_normal # Imagen actual (pulsado o no pulsado) def pulsar(self): """ Cambiamos la imagen actual en caso de que se pulse el botón """ self.image = self.image_pulsada
Y el problema os lo dejo gráficamente:
Os dejo al lado de cada botón el número que le corresponde en la lista
Y bueno los botones que deberían estar marcados son el 2 y el 5, pues perfil.coche_j1 = 1 y perfil.coche_j2 = 2. El número marca el coche, no el botón, el botón lo calculo después con otras operaciones.
Cualquier duda o dato que falte pedidlo que lo agrego sin ningún problema.