2026年深圳首台(套)重大技术装备扶持计划申报指南

2026年深圳首台(套)重大技术装备扶持计划申报指南 以下是基于 Python Pygame 实现的完整俄罗斯方块游戏代码包含核心功能方块生成、移动、旋转、消除、计分注释详细可直接运行第一步安装依赖先安装 Pygame 库pip install pygame第二步完整代码import pygameimport random# 初始化Pygamepygame.init()# 游戏常量SCREEN_WIDTH 300 # 屏幕宽度SCREEN_HEIGHT 600 # 屏幕高度BLOCK_SIZE 30 # 方块大小像素GRID_WIDTH SCREEN_WIDTH // BLOCK_SIZE # 网格列数10列GRID_HEIGHT SCREEN_HEIGHT // BLOCK_SIZE # 网格行数20行# 颜色定义RGBBLACK (0, 0, 0)WHITE (255, 255, 255)GRAY (128, 128, 128)COLORS [(0, 255, 255), # 青色I型(0, 0, 255), # 蓝色J型(255, 165, 0), # 橙色L型(255, 255, 0), # 黄色O型(0, 255, 0), # 绿色S型(128, 0, 128), # 紫色T型(255, 0, 0) # 红色Z型]# 俄罗斯方块7种形状0空1方块SHAPES [[[1, 1, 1, 1]], # I型横[[1, 0, 0], [1, 1, 1]], # J型[[0, 0, 1], [1, 1, 1]], # L型[[1, 1], [1, 1]], # O型正方形[[0, 1, 1], [1, 1, 0]], # S型[[0, 1, 0], [1, 1, 1]], # T型[[1, 1, 0], [0, 1, 1]] # Z型]# 屏幕设置screen pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))pygame.display.set_caption(俄罗斯方块)# 时钟控制游戏帧率clock pygame.time.Clock()FPS 10# 字体设置计分板font pygame.font.Font(None, 36)class Tetromino:方块类管理单个下落的俄罗斯方块def __init__(self):self.shape random.choice(SHAPES) # 随机选择形状self.color random.choice(COLORS) # 随机选择颜色self.x GRID_WIDTH // 2 - len(self.shape[0]) // 2 # 初始X位置居中self.y 0 # 初始Y位置顶部def rotate(self):旋转方块矩阵转置逆序# 转置矩阵rotated list(zip(*self.shape[::-1]))# 转换为列表格式self.shape [list(row) for row in rotated]def draw(self):绘制方块到屏幕for y, row in enumerate(self.shape):for x, cell in enumerate(row):if cell:# 计算方块在屏幕上的实际坐标screen_x (self.x x) * BLOCK_SIZEscreen_y (self.y y) * BLOCK_SIZE# 绘制方块带边框pygame.draw.rect(screen, self.color, (screen_x, screen_y, BLOCK_SIZE - 1, BLOCK_SIZE - 1))http://my.tv.sohu.com/us/255415869/707082797.shtmlhttp://my.tv.sohu.com/us/255415869/707082865.shtmlhttp://my.tv.sohu.com/us/255415869/707082790.shtmlhttp://my.tv.sohu.com/us/255415869/707083010.shtmlhttp://my.tv.sohu.com/us/255415869/707082699.shtmlhttp://my.tv.sohu.com/us/255415869/707082847.shtmlhttp://my.tv.sohu.com/us/255415869/707082845.shtmlhttp://my.tv.sohu.com/us/255415869/707082597.shtmlhttp://my.tv.sohu.com/us/255415869/707082840.shtmlhttp://my.tv.sohu.com/us/255415869/707082766.shtmlhttp://my.tv.sohu.com/us/255415869/707082584.shtmlhttp://my.tv.sohu.com/us/255415869/707082763.shtmlhttp://my.tv.sohu.com/us/255415869/707082677.shtmlhttp://my.tv.sohu.com/us/255415869/707082829.shtmlhttp://my.tv.sohu.com/us/255415869/707082755.shtmlhttp://my.tv.sohu.com/us/255415869/707082752.shtmlhttp://my.tv.sohu.com/us/255415869/707082751.shtmlhttp://my.tv.sohu.com/us/255415869/707082824.shtmlhttp://my.tv.sohu.com/us/255415869/707082663.shtmlhttp://my.tv.sohu.com/us/255415869/707082662.shtmlhttp://my.tv.sohu.com/us/255415869/707082661.shtmlhttp://my.tv.sohu.com/us/255415869/707082817.shtmlhttp://my.tv.sohu.com/us/255415869/707082747.shtmlhttp://my.tv.sohu.com/us/255415869/707082654.shtmlhttp://my.tv.sohu.com/us/255415869/707082808.shtmlhttp://my.tv.sohu.com/us/255415869/707082548.shtmlhttp://my.tv.sohu.com/us/255415869/707082498.shtmlhttp://my.tv.sohu.com/us/255415869/707082738.shtmlclass Game:游戏主类管理网格、碰撞检测、计分def __init__(self):self.grid [[BLACK for _ in range(GRID_WIDTH)] for _ in range(GRID_HEIGHT)] # 游戏网格初始全黑self.current_tetromino Tetromino() # 当前下落的方块self.score 0 # 分数self.game_over False # 游戏结束标志def draw_grid(self):绘制游戏网格已落地的方块for y in range(GRID_HEIGHT):for x in range(GRID_WIDTH):pygame.draw.rect(screen, self.grid[y][x], (x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE - 1, BLOCK_SIZE - 1))def check_collision(self, tetromino, dx0, dy0, rotatedFalse):检测碰撞dxX偏移dyY偏移rotated是否旋转后的形状shape tetromino.shapeif rotated:# 临时计算旋转后的形状shape [list(row) for row in zip(*shape[::-1])]for y, row in enumerate(shape):for x, cell in enumerate(row):if cell:# 计算偏移后的坐标new_x tetromino.x x dxnew_y tetromino.y y dy# 碰撞条件超出左右边界、超出下边界、碰到已落地的方块if (new_x 0 or new_x GRID_WIDTH ornew_y GRID_HEIGHT or(new_y 0 and self.grid[new_y][new_x] ! BLACK)):return Truereturn Falsedef lock_tetromino(self):将落地的方块锁定到网格中for y, row in enumerate(self.current_tetromino.shape):for x, cell in enumerate(row):if cell:grid_y self.current_te