Пишу приложение на Python. Почему не открывается файл с противником?

import pygame
pygame.init()

win = pygame.display.set_mode((500,480))

pygame.display.set_caption("First Game")

walkRight = [pygame.image.load('Cowboy/walk_0.png'),
             pygame.image.load('Cowboy/walk_1.png'),
             pygame.image.load('Cowboy/walk_2.png'),
             pygame.image.load('Cowboy/walk_3.png')]
walkLeft = [pygame.image.load('Cowboy/Lwalk_0.png'),
            pygame.image.load('Cowboy/Lwalk_1.png'),
            pygame.image.load('Cowboy/Lwalk_2.png'),
            pygame.image.load('Cowboy/Lwalk_3.png')]
bg = pygame.image.load('Cowboy/background.png')
char = [pygame.image.load('Cowboy/idle_0.png'),
pygame.image.load('Cowboy/idle_1.png'),
pygame.image.load('Cowboy/idle_2.png'),
pygame.image.load('Cowboy/idle_3.png')]

clock = pygame.time.Clock()

#bulletSound = pygame.mixer.Sound('bullet.wav')
#hitSound = pygame.mixer.Sound('hit.wav')

music = pygame.mixer.music.load('country.mp3')
pygame.mixer.music.play(-1)

score = 0

class player(object):
    def __init__(self,x,y,width,height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 5
        self.isJump = False
        self.left = False
        self.right = False
        self.walkCount = 0
        self.jumpCount = 10
        self.standing = True
        self.hitbox = (self.x + 17, self.y + 11, 29, 52)

    def draw(self, win):
        if self.walkCount + 1 >= 27:
            self.walkCount = 0

        if not(self.standing):
            if self.left:
                win.blit(walkLeft[self.walkCount//3], (self.x,self.y))
                self.walkCount += 1
            elif self.right:
                win.blit(walkRight[self.walkCount//3], (self.x,self.y))
                self.walkCount +=1
        else:
            if self.right:
                win.blit(walkRight[0], (self.x, self.y))
            else:
                win.blit(walkLeft[0], (self.x, self.y))
        self.hitbox = (self.x + 17, self.y + 11, 29, 52)
        #pygame.draw.rect(win, (255,0,0), self.hitbox,2)

    def hit(self):
        self.isJump = False
        self.jumpCount = 10
        self.x = 100
        self.y = 410
        self.walkCount = 0
        font1 = pygame.font.SysFont('comicsans', 100)
        text = font1.render('-5', 1, (255,0,0))
        win.blit(text, (250 - (text.get_width()/2),200))
        pygame.display.update()
        i = 0
        while i < 200:
            pygame.time.delay(10)
            i += 1
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    i = 201
                    pygame.quit()
                


class projectile(object):
    def __init__(self,x,y,radius,color,facing):
        self.x = x
        self.y = y
        self.radius = radius
        self.color = color
        self.facing = facing
        self.vel = 8 * facing

    def draw(self,win):
        pygame.draw.circle(win, self.color, (self.x,self.y), self.radius)


class enemy(object):
    walkRight = [pygame.image.load('R_walk_0.png'),
                 pygame.image.load('R_walk_1.png'),
                 pygame.image.load('R_walk_2.png'),
                 pygame.image.load('R_walk_3.png')]
    walkLeft = [pygame.image.load('L_walk_0.png'),
                pygame.image.load('L_walk_1.png'),
                pygame.image.load('L_walk_2.png'),
                pygame.image.load('L_walk_3.png')]

    def __init__(self, x, y, width, height, end):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.end = end
        self.path = [self.x, self.end]
        self.walkCount = 0
        self.vel = 3
        self.hitbox = (self.x + 17, self.y + 2, 31, 57)
        self.health = 10

При запуске программы выходит чёрный экран и выдаёт ошибку, что не открывается изображение противника.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: svmitin

Python не может найти файл R_walk_0.png

Попробуйте добавить следующий код в начало файла:

import os

APP_DIR = os.path.dirname(os.path.abspath(__file__))
os.chdir(APP_DIR)

Даже если не поможет, рекомендую этот код оставить. Он меняет текущую директорию, на папку с программой. Это важно потому, что ваши файлы имеют относительные адреса (аля <app_dir>\R_walk_0.png), а не глобальные адреса: C:\img\R_walk_0.png

→ Ссылка