python - 为什么 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))
box
是pygame.Surface((8,8))
screen
列表是整个屏幕
我正在使用screen
列表来绘制整个屏幕,使用的值来自0to9
,其中9
是一个坚实的平台,8to1
是水位,0
什么都不是
此代码将每个screen
值作为 8×8 像素(0to9
)类型加载。(因为我使用的是 8×8 像素,所以列表长 100,我的屏幕长 800 像素,因此 *8)。
在box.fill
我用蓝色填充的部分中box
,我使用rect
参数来绘制rect
(8
长和水位或screen
值高)的大小,并将其放置在(x*8
前面解释的公式)y*8
并添加8-screen[x][y]
向下移动矩形,使水项处于适当的高度。
我的问题是,水像素没有加载。
解决方案
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]))
推荐阅读
- javascript - 如何将正确答案放在建议的答案中?(简单的方程式测验)
- apache-kafka - 无法建立 Kafdrop (localhost/127.0.0.1:9092)。经纪人可能不可用
- confluence - Confluence 用户宏获取电子邮件地址
- c# - 彼此独立地执行作业
- python - 让 Celery 工作人员离线但 active=1 是什么意思?
- python - 将全局变量输入的值更改为定义的函数
- java - java.lang.AbstractMethodError:org.apache.cxf.transport.http.asyncclient.AsyncHTTPConduitFactory.createConduit
- javascript - TypeError:无法读取 null 的属性“memberCount”
- python - 如何使函数检查字符串中有多少个辅音或元音?
- oracle - 如何增加 Oracle Reports 6i 中显示的行数?