You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame实现俄罗斯方块布局代码异常:仅显示背景无网格方块问题求助

为什么Pygame俄罗斯方块的网格方块不显示?

嘿,我来帮你排查这个问题!你说运行代码后只有矢车菊蓝色背景和正确的标题窗口,但预期的黑色网格方块完全没出现,问题主要出在这几个地方:

1. 循环范围完全写反了

你写的for x in range(settings.screen_tile_width * 50, 50)和for y in range(settings.screen_tile_height * 50, 50)彻底搞反了range的参数逻辑!Pygame里的range(start, stop)默认是从start往stop以步长1遍历,你这里start是500(10*50),stop是50,start比stop大,步长为正的话,这个循环根本不会执行,自然不会生成任何黑色方块。

2. Surface创建的参数格式错误

创建方块Surface的时候,你写的是pygame.Surface(50, 50),但Pygame要求Surface的尺寸必须是一个元组,正确写法是pygame.Surface((50, 50))。不过因为前面的循环没执行,这个错误暂时没暴露出来,一旦循环正常运行,就会直接抛出异常。

3. 循环内的绘制逻辑混乱

你在内部循环里每次都遍历整个surfers列表去blit,而且step的位置也不对,这会导致重复绘制,不仅效率极低,还会让逻辑变得一团糟。


修正后的代码

我把这些问题都修复了,你可以直接运行试试:

import settings
import pygame
from sys import exit

pygame.init()
# 预先计算窗口尺寸,避免重复计算
tile_size = 50
screen_width = settings.screen_tile_width * tile_size
screen_height = settings.screen_tile_height * tile_size

screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption(settings.screen_title)
bg = pygame.Surface((screen_width, screen_height))
bg.fill("cornflower blue")
clock = pygame.time.Clock()

# 提前创建一个黑色方块Surface,不用每次循环都新建,节省资源
black_tile = pygame.Surface((tile_size, tile_size))
black_tile.fill("Black")

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    
    screen.blit(bg, (0, 0))
    
    # 正确的循环逻辑:遍历每个网格的行列索引,再计算对应坐标
    for col in range(settings.screen_tile_width):
        for row in range(settings.screen_tile_height):
            x = col * tile_size
            y = row * tile_size
            # 直接绘制预先创建好的黑色方块
            screen.blit(black_tile, (x, y))
    
    pygame.display.update()
    clock.tick(60)

修正说明

  • 把循环改成遍历网格的行列索引(从0到9,对应10个格子),再通过索引* tile尺寸计算每个方块的坐标,逻辑更清晰
  • 提前创建一个黑色方块Surface,避免每次循环重复创建,节省系统资源
  • 修正了Surface创建的参数格式,把50,50改成符合要求的元组(50,50)
  • 去掉了冗余的surfers列表和step变量,直接在循环里绘制每个方块,代码更简洁易懂

内容的提问来源于stack exchange,提问作者AdamGewely

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:07:42