

現在『ゲームを作りながら楽しく学べるpythonプログラミング』で勉強中の初心者です。

本書で、`image.load("")`ができなくて困っております。  
以下のコードを入力して(`pythonlogo.jpg`)を表示したいのですが、なぜかpygame
windowという真っ黒のインターフェース画面が表示されるだけで画像が全く表示がされません。

実行ファイルと画像の置き位置がおかしいのかと思い、実行ファイルと画像(`pythonlogo.jpg`)を同じ階層に置いて試しましたが駄目でした。
やりかたはコマンドプロンプトから「idle」で3.6.3 Shell を起動し、File(実行.py)を開いて`Run module
f5`で試していますが何も表示されません。

このやり方が間違っているのかファイルのパスがおかしいのでしょうか。

[code]

    import sys
    import pygame
    from pygame.locals import QUIT
    pygame.init()
    SURFACE=pygame.display.set_mode((400,300))
    FPSCLOCK=pygame.time.Clock() 
    def main():
        logo=pygame.image.load("pythonlogo.jpg")
        while True:
            for event in pygame.event.get():
                if event.type==QUIT:
                    pygame.quit()
                    sys.exit()
        SURFACE.fill((255,255,255))
        SURFACE.blit(logo,(20,50))
        pygame.display.update()
        FPSCLOCK.tick(30) 
    if __name__=='__main__':
        main() 
    
[/code]

※Windows環境です。

どうかご教授よろしくお願いします。


CC BY-SA 3.0
2017-12-02T11:14:28.880
39981
2018-05-08T07:31:29.433
2017-12-08T07:57:48.703
24284
26453
question
python 画像 pygame
pythonのpygameでimage.load("")で画像表示ができなくてすごく困っております。


(改行がおかしい等、記述ミスかも知れませんが)  
`logo`を表示するのはイベントループに入る前の必要があると思います。

具体的には

[code]

       logo=pygame.image.load("pythonlogo.jpg")
       while True:
           for event in pygame.event.get():
               if event.type==QUIT:
                   pygame.quit()
                   sys.exit()
       SURFACE.fill((255,255,255))
       SURFACE.blit(logo,(20,50))
       pygame.display.update()
    
[/code]

の順ではなく、

[code]

       logo=pygame.image.load("pythonlogo.jpg")
       while True:
           SURFACE.fill((255,255,255))
           SURFACE.blit(logo,(20,50))
           pygame.display.update()
           for event in pygame.event.get():
               if event.type==QUIT:
                   pygame.quit()
                   sys.exit()
    
[/code]

の順かと思います。


CC BY-SA 3.0
2017-12-03T07:59:18.180
39999
2017-12-03T07:59:18.180
20098
39981
answer

[code]

    pygame.display.update()
    FPSCLOCK.tick(30)
    
[/code]

の二つの行が

while True:

にかかっていないと、  
初期表示時点ではブラックスクリーンです。  
ただ、一度最小化してみるとちゃんと表示されるはずです。


CC BY-SA 4.0
2018-05-08T07:31:29.433
43863
2018-05-08T07:31:29.433
28454
39981
answer