Wie kann ich die Position eines zweiten Klicks in Pygame erzeugen?

Ich mache die Türme von Hanoi.

Es sollte so funktionieren: Sie klicken auf den ersten Turm, von dem aus eine Festplatte verschoben werden soll, und dann auf den zweiten Turm, zu dem die Festplatte verschoben werden soll. Die Festplatte sollte sich vom ersten Turm (eine Liste) zum zweiten Turm (eine andere Liste) bewegen.

Mein Problem ist, dass beim ersten Klicken der Code die Position generiert und kurz danach erneut geklickt werden sollte, um zu entscheiden, wohin die Festplatte verschoben werden soll. Der Code nimmt jedoch automatisch die Position des ersten Klicks ein.

Hier ist ein Beispiel meines Codes:

import pygame, sys
from pygame.locals import *

pygame.init()

DISPLAYSURF = pygame.display.set_mode((500, 400))
pygame.display.set_caption("Tower of Hanoi")

block_red = pygame.image.load('red.png')
block_blue = pygame.image.load('blue.png')
block_green = pygame.image.load('green.png')

rod1 = [block_red, block_blue, block_green]
rod2 = []
rod3 = []

WHITE = (255, 255, 255)

while True:

    DISPLAYSURF.fill(WHITE)

    # get the position of the mouse click
    for event in pygame.event.get():
        if event.type == MOUSEBUTTONDOWN:
            mousex, mousey = pygame.mouse.get_pos()
            click1 = mousex, mousey

            # first in the left part of the screen
            if (mousex > 0) and (mousex < 166) and (mousey > 0) and (mousey < 400):

                if len(rod1) == 0:
                    print "not valid"

                elif len(rod1) == 1 or 2 or 3:
                    disk1 = rod1[-1]
                    rod1.remove(disk1)

                    # click again in a other part of the screen
                    if event.type == MOUSEBUTTONDOWN:
                        mousex, mousey = pygame.mouse.get_pos()   
                        click2 = mousex, mousey

                        if (mousex > 166) and (mousex < 333) and (mousey > 0) and (mousey < 400):
                            rod2.append(disk1)
                        elif (mousex > 333) and (mousex < 500) and (mousey > 0) and (mousey < 400):
                            rod3.append(disk1)
                        else: 
                            rod1.append(disk1)

    # if statement fot the middle part
    # if statement for the right part                        

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

Antworten auf die Frage(3)

Ihre Antwort auf die Frage