从Pygame中的表面数据创建墙

时间:2015-05-08 13:53:31

标签: pygame surface

我是python语言和pygame的新手,我正在尝试创建一个函数,它将2D黑白图像中的数据转换为玩家可以或不可以移动的区域。换句话说:我想拍摄一个我在图形程序中绘制的迷宫,并使用pygame来插入黑白图像,这样玩家类对象可以移动到表面包含(255, 255, 255)字节的任何地方,并且无法移动表面包含(0, 0, 0)的字节首先我需要能够获取数据。到目前为止我所拥有的是。

def GetMaze(M):
     Get = M.get_view('2')
     Sep = Get.raw

在此函数中,M表示迷宫('Maze.bmp')的黑白位图。我知道到目前为止我将获取非结构化字节块中的字节。我需要这个函数做的是将字节迭代到字母等于(255, 255, 255)的楼层列表和它们等于(0, 0, 0)的墙壁,但我无法弄清楚如何将它带到那一点。 / p>

1 个答案:

答案 0 :(得分:0)

使用此处的代码http://www.petercollingridge.co.uk/book/export/html/550

import sys, pygame
from pygame.locals import *

screen = pygame.display.set_mode((200,200))
imgsurf = pygame.Surface((200,200))

def init():

    global mazearray
    mazeimg = pygame.image.load("maze.bmp")
    mazearray = pygame.surfarray.array3d(mazeimg)


def update():

    global mazearray

    screen.fill((0,0,0))
    imgsurf.fill((255,255,255))

    for x in range(200):
        for y in range(200):
            if mazearray[x][y][0] == 0 and mazearray[x][y][1] == 0 and mazearray[x][y][2] == 0:
                pygame.draw.rect(imgsurf, (0,0,0), (x,y,2,2))

    screen.blit(imgsurf, (0,0))
    pygame.display.flip()


if __name__=="__main__":
    init()
    update()

    while True:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.QUIT:
                sys.exit()

        keys=pygame.key.get_pressed()

        if keys[K_q]:
            sys.exit()

显然你需要改变迷宫的大小。另外,我用GIMP手绘了迷宫,所以线条很不稳定,所以它画的迷宫很不稳定。