Pygame像素阵列提供奇怪的颜色并立即冻结

时间:2017-01-13 23:29:52

标签: python numpy pygame pygame-surface

我正在尝试使用numpy.roll()水平滚动世界地图 pygame中的pixels2d对象。

这是我正在使用的图片,但是在.bmp:image1

这就是我得到的:image2

我尝试更改np.roll()的轴,但它似乎没有太大影响结果。

我做错了什么?

这是我的代码:

import pygame as pg, numpy as np

pg.init()

world_map = pg.image.load('Miller.bmp')

screen = pg.display.set_mode(world_map.get_size())

world_map = pg.surfarray.pixels2d(world_map)


while 1:
    np.roll(world_map,1)
    screen.blit(pg.surfarray.make_surface(world_map), (0,0))
    pg.display.flip()
    pg.time.wait(1000)

1 个答案:

答案 0 :(得分:0)

以下是在此repository from furas

的帮助下修改后的代码
import pygame as pg

clock = pg.time.Clock()

pg.init()

world_map = pg.image.load('Miller.bmp')
w, h = world_map.get_size()
screen = pg.display.set_mode(world_map.get_size())

FPS = 60
offset = 0
is_running = True
while is_running:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            is_running = False
        elif event.type == pg.KEYDOWN:
            if event.key == pg.K_ESCAPE:
                is_running = False

    offset += 1

    if offset >= w:
        offset = 0

    screen.blit(world_map, (0,0), (offset, 0, w, h))
    screen.blit(world_map, (w-offset,0), (0, 0, offset, h))

    pg.display.flip()
    clock.tick(FPS)

pg.guit()