

pygameについて以下のようなプログラムを書きました。

[code]

    import sys
    import pygame
    from pygame.locals import QUIT
    
    # globals
    WINDOW_SIZE = (400,300)
    WINDOW_TITLE = "Pygame Count"
    
    def main() :
        pygame.init()
        surface = pygame.display.set_mode(WINDOW_SIZE)
        pygame.display.set_caption(WINDOW_TITLE)
        sysfont = pygame.font.SysFont(None,36)
        counter = 0
        while True :
            for event in pygame.event.get():
                if event.type == QUIT :
                    pygame.quit()
                    sys.exit()
            counter += 1
            surface.fill((255,255,255))
            count_image = sysfont.render(
                "count is {0}".format(counter),True,(0,0,0))
            pygame.display.update()
    
    if __name__ == "__main__":
        main()
    
[/code]

このプログラムを実行すると以下のようなことが起こります。

  * surface.fill() で背景の色が変更されない
  * sysfont.render() で文字の色が変更されていない

（実行環境:macOS Mojave,python 3.7.0,pygame 1.9.4）  
背景色はMojaveのダークモードの基本色です。（ライトモードに変更したところ基本色である白色になりますが、色の変化は見られませんでした）

また、以下を参考にテストしてみましたが、色の変化は見られませんでした。  
<https://stackoverflow.com/questions/41873581/pygame-surface-fill-not-working>


CC BY-SA 4.0
2019-01-18T09:44:11.170
52078
2020-04-19T10:01:45.240
31834
question
python pygame
pygame surface.fill() がうまく動かない


Windowsでは、こんな感じで、数値を変えれば色は変わって見えます。

[code]

    import sys
    import pygame
    from pygame.locals import QUIT
    
    # globals
    WINDOW_SIZE = (400,300)
    WINDOW_TITLE = "Pygame Count"
    
    def main() :
        pygame.init()
        surface = pygame.display.set_mode(WINDOW_SIZE)
        pygame.display.set_caption(WINDOW_TITLE)
        sysfont = pygame.font.SysFont(None,36)
        counter = 0
        while True :
            for event in pygame.event.get():
                if event.type == QUIT :
                    pygame.quit()
                    sys.exit()
            counter += 1
            surface.fill((255,255,255))  # = > この数値を変えれば背景色は変わります。
            count_image = sysfont.render(
                "count is {0}".format(counter),True,(0,0,0))  # = > 同じく文字色が変わります。
            surface.blit(count_image, (64,64))  # = > 文字を描画するために挿入しています。
            pygame.display.update()
            pygame.time.delay(100)  # = > カウンタが変わったことを目視する時間のディレイを挿入。
    
    if __name__ == "__main__":
        main()
    
[/code]

* * *

1件だけ、pythonの版数を明確に指定すれば動いた記事がありました。  
しかし、他何件かは未解決のようです。  
[Screen.Fill() in Pygame isn't changing the
screen](https://stackoverflow.com/q/53878082/9014308)

[Why are my pygame images not getting the alpha set after changing from
windows to mac](https://stackoverflow.com/q/20920273/9014308)  
[Pygame: display.update() does not update until after clock
delay](https://stackoverflow.com/q/50219028/9014308)  
[pygame: window changing color after minimize and
restore](https://stackoverflow.com/q/20791417/9014308)


CC BY-SA 4.0
2019-01-18T10:41:29.437
52080
2019-01-18T11:44:16.160
2019-01-18T11:44:16.160
26370
26370
52078
answer


Mac OS Mojave 10.14.6 です。自身も"ゲームを作りながら楽しく学べるPYTHONプログラミング"で同じ問題が出たのですが、

PYTHON 3.7.3 (brew install)  
pygame 2.0.0.dev1

を指定してインストールしたら 解決しましたよー。


CC BY-SA 4.0
2019-11-18T10:49:14.400
60630
2019-11-18T10:49:14.400
36677
52078
answer