0

プログラムを起動しても画像が表示されません。「game」という名前のフォルダーと、「background.png」をすべて含む「mygame.py」ファイルがあります。"background.png" の代わりに PATH "/game/background.png" を使用しようとしましたが、うまくいかないようです。何か案は?

私のコード:

import pygame , sys 

pygame.init()

#screen start
def screen():
    screen = [1024,768]
    screen = pygame.display.set_mode(screen,0,32)
    pygame.display.set_caption("Testing Caption")
    background = pygame.image.load("background.png")
    screen.blit(background, (0,0))


    while True:
      screen.blit(background, (0,0))
      #keyboard commands
      for event in pygame.event.get():
          if event.type == pygame.QUIT:
              pygame.quit()   


screen()  

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

4

3 に答える 3

2

フリップ/更新呼び出しがありません:

clock = pygame.time.Clock()

while True:

  #keyboard commands
  for event in pygame.event.get():
      if event.type == pygame.QUIT:
          pygame.quit()

  screen.blit(background, (0,0))

  pygame.display.flip()

  clock.tick(40)  # keep program running at given FPS

すべてのブリットは内部バッファーで発生します。実際の画面を更新するには、フレームごとに一度フリップまたは更新を呼び出す必要があります。

于 2012-12-08T19:35:39.637 に答える
1

私の知る限り、これを機能させるには 2 つの方法があります。

次のように、ファイルへの絶対パスを使用できます。

"C:\path_to_game_folder\game\background.png"

または、相対パスを使用できます。これを行うには、次のコードをプログラムに追加します。

import os
dir = os.path.dirname(__file__)
backgroundFile = os.path.join(dir, "background.png")

そして変更:

pygame.image.load("background.png") 

pygame.image.load(backgroundFile)

可能な限り相対パスを使用することをお勧めします。これにより、コードの移植性が維持され、保守と配布が容易になります。

于 2012-12-08T00:30:26.773 に答える
0

わかった!pygame.display.update()pygameを使用する場合、screen.flip内で""を使用することは重要while True:です。pygameでは、画面を更新または更新することはできません。しかし、以前に応答したユーザーに感謝します。

完全なコード:

import pygame , sys

pygame.init()

#screen start
def screen():
    width , height = 1280,768
    screen = pygame.display.set_mode((width,height))
    pygame.display.set_caption("Testing Caption")
    background = pygame.image.load("background.jpg")
    screen.blit(background, (0,0))

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()

        screen.blit(background, (0,0))
        pygame.display.update()


screen()
于 2012-12-09T04:20:43.757 に答える