title: Can't click on image again, what's wrong with my pygame code?
body: <p>Okay, I'am trying to create a Tom and Jerry game with the pygame library. </p>
  
  <p>The game focuses on catching mice by clicking on them as they appear in their holes. The problem
  is that sometimes a cat appears instead of a mouse and should the player erroneously click on the
  cat (s)he looses all earned points, but the game continues.
  The mouse is an image of a mouse and the cat is an image of an cat.
  If you click on the mouse, you get mouse, otherwise the cat gets the points.
  The code is a mess, that's because I don't know what I'am doing and just set an another event loop because then it works, because it runs after I create the mouse. It works to click on the mouse but then you click somewhere else and after that it's like you did not clicked on the mouse.</p>
  
  <p>The mouse is created in a loop and is supposed to wait for 5 seconds and if you click on the mouse within these seconds then an appropriate message prints out in the console ,,Jerry clicked!" else "1 click". If you don't click on the mouse within 5 seconds a image covers the mouse so she disappears. </p>
  
  <p>Now, what I'am trying to do right now is to print the message 1 click when the player does not click on anything but print 1 click jerry clicked when the player clicks on the mouse. I have a image of the mousehole and then I put the mouse on the mousehole, that is, on an another image. </p>
  
  <p>This code works with one image at least:</p>
  
  <pre><code>pygame.init()
  width=350;
  height=400
  screen = pygame.display.set_mode( (width, height ) )
  pygame.display.set_caption('clicked on image')
  redSquare = pygame.image.load("images/red-square.png").convert()
  
  x = 20; # x coordnate of image
  y = 30; # y coordinate of image
  screen.blit(redSquare ,  ( x,y)) # paint to screen
  pygame.display.flip() # paint screen one time
  
  running = True
  while (running):
      for event in pygame.event.get():
          if event.type == pygame.QUIT:
              running = False
          if event.type == pygame.MOUSEBUTTONDOWN:
              # Set the x, y postions of the mouse click
              x, y = event.pos
              if redSquare.get_rect().collidepoint(x, y):
                  print('clicked on image')
  #loop over, quite pygame
  pygame.quit()
  </code></pre>
  
  <p>My problem is that, when I click on the mouse and then I don't click on the mouse I can't click on the mouse again at another position.</p>
  
  <p>So what's wrong? What I'am doing wrong here?</p>
  
  <p>Here is my code:</p>
  
  <pre><code>import pygame
  from pygame import *
  from random import *
  
  init()
  
  run = True
  screen = (800,800)
  screen = display.set_mode(screen)
  xpos = 0
  ypos = 0
  mouseorcatxpos = 5
  mouseorcatypos = 0
  
  mousehole = image.load("mousehole.png").convert()
  
  cat = image.load("tom.png")
  jerry = image.load("jerry.png")
  
  def makeholes():
      global ypos
      global xpos
  
      for holey in range(1,9):
  
          for holex in range(1,9):
              screen.blit(mousehole,(xpos,ypos))
              display.flip()
  
              xpos += 100
  
          ypos += 100
          xpos = 0
  
  def mouseorcat():
      global xpos
      mouseorcatxpos = 5
      ypos = 0
  
      for mousecaty in range(1,9):
  
              pygame.event.pump()
  
              for mousecatx in range(1,9):
  
                  randommouse = randint(1, 3)
                  randomcat = randint(1, 10)
  
                  if(randommouse == 2):
  
                      screen.blit(jerry, (mouseorcatxpos, ypos))
                      display.flip()
  
                      for event in pygame.event.get():
  
                          if (event.type == MOUSEBUTTONDOWN):
  
                              if jerry.get_rect().collidepoint(xpos, ypos) == False:
  
                                 print("l clicked!")
  
                              x, y = event.pos
  
                              if jerry.get_rect().collidepoint(xpos, y):
                                  print("JERRY CLICKED!!")
                                  x, y = event.pos
                                  print(x, y)
  
  
                      time.wait(5000)
                      #screen.blit(mousehole, (mouseorcatxpos - 5, ypos))
                      display.flip()
  
                  elif(randomcat == 2):
                      screen.blit(cat, (mouseorcatxpos, ypos))
                      display.flip()
                      time.wait(1500)
                      screen.blit(mousehole, (mouseorcatxpos-5, ypos))
                      display.flip()
  
                  mouseorcatxpos += 100
              mouseorcatxpos = 0
              ypos += 100
  
  
  makeholes()
  
  
  while run == True:
  
  
      for event in pygame.event.get():
          mouseorcat()
  
          if event.type == QUIT:
              run = False
  </code></pre>