如何根据列表和词典将图像加载到特定斑点中?

发布于 2025-02-11 17:39:56 字数 2186 浏览 2 评论 0原文

我正在制作一个简单的2D探索游戏(希望为我制作的将来的游戏拥有一个不错的基础),并且我将所有的地图瓷砖作为图像

WATER = pygame.image.load(r'water.jpg')
SAND = pygame.image.load(r'sand.jpg')
GRASS = pygame.image.load(r'grass.jpg')
FOREST = pygame.image.load(r'Forest.jpg')
VILLAGE = pygame.image.load(r'village.jpg')

,并且我的字典将它们压缩成单个字母

TileMap = {'W': WATER, 'S': SAND, 'G': GRASS, 'F': FOREST, 'V': VILLAGE }

,我有我的地图通常应该在代码之后提出图像:

map1 = ["WWWWWWWWWWWWWWWWWWWWWWW",
        "WWWWWWWWWGGGWWWWWWWWWWW",
        "WWWWWGGGGGGGGGGGWWWWWWW", 
        "WWWWGGGGGFFFGGGGGVWWWWW",
        "WWWGGGGGFFFFFFGGGGGWWWW", 
        "WWWGGGGGGFFFFFGGGGGGWWW",
        "WWGGGGGGGGGFFGGGGGGGWWW", 
        "WWGGGGGGGGGGGGGGGGGGGWW",
        "WWGGGGGGSSSSSSSGGGGGGGW", 
        "WWGGGGSSSSSSSSSSGGGGGGW",
        "WGGGGGGGSSGGGGGGGGGGGSW", 
        "WGGGGGGGGGGGGGGGGGGGSSW",
        "WSGGGGGGGGFFGGGGGGGGSSW", 
        "WSSGGGGGGFFFGGGGGFFGGSW",
        "WSSGGGGGFFFFFFGGFFFFFGW", 
        "WSGGGGFFFFFFFFFFFFFFGGW",
        "WWGGGGGFFFFFFFFFFFFGGWW", 
        "WWGGGGGGGFFFFFFFFGGGWWW",
        "WWWWGGGGGGGGFFGGGGGWWWW", 
        "WWWWWWSSSSSGGGGSSSWWWWW",
        "WWWWWWWWWSSSSSSSSWWWWWW", 
        "WWWWWWWWWWWWWWSWWWWWWWW",
        "WWWWWWWWWWWWWWWWWWWWWWW"
        ]

“在此处输入图像说明”

,我尝试显示图像

pygame.image.load_basic(TileMap(map1))

,我收到此错误消息:

pygame 2.1.2 (SDL 2.0.16, Python 3.8.12)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "main.py",line 74, in <module>
    pygame.image,load_basic(TileMap(map1))
TypeError: 'dict' object is not callable
>>>

是否有人对如何制作此信息有任何建议工作? 这是指代码的链接:我的游戏

I'm making a simple 2d exploration game in replit (hoping to have a nice base for a future game I'm making) and I have all my map tiles as images

WATER = pygame.image.load(r'water.jpg')
SAND = pygame.image.load(r'sand.jpg')
GRASS = pygame.image.load(r'grass.jpg')
FOREST = pygame.image.load(r'Forest.jpg')
VILLAGE = pygame.image.load(r'village.jpg')

and I have my dictionary which compresses them into a single letter

TileMap = {'W': WATER, 'S': SAND, 'G': GRASS, 'F': FOREST, 'V': VILLAGE }

and I have my map which should usually come up with the image after the code:

map1 = ["WWWWWWWWWWWWWWWWWWWWWWW",
        "WWWWWWWWWGGGWWWWWWWWWWW",
        "WWWWWGGGGGGGGGGGWWWWWWW", 
        "WWWWGGGGGFFFGGGGGVWWWWW",
        "WWWGGGGGFFFFFFGGGGGWWWW", 
        "WWWGGGGGGFFFFFGGGGGGWWW",
        "WWGGGGGGGGGFFGGGGGGGWWW", 
        "WWGGGGGGGGGGGGGGGGGGGWW",
        "WWGGGGGGSSSSSSSGGGGGGGW", 
        "WWGGGGSSSSSSSSSSGGGGGGW",
        "WGGGGGGGSSGGGGGGGGGGGSW", 
        "WGGGGGGGGGGGGGGGGGGGSSW",
        "WSGGGGGGGGFFGGGGGGGGSSW", 
        "WSSGGGGGGFFFGGGGGFFGGSW",
        "WSSGGGGGFFFFFFGGFFFFFGW", 
        "WSGGGGFFFFFFFFFFFFFFGGW",
        "WWGGGGGFFFFFFFFFFFFGGWW", 
        "WWGGGGGGGFFFFFFFFGGGWWW",
        "WWWWGGGGGGGGFFGGGGGWWWW", 
        "WWWWWWSSSSSGGGGSSSWWWWW",
        "WWWWWWWWWSSSSSSSSWWWWWW", 
        "WWWWWWWWWWWWWWSWWWWWWWW",
        "WWWWWWWWWWWWWWWWWWWWWWW"
        ]

enter image description here

and I have a attempt at showing the images

pygame.image.load_basic(TileMap(map1))

and I get this error message:

pygame 2.1.2 (SDL 2.0.16, Python 3.8.12)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "main.py",line 74, in <module>
    pygame.image,load_basic(TileMap(map1))
TypeError: 'dict' object is not callable
>>>

does anyone have any suggestions as to how to make this work?
here is the link to the replit code: my game

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

财迷小姐 2025-02-18 17:39:56

sand,等是pygame.surface对象。您无需再次加载它们。只是图像:(

# application loop
while run:
    # [...]

    for row in range(MAPHEIGHT):
        for col in range(MAPWIDTH):
            c = map1[row][col]
            image = TileMap[c]
            x = col * TILESIZE
            y = row * TILESIZE
            DISPLAY.blit(image, (x, y))

    # [...]

该代码基于您上一个问题中的代码:如何您是否使地图更详细?

WATER, SAND, etc are already pygame.Surface objects. You do not need to load them again. Just blit the images:

# application loop
while run:
    # [...]

    for row in range(MAPHEIGHT):
        for col in range(MAPWIDTH):
            c = map1[row][col]
            image = TileMap[c]
            x = col * TILESIZE
            y = row * TILESIZE
            DISPLAY.blit(image, (x, y))

    # [...]

(The code is based on the code in your previous question: how do you make the map more detailed?)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文