2016-03-22 3 views
0

私はテストしたプログラムを持っていましたが、それを実行したときにマウスが画面上をランダムに移動しました。ここに私のコードがあります(私は原因である部分を抽出しました)ログアウトしないでPythonプログラムを停止するCtrl C、Alt F4、マウスを使わないで

import pygame 
    import random 

    from pygame.locals import * 
    while True: 
     global screen, white, zoom 

     zoom = 1 
     screen = pygame.display.set_mode((1024, 1024)) 
     run = True 
     clock = pygame.time.Clock() 
     pygame.mouse.set_pos(random.randint(0, 1024), random.randint(0, 1024)) 


     pygame.display.update() 

どうすればこのコードを停止できますか?私はコードを変更したくありません。キーボード割り込みにCtrl Cを使ってみましたが、うまくいきませんでした。私はAlt F4を使ってみたが、うまくいかなかった。私はタスクマネージャーを持っていません。動作したのはCtrl Alt Delete(ログアウト)だけですが、プログラムを停止する必要があるたびにその操作をしたくありません。助けてください。ありがとう!

答えて

1

ゲームイベントをキャプチャしてQUITイベントが存在するかどうかを確認するか、K_ESCAPEが押された場合はwhile True:から戻ってください。

quit = False 
while True: 
    for event in pygame.event.get(): 
      if event.type == QUIT: 
       quit = True 
      elif event.type == KEYDOWN and event.key == K_ESCAPE: 
       quit = True 
    if quit is True: 
     return 
+0

私はコードを変更したくありません。私は何かが間違ってしまった場合に出る方法を欲しいだけです。 – mathwizard888

+0

@ mathwizard888を試してみてください。 – tommyip

+0

@ mathwizard888コードを変更したくないということはどういう意味ですか? –

0

ゲームアプリでは、アップデートフェーズが短すぎるとコントロールが失われる可能性があります。したがって、質問に書かれた更新フェーズのスレッドを作成し、whileループでsleep関数呼び出しをインターリーブすることをお勧めします。これらのアプローチはすべてアプリのフリーズを防ぐのに役立ちます。

フリーズすることなく、Ctrl + CとAlt + F4を使用できます。

0
import sys 

でもどこでも必要なプログラムがそのコードブロックの後に任意のコードを持っていない場合sys.exit()を使用しています。

>>> print sys.exit.__doc__ 
exit([status]) 

Exit the interpreter by raising SystemExit(status). 
If the status is omitted or None, it defaults to zero (i.e., success). 
If the status is numeric, it will be used as the system exit status. 
If it is another kind of object, it will be printed and the system 
exit status will be one (i.e., failure). 
+0

彼らはpygameを使用しているので、これを行うための定義済みの方法がすでにあります。私の答えを確認してください –

関連する問題