Foros del Web » Programando para Internet » Python »

Problema al usar Bucle For

Estas en el tema de Problema al usar Bucle For en el foro de Python en Foros del Web. Buenas a todos nuevamente. Mi problema es que he desarrollado un código para saber cuando se hace click en algunas posiciones de mi pantalla de ...
  #1 (permalink)  
Antiguo 28/08/2011, 16:22
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 12 años, 9 meses
Puntos: 2
Problema al usar Bucle For

Buenas a todos nuevamente. Mi problema es que he desarrollado un código para saber cuando se hace click en algunas posiciones de mi pantalla de Pygame.

El código es el siguiente:

Código:
    MDoClick = pygame.mouse.get_pressed()
    
    #Botón izquierdo
    if MDoClick[0]:
		for bucX in range(89, 229):
		    for bucY in range(543, 559):
		        if mouse_pos_x[bucX] and mouse_pos_y[bucY]:
			        print "Click"
Pues entonces lo que busco es que si se hace un click y la posición del mouse es alguna de las indicadas en el bucle, imprima el texto "Click".
Pero al ejecutar me encuentro con el siguiente error (uso el IDE Geany):

Código:
if mouse_pos_x[bucX] and mouse_pos_y[bucY]:
TypeError: 'int' object is not subscriptable
He buscado sobre este error pero no he encontrado la solución. Si alguien podría decirme que estoy haciendo mal en mi código.

Saludos!
  #2 (permalink)  
Antiguo 28/08/2011, 16:50
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema al usar Bucle For

Lo que pasa es que mouse_pos_x y mouse_pos_y son enteros, no puedes acceder a ellos como diccionarios.

Lo creo que quisiste hacer fue:
Código Python:
Ver original
  1. MDoClick = pygame.mouse.get_pressed()
  2.    
  3.     #Botón izquierdo
  4.     if MDoClick[0]:
  5.         for bucX in range(89, 229):
  6.             for bucY in range(543, 559):
  7.                 if mouse_pos_x == bucX and mouse_pos_y == bucY:
  8.                     print "Click"

Pero creo que la mejor solución es usar las funciones que incorpora pygame.
Código Python:
Ver original
  1. import pygame
  2.  
  3. SIZE = (640, 480)
  4. screen = pygame.display.set_mode(SIZE)
  5. pygame.display.set_caption("Titulo de la ventana")
  6.  
  7. #########################################
  8. ### Parte para dibujar un rectangulo ####
  9. #########################################
  10. color = (0, 0, 255)
  11. pos = (50, 50)
  12. dimension = (30, 30)
  13. rect = pygame.rect.Rect(pos, dimension)
  14. pygame.draw.rect(screen, color, rect)
  15. pygame.display.flip()
  16.  
  17. done = True
  18. while done:
  19.     for event in pygame.event.get():
  20.         if event.type == pygame.QUIT:
  21.             done = False
  22.             break
  23.  
  24.     click = pygame.mouse.get_pressed()[0]
  25.     mpos = pygame.mouse.get_pos()
  26.     if click and rect.collidepoint(mpos):
  27.         print "Click"
  #3 (permalink)  
Antiguo 28/08/2011, 19:05
 
Fecha de Ingreso: julio-2011
Mensajes: 53
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Problema al usar Bucle For

Muchísimas gracias nuevamente, me ha servido perfectamente tu código.

Saludos!

Etiquetas: bucle, pygame
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.