Python 实现俄罗斯方块源码分享(Pygame 版)
功能包括方块移动、旋转、加速下落、一键落底、消行计分、游戏结束判定。1、核心逻辑说明方块数据:总共有 7 种游戏方块,每种方块用二维列表保存,列表中 1 代表方块占用的格子,0 代表空白位置。碰撞判断:方块每次移动前做校验,既要判断会不会跑出左右和底部边界,也要检查是否撞上已经堆好的方块,一旦有冲突就不允许这次移动。方块旋转:利用矩阵反转、转置的方式实现方块顺时针旋转 90 度。旋转完成后如果检测到碰撞,就放弃本次旋转,方块维持原来形态。方块落地:方块向下移动碰到障碍物无法继续下落,就把这个方块的数据写入游戏网格数组,将方块固定在游戏区域内。消除整行:逐行扫描游戏网格,当某一行全部被方块填满,就删除这一行。该行删掉后,上面所有的行会向下下落,在最顶部补充空行,同时累计游戏分数。游戏结束判断:生成新方块的瞬间就发生碰撞,说明方块已经堆积到游戏区域的最顶端,判定游戏结束。2、操作按键功能← / →方块左右移动↑方块顺时针旋转↓加速向下移动一格空格直接落到底部关闭窗口退出游戏3、需安装依赖-pygamepip install pygame4、附上完整可运行代码import pygame import random # -------------------------- 常量配置 -------------------------- BLOCK_SIZE = 30 # 每个方块像素大小 COLS = 10 # 游戏区域列数 ROWS = 20 # 游戏区域行数 WINDOW_WIDTH = BLOCK_SIZE * COLS + 200 # 总窗口宽度(右侧预留分数区域) WINDOW_HEIGHT = BLOCK_SIZE * ROWS # 颜色定义 R G B BLACK = (0, 0, 0) WHITE = (255, 255, 255) GRAY = (40, 40, 40) RED = (255, 0, 0) CYAN = (0, 255, 255) BLUE