2017-02-06 7 views
1

ゲームシーンを表示するためにpygameを使用しようとしていますが、私のために働いていないようです:pygameがシャットダウンするまで、それが終わる前に、画面上に表示されていた内容が一時的に点滅します。例えば、以下の最小のコードは、迅速に黒を点滅し、終了し、5秒間灰色の画面が表示されますpygameは画面上に灰色のウィンドウしか表示しない

import pygame as pg 
import time 
pg.init() 
sc = pg.display.set_mode((600,600)) 
sc.fill((0,0,0)) 
pg.display.flip() 
time.sleep(5) 

これは私が表面を作ることができるので、画面表示の問題であり、それ自体をpygameのないように見えるとpg.image.save()でイメージファイルに保存してください。

私はOSX 10.12にアップグレードして以来、画面に表示するためにpygameを使ってみました。これは、Python 2.7とPygame 1.9.3(pipからダウンロードされましたが、bitbucketのdev 1.9.4バージョンの問題もあります)を使用しています。すべてのsdl依存関係は、最新版(自作による)です。

しかし、私はpygameがディスプレイと通信する方法を十分に理解していないため、トラブルシューティングを行う方法が失われています。この問題の根本を見つけて修正するのに役立つことが他にありますか?

ありがとうございました!

+2

これはパイゲームの仕組みではありません。 pygameはメインループを持つように特別に設計されているので、単純にtime.sleep()を使って表示することはできません。 – Natecat

答えて

1

あなたが継続的に次のことを行いゲームループが必要です。

  • 通話のpygame.display.flipを() - これは新しい変更で画面を更新します
  • 通話のpygame.event.getを() - これは、イベントキューがフラッシュされず、OSがあなたのプログラムが応答していないと判断するため、最も重要です。あなたはPyGameにsleep(5)のようなものを持つことはできません。
+0

ありがとうございます!問題だったのはevent.get()呼び出しだったようです。私はいつも過去にそれを使用していたと思うし、それが要件であることを知らなかった。しかし、ループは必要ありません。pg.display.flip()の直後にpg.event.get()を追加すると、コードは正常に動作します。 – user2048508

+0

これは表示されます。しかし、あなたはまだループが必要です。アプリケーションがアクティブでなく、継続的にイベントキューをポンピングしていない場合、アプリケーションは応答しません。たとえば、5秒間にウィンドウを閉じたり移動したりします。 –

関連する問題