0

私はpythonの初心者で、pygameを使ってプロジェクトをやっています。マウスのクリックでループを開始しましたが、正常に動作します。しかし、私はそのループを止めることができませんでした。マウスのクリックで停止し、そのマウスのクリックまでループを実行する必要があります。以下にコードの概要を示します。誰かが適切なコードで私を助けることができますか? 前もって感謝します。

for event in pygame.event.get():
    if (event.type == pygame.MOUSEBUTTONDOWN):
         (mx,my)= pygame.mouse.get_pos()
         if((mx>=375)&(mx<=425)&(my>=500)&(my<=550)): #to begin loop on mouse click#
           while True:
              ---statements-----
              if((mx>=300)&(mx<=350)&(my>=500)&(my<=550)): #to end loop on mouse click#
                 exit
              else:
                 continue
4

1 に答える 1

1

問題は、while Trueループに入ると、pygame からのマウス イベントを待機しなくなることです。ループする直前に新しいイベントをチェックしてみてください:

for event in pygame.event.get(pygame.MOUSEBUTTONDOWN):
    mx, my = pygame.mouse.get_pos()
    if 375 <= mx <= 425 and 500 <= my <= 550:
        run = True
        while run:
            # statements
            # ...
            for event in pygame.event.get(pygame.MOUSEBUTTONDOWN):
                mx, my = pygame.mouse.get_pos()
                if 300 <= mx <= 350 and 500 <= my <= 550:
                    run = False

event.get 呼び出しでイベントを直接フィルタリングできます。

ロジックと Python では実際にはandであり、&はビット単位の操作であるため、境界チェックを書き直したことに注意してください。Python では、範囲をチェックするときにも優れた構文を使用できます。

于 2014-03-16T15:14:17.137 に答える