Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/08/2015, 13:33
Avatar de 12trunks12
12trunks12
 
Fecha de Ingreso: noviembre-2014
Mensajes: 41
Antigüedad: 10 años
Puntos: 1
cambiar valores de un módulo y problema con los diccionarios

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
  1. #====================================
  2. #     ----------PERFIL---------
  3. #====================================
  4. # Estado actual de cada jugador (el J1 y el J2), almacenando datos como el dinero o el coche actual
  5.  
  6. #---Jugador 1
  7. dinero_j1 = 0
  8. coche_j1 = 1
  9.  
  10. #---Jugador 2
  11. dinero_j2 = 0
  12. 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
  1. lista_botones_asig_coche = {}  # Lista con todos los botones de asignar el coche
  2. lista_pos_botones_asig_coche = [(305, 125), (305, 188), (605, 125), (605, 188), (905, 125), (905, 188), (1205, 125), (1205, 188),
  3.         (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
  4.  
  5. for i in range(16):  # Creamos los 16 botones (1 por jugador para cada coche)
  6.     boton = Boton("boton_asignar_coche", "boton_asignar_coche_pulsado")
  7.     lista_botones_asig_coche[str(i)] = boton
  8.  
  9. #-----Dibujamos los botones en el surface
  10. i=0
  11. for clave in lista_botones_asig_coche:  
  12.     surface.blit(lista_botones_asig_coche[clave].image, lista_pos_botones_asig_coche[i])
  13.     i+=1

Os dejo también el archivo del boton.py

Código Python:
Ver original
  1. #====================================
  2. #     ---------IMPORTS---------
  3. #====================================
  4. import pygame, sys
  5. from pygame.locals import *
  6.  
  7. #====================================
  8. #     ---------BOTON---------
  9. #====================================
  10. class Boton():
  11.     def __init__(self, imagen_normal, img):
  12.         self.image_normal = pygame.image.load("imagenes/"+imagen_normal+".png")  # Imagen cuando el botón no está pulsado
  13.         self.image_pulsada = pygame.image.load("imagenes/"+imagen_normal+"_pulsado.png")  # Imagen cuando el botón está pulsado
  14.         self.image = self.image_normal  # Imagen actual (pulsado o no pulsado)
  15.  
  16.     def pulsar(self):
  17.         """ Cambiamos la imagen actual en caso de que se pulse el botón """
  18.  
  19.         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.