2017-02-20 22 views
2

ない私が間違って何をしたか確認してください、私はPythonとpygameのダウンロードでゲームを作成する方法についてのチュートリアルを以下していると私はエラーを取得:Pythonの - エラー:.pngのファイルを開くことができませんでした

pygame.error: Couldn't open resources/images/dude.png  

マイ次のようにコードは次のとおりです。

import pygame 
from pygame.locals import * 


pygame.init() 
width, height = 640, 480 
screen=pygame.display.set_mode((width,height)) 

player = pygame.image.load("resources/images/dude.png") 

while 1: 

    screen.fill(0) 

    screen.blit(player, (100,100)) 

    pygame.display.flip() 

    for event in pygame.event.get(): 


     if event.type==pygame.QUIT: 
      pygame.quit() 
      exit(0) 

完全なエラーメッセージは次のとおりです。

ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4292:(_snd_config_evaluate) function 
snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_concat 
returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4292:(_snd_config_evaluate) function snd_func_refer 
returned error: No such file or directory 
ALSA lib conf.c:4771:(snd_config_expand) Evaluate error: No such file or 
directory 
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default 
Traceback (most recent call last): 
    File "/root/Documents/PyGame/game.py", line 9, in <module> 
    player = pygame.image.load("resources/images/dude.png") 
pygame.error: Couldn't open resources/images/dude.png 
+0

player = pygame.image.load(os.path.join( "。"、 "resources/images/dude.png"))は動作しますか? – user2682863

答えて

2

使用相対パス(それがそうすることを常に良いでしょう)コードを変更しなくてもアクセスできます。


決勝コード:

import pygame 
import os 
from pygame.locals import * 


pygame.init() 

width, height = 640, 480 
screen = pygame.display.set_mode((width, height)) 

current_path = os.path.dirname(__file__) # Where your .py file is located 
resource_path = os.path.join(current_path, 'resources') # The resource folder path 
image_path = os.path.join(resource_path, 'images') # The image folder path 

player_image = pygame.image.load(os.path.join(image_path, 'dude.png')) 

while 1: 

    screen.fill(0) 

    screen.blit(player, (100,100)) 

    pygame.display.flip() 

    for event in pygame.event.get(): 


     if event.type==pygame.QUIT: 
      pygame.quit() 
      exit(0) 

他のすべてのファイルに対して、このアクセス方法を使用して、あなたは問題の束を回避します。

+0

これは正常に動作します! –

-1

のPythonプログラムがされているのと同じフォルダ内のファイルを検索します。あなたが書いたコードでは、あなたのプログラムを持っているのと同じフォルダにresourcesというフォルダがあり、その中にimagesというフォルダがあります。この場合、私はあなたを助けることはできませんが、そうでない場合は、完全なファイルの場所を使用してください。

+0

Windowsについて話しているのかどうか分かりませんが、Linux上では、Pythonはプログラムを実行するフォルダ内のファイルを探します。パスは絶対パスでない限り、プログラムを起動するフォルダからの相対パスでなければなりません。 – Shiping

+0

また、大文字をチェックしてください。それは馬鹿だと思うが、私は個人的には、ファイルが実際に 'Dude.png'と呼ばれるとき' dude.png'をインポートしない理由を疑問に思っている。 – Synedraacus

-1

./をパスに追加してください。これにより

import os 

current_path = os.path.dirname(__file__) # Where your .py file is located 
resource_path = os.path.join(current_path, 'resources') # The resource folder path 
image_path = os.path.join(resource_path, 'images') # The image folder path 

、あなたは.pyファイル、そのサブディレクトリ(したがって、それに含まれるものは何でも)を含むフォルダを移動どこ:

代わり
player = pygame.image.load("./resources/images/dude.png") 
+0

Jacobあなたはこれを試してみるべきだ。 :) – nipkip

関連する問題