以下是基于 Python + Pygame 实现的完整俄罗斯方块游戏代码,包含核心功能(方块生成、移动、旋转、消除、计分),注释详细可直接运行:
第一步:安装依赖
先安装 Pygame 库:
pip install pygame
第二步:完整代码
import pygame
import random
初始化Pygame
pygame.init()
游戏常量
SCREEN_WIDTH = 300# 屏幕宽度
SCREEN_HEIGHT = 600# 屏幕高度
BLOCK_SIZE = 30# 方块大小(像素)
GRID_WIDTH = SCREEN_WIDTH // BLOCK_SIZE# 网格列数(10列)
GRID_HEIGHT = SCREEN_HEIGHT // BLOCK_SIZE# 网格行数(20行)
颜色定义(RGB)
BLACK = (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_SIZE
screen_y = (self.y + y) * BLOCK_SIZE
# 绘制方块(带边框)
pygame.draw.rect(screen, self.color, (screen_x, screen_y, BLOCK_SIZE - 1, BLOCK_SIZE - 1))
class 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, dx=0, dy=0, rotated=False):
\"\"\"检测碰撞:dx=X偏移,dy=Y偏移,rotated=是否旋转后的形状\"\"\"
shape = tetromino.shape
if 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 + dx
new_y = tetromino.y + y + dy
# 碰撞条件:超出左右边界、超出下边界、碰到已落地的方块
if (new_x < 0 or new_x >= GRID_WIDTH or
new_y >= GRID_HEIGHT or
(new_y >= 0 and self.grid[new_y][new_x] != BLACK)):
return True
return False
def 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
本文来源于汽车之家:club.autohome.com.cn/bbs/thread/e3a41d80912f349d/114994572-1.html
club.autohome.com.cn/bbs/thread/027bf905d3104835/114994556-1.html
club.autohome.com.cn/bbs/thread/b41d7118c64402be/114994528-1.html
如有侵权请告知删除
发表于 04-29 12:34
随着5G、物联网、云计算等技术的快速发展,未来网络通信正朝着更高速度、更大容量、更低延迟的方向迈进。在这一背景下,配线架作为网络通信的基础设施之一,也面临着智能化升级的挑战与机遇。本文将探讨配线架
发表于 04-09 10:41
•302次阅读
在当今这个信息爆炸的时代,网络通信如同城市的血脉,连接着每一个角落,让数据与信息得以高效流通。而在这一复杂而精密的网络体系中,配线架作为不可或缺的组成部分,扮演着至关重要的角色。它虽不常被直接提及
发表于 04-09 10:31
•244次阅读
从OSI七层到WiMi-net五层,经典理论如何落地?本文深度拆解WiMi-net有中心自组网协议栈的五层架构:物理层(Sub-GHz射频)
发表于 04-02 17:40
•1861次阅读
,带你快速理解OSI七层的核心思想——分层。从物理层到应用层,每一层负责什么?为什么说它是网络通信
发表于 03-16 09:41
•480次阅读
在当今数字化时代,网络通信已成为人们日常生活和工作中不可或缺的一部分。无论是家庭宽带接入、企业办公网络,还是数据中心的高速互联,都离不开稳定可靠的网络传输介质。UTP CAT5e网线,作为一种
发表于 03-11 10:16
•666次阅读
近日,一站式IP和芯片定制赋能型领军企业——芯动科技宣布,与国内全栈网络通信芯片和解决方案提供商——雄立科技携手合作的高性能100G网络通信芯片,一次流片成功,实现规模化量产商用。
发表于 02-05 09:46
•1071次阅读
全双工网状网络通信实现真正的同步双向语音、八路并发传输、长达7公里 LoRa 链路、动态路由与自组织 SON 架构,提供低延迟、高可靠性与强覆盖的专业无线通信解决方案。
发表于 12-04 10:30
•1801次阅读
,这些技术使得5G网络能够满足未来物联网、智能制造、自动驾驶等领域对高速、低时延、高可靠性的通信需求。
5G网络通信有哪些技术痛点?
5G网络通信经过多年的高速发展,仍有一些技术痛点
发表于 12-02 06:05
通过实践,本文总结了构建CNN网络模型并优化的一般化建议,这些建议将会在构建高准确率轻量级CNN神经网络模型方面提供帮助。
1)避免单层神
发表于 10-28 08:02
(电子控制单元)进行深度交互。在车辆全生命周期中,UDS支撑着故障排查、软件刷写、传感器校准等核心操作,其分层架构将复杂功能拆解到OSI模型的各层协作实现。偌大的城市车流不息,面对繁
发表于 09-10 10:03
•7290次阅读
了一套常见问题汇总。 一、OSI参考模型与TCP/IP参考模型 基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络
发表于 08-13 13:40
•1186次阅读
在现代分布式系统和云计算架构中,负载均衡(Load Balancing, LB)是确保高可用性、可扩展性和性能优化的关键技术。负载均衡器根据不同的OSI模型层级工作,主要分为四层(L4)和七层
发表于 05-29 17:42
•1602次阅读
评论