首页 > 解决方案 > 为什么 rect 参数在 pygame 填充中不起作用?

问题描述

在模块 pygame 中Surface.fill有一个名为rect=[].

在我的代码中,我正在加载一个 8×8 像素的水,水位可调。1 到 8 像素高。

for x in range(len(screen)):
    for y in range(len(screen[x])):
        if screen[x][y] == 0:
            box.fill((0,0,0))
        elif screen[x][y] == 9:
            box.fill((255,255,255))
        else:
            box.fill((0,0,255), rect = [x*8,y*8+8-screen[x][y],8,screen[x][y]])
        window.blit(box, (x*8,y*8))

boxpygame.Surface((8,8))

screen列表是整个屏幕

我正在使用screen列表来绘制整个屏幕,使用的值来自0to9,其中9是一个坚实的平台,8to1是水位,0什么都不是

此代码将每个screen值作为 8×8 像素(0to9)类型加载。(因为我使用的是 8×8 像素,所以列表长 100,我的屏幕长 800 像素,因此 *8)。

box.fill我用蓝色填充的部分中box,我使用rect参数来绘制rect8长和水位或screen值高)的大小,并将其放置在(x*8前面解释的公式)y*8并添加8-screen[x][y]向下移动矩形,使水项处于适当的高度。

我的问题是,水像素没有加载。

标签: pythonpygame

解决方案


rect 参数是在表面上填充一个区域,你试图填充 8x8 大的表面,在第一个像素块处,它可以正常工作,因为 0*8 是 0,但是当你到达第二个像素块时,它的试图在 x 轴上的 8-16 处填充,而不是在 8x8 框上,您希望从 0(在 x 轴上)开始。

box.fill((0,0,255), rect=(0,8-screen[x][y],8,screen[x][y]))

推荐阅读