【问题标题】:Image loading using pygame使用 pygame 加载图像
【发布时间】:2020-03-10 12:31:55
【问题描述】:

这是我的背景网格的代码

Background = pygame.display.set_mode((900 ,900))
Green = (45,198,14)
Background.fill(Green)

for i in range(0, 900, 50):
    pygame.draw.line(Background, (0, 0, 0), (0, i), (900, i))
    pygame.draw.line(Background, (0, 0, 0), (i, 0), (i, 900))
pygame.display.update()

while pygame.event.wait().type != pygame.QUIT:
    pass

我无法将任何图像加载到它上面,我必须将其转换为 n 个图像,然后是一个精灵,或者有没有办法让我将图像加载到网格上。我曾尝试使用 blit 功能,但它不会将图像放到网格上。

RedInfantry= pygame.image.load("H:\computer science\6.2\Coursework\Week\Red team\InfantryRedV20.gif").convert()


while True:
    Background.blit(RedInfantry,(0,0))

如果我将图像变成精灵,它是否允许我移动和删除网格上的图像? 我是否必须在图像中创建网格才能将其他图像粘贴到它上面。

The infantry image that i would like to use

【问题讨论】:

    标签: python image pygame sprite


    【解决方案1】:

    创建一个网格:

    grid = [[None for i in range(0, 900, 50)] for j in range(0, 900, 50)]
    

    将图像分配给网格中的字段。例如:

    grid[3][2] = RedInfantry
    

    在应用循环的网格中绘制图像:

    for i in range(len(grid)):
        for j in range(len(grid[i])):
            x, y = i * 50, j * 50
            image = grid[i][j]
            if image != None:
                Background.blit(RedInfantry,(x, y))
    

    此外,我建议在主应用程序循环中连续绘制整个场景:

    import pygame 
    pygame.init()
    
    Background = pygame.display.set_mode((900 ,900))
    Green = (45,198,14)
    
    RedInfantry = pygame.Surface((50, 50))
    RedInfantry.fill((255, 0, 0))
    
    grid = [[None for i in range(0, 900, 50)] for j in range(0, 900, 50)]
    grid[3][2] = RedInfantry
    
    run = True
    while run:
        # handle events
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
    
        # draw background
        Background.fill(Green)
    
        # draw scene
        for i in range(0, 900, 50):
            pygame.draw.line(Background, (0, 0, 0), (0, i), (900, i))
            pygame.draw.line(Background, (0, 0, 0), (i, 0), (i, 900))
        for i in range(len(grid)):
            for j in range(len(grid[i])):
                x, y = i * 50, j * 50
                image = grid[i][j]
                if image != None:
                    Background.blit(image,(x, y))
    
        # update dispaly
        pygame.display.update()
    

    【讨论】:

    • 即使我使用命令 pygame.image.load("H:\computer science\6.2\Coursework\Week\Red team\InfantryRedV20.gif),我也无法将红色方块转换为图像") 应该用图像替换红色方块
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多