[英]Transparent rectangles in PyGame Zero
我正在使用screen.draw.rect()
绘制 PyGame 为零的矩形。 它们将用作游戏中的碰撞 map。 我无法弄清楚如何使它们透明。 我能找到的唯一文档是标准 PyGame 库,它略有不同,但足以让它无法工作。
import pgzrun
TILE_SIZE = 64
TILES_WIDE = 8
TILES_HIGH = 8
WIDTH = TILE_SIZE * TILES_WIDE
HEIGHT = TILE_SIZE * TILES_HIGH
tiles = ["empty", "wall", "water"]
mapSheet = [
[0, 1, 1, 1, 1, 1, 1, 0],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 1, 1, 1, 1, 1, 0]
]
def draw():
screen.clear()
for rows in range(TILES_HIGH):
for cols in range(TILES_WIDE):
x = cols * TILE_SIZE
y = rows * TILE_SIZE
if mapSheet[rows][cols] == 1:
mybox = Rect((x, y), (TILE_SIZE, TILE_SIZE))
screen.draw.rect(mybox, (255, 255, 255))
# Start
pgzrun.go()
按照上面 Rabbid76 提供的链接,我修改了代码并将其包含在下面。 这将创建 50% 透明的矩形。
import pgzrun
import pygame
TILE_SIZE = 64
TILES_WIDE = 8
TILES_HIGH = 8
WIDTH = TILE_SIZE * TILES_WIDE
HEIGHT = TILE_SIZE * TILES_HIGH
tiles = ["empty", "wall", "water"]
mapSheet = [
[0, 1, 1, 1, 1, 1, 1, 0],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 1, 1, 1, 1, 1, 0]
]
def draw():
screen.clear()
alphaSurface = pygame.Surface((TILE_SIZE, TILE_SIZE))
for rows in range(TILES_HIGH):
for cols in range(TILES_WIDE):
x = cols * TILE_SIZE
y = rows * TILE_SIZE
if mapSheet[rows][cols] == 1:
alphaSurface.set_alpha(128) # Set transparency
alphaSurface.fill((255, 255, 255))
screen.blit(alphaSurface, (x,y))
# Start
pgzrun.go()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.