繁体   English   中英

PyGame 零中的透明矩形

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM