Bueno, aprovecho un tema para poner 2 dudas, pues la primera es muy sencilla:
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 originallista_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.