我是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>
答案 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手绘了迷宫,所以线条很不稳定,所以它画的迷宫很不稳定。