为什么会导致此错误以及如何修复它

时间:2021-06-07 15:45:36

标签: python list pygame

我正在尝试在 python 上为学校编写扫雷程序。我看了一个关于这个的 YouTube 视频并复制了一点。但现在我因为这个错误而卡住了:

文件“e:\Schule\Spiele\Minesweeper\Minesweeper.py”,第 98 行,在 loadImages 中 self.images[images] = pygame.image.load(images) FileNotFoundError: 没有这样的文件或目录。

import pygame
import os



class Settings(object):
    def __init__(self):
        self.size = (9,9)
        self.screenSize = (800, 800)



class Board(object):
    def __init__(self):
        self.settings = Settings()
        self.setBoard()

    def setBoard(self):
        self.board = []
        
        for row in range(self.settings.size[0]):
            row= []

            for col in range(self.settings.size[1]):
                piece = None
                row.append(piece)
            self.board.append(row)

    def getSize(self):
        return self.settings.size


class Game(object):
    def __init__(self) :
        self.settings = Settings()
        self.board = Board()
        self.pieceSize = self.settings.screenSize[0] // self.board.getSize()[1], self.settings.screenSize[1] // self.board.getSize()[0]
        self.loadImages()



    def run(self):
        pygame.init()
        self.screen = pygame.display.set_mode(self.settings.screenSize)

        running = True

        while running:
            for event in pygame.event.get():
                if (event.type == pygame.QUIT):
                    running = False
            self.draw()

            pygame.display.flip()
        pygame.quit

这是导致错误的函数,但我不知道如何解决这个问题。 它应该用这些图像创建一个网格

    def draw(self):
        pass
        topLeft = (0,0)

        for i in range(self.board.getSize()[0]):
            for n in range(self.board.getSize()[1]):
                image =  self.images["norm_zelle.gif"]
                self.screen.blit(image , topLeft)
                topLeft = topLeft[0] + self.pieceSize[0] , topLeft[1]
            topLeft = 0, topLeft[1] + self.pieceSize[1]
            

    def loadImages(self):
        self.images = {}
        file_path = os.path.dirname(os.path.abspath(__file__))
        image_path = os.path.join(file_path, "images")
        sound_path = os.path.join(file_path, "sounds")

        


if __name__ == '__main__':
    os.environ['SDL_VIDEO_WINDOWS_POS'] = "50, 1100"
    pygame.init()
    game = Game()
    game.run()
    pygame.quit()

1 个答案:

答案 0 :(得分:2)

您的 loadImages 函数从未真正加载图像!尝试在 loadImages 中添加以下代码:

for image in image_path:
    self.images[image] = pygame.image.load(image)

您还必须提供一个名为 norm_zelle.gif 的文件,该文件应位于名为 images 的目录中。

注意:您可能想对声音做同样的事情。

相关问题