2017-10-08 19 views
1

Je veux dessiner un cercle à la position de la souris lorsque je clique sur la souris mais cela ne fonctionne pas. C'est dans la boucle while comme on m'a dit de le faire par internet mais ça ne marche toujours pas. Puis-je avoir une aide s'il vous plait. Merci.Le cercle n'est pas dessiné au clic de la souris (pygame)

def run_game(): 
    screen_height = 670 
    screen_width = 1270 
    pygame.init() 
    screen = pygame.display.set_mode((screen_width, screen_height)) 
    screen.fill((10,10,30)) 
    running = True 

    pygame.display.flip() 
    while running: 
     planet_color = (255,0,0) 
     planet_radius = 100 
     circ = pygame.mouse.get_pos() 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       running = False 
      elif event.type == pygame.MOUSEBUTTONDOWN: 
       pygame.draw.circle(screen, planet_color, (circa), planet_radius, 0) 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_q: 
        running = False 


run_game() 

Répondre

1

Vous avez fait une faute de frappe lors du codage

pygame.draw.circle(screen, planet_color, (circa), planet_radius, 0) 

Je pense que vous vouliez dire taper:

pygame.draw.circle(screen, planet_color, (circ), planet_radius, 0) 

Toujours vérifier le journal des erreurs: il devrait vous dire où vous avez fait une erreur

+0

Je viens de corriger cela mais ça ne marche toujours pas –

0

Vous devez appeler pygame.display.flip() pour mettre à jour l'affichage et bien sûr corriger le circ/circa typo.

Quelques suggestions: Ajoutez un pygame.time.Clock pour limiter la fréquence d'images.

Les événements de souris ont un attribut pos, vous pouvez donc remplacer la variable circ par event.pos. Les planet_color et planet_radius peuvent être définis en dehors de la boucle while.

planet_color = (255,0,0) 
planet_radius = 100 
clock = pygame.time.Clock() 

while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = False 
     elif event.type == pygame.MOUSEBUTTONDOWN: 
      pygame.draw.circle(screen, planet_color, event.pos, planet_radius) 
     elif event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_q: 
       running = False 

    pygame.display.flip() # Call flip() each frame. 
    clock.tick(60) # Limit the game to 60 fps.