3

このプログラムは無限ループします。何もしません。入力を受け付けず、何も出力しません。アイデア?

import pygame

pygame.init()

running = 1
while(running):
   for event in pygame.event.get():
      if event.type == pygame.KEYDOWN:
         if event.key == pygame.K_ESCAPE:
            print "hi"
            running = 0
4

4 に答える 4

2

次のことを試してください。

import pygame, sys

pygame.init()
pygame.mixer.init(22050, -16, 2, 3072)
pygame.mixer.music.load("Kundara_Lake-of-Dust-320.mp3")
pygame.mixer.music.play(1, 0.0)

running = 1
while(running):
   for event in pygame.event.get():
      if event.type == pygame.KEYDOWN:
         if event.key == pygame.K_ESCAPE:
             pygame.mixer.music.stop()
             pygame.quit()
             running = 0

http://www.pygame.org/docs/ref/pygame.htmlから

pygame.quit

以前に初期化されたすべての pygame モジュールを初期化解除します。Python インタープリターがシャットダウンすると、このメソッドは関係なく呼び出されるため、pygame リソースを終了して続行する場合を除いて、プログラムでは必要ありません。この関数を複数回呼び出しても安全です。繰り返し呼び出しても効果はありません。

pygame.quit はプログラムを終了しないことに注意してください。通常の python プログラムが終了するのと同じ方法でプログラムを終了させることを検討してください。

pygame.quit()が原因で呼び出しを無限にループしていwhile(1)ます。

于 2012-09-18T19:50:50.593 に答える
2

スクリプトの問題は、イベントをキャプチャできるウィンドウがないことだけです。

pygame.display.set_mode最初にウィンドウを作成して初期化する必要があります。

import pygame

pygame.init()

# create a window that will capture the events
pygame.display.set_mode((200, 200))

running = 1
while(running):
   for event in pygame.event.get():
      if event.type == pygame.KEYDOWN:
         if event.key == pygame.K_ESCAPE:
            print "hi"
            running = 0
于 2012-09-19T06:44:50.857 に答える
0

画面を更新する必要があります。で試してみてください

screen = pygame.display.set_mode((640,360),0,32)

そしてループで、書く

pygame.dispay.flip()

ウィンドウを完全に閉じるには、次を使用できます

sys.exit()

インポートに sys を必ず含めてください

于 2012-09-18T20:23:19.570 に答える