【问题标题】:How do you load images into specific spots based on a list and a dictionary?如何根据列表和字典将图像加载到特定位置?
【发布时间】:2022-07-02 00:45:53
【问题描述】:

我正在 replit 中制作一个简单的 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
>>>

有人对如何进行这项工作有任何建议吗? 这是replit代码的链接:my game

【问题讨论】:

  • 我不知道你到底想做什么,但我可以告诉你 TileMap 是一本字典,你不能像你一样 call() 一个带括号的字典正在做。

标签: python pygame


【解决方案1】:

WATERSAND 等已经是 pygame.Surface 对象。您无需再次加载它们。只需blit 图片:

# 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))

    # [...]

(代码是根据你上一题的代码:how do you make the map more detailed?

【讨论】:

  • 我补充说。我的代码不再有错误消息,但没有显示任何东西
  • @roarg 你打电话给pygame.display.update()吗?
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 2021-10-02
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多