经典游戏与实用工具的编程实现:俄罗斯方块与手册查看器
1. 俄罗斯方块游戏设计与实现
1.1 设计思路
1.1.1 用户界面设计
俄罗斯方块的屏幕布局较为简单,主要由“开始/暂停”和“退出”两个按钮、用于图形显示的画布以及包含这些元素的主窗口构成。网格和方块在画布上绘制,每个方块由多个方形瓷砖组成,作为一个整体移动,堆也是类似的瓷砖集合,每个瓷砖都是一个画布项。为避免动画闪烁,采用双缓冲技术,而画布小部件本身已实现双缓冲,因此可直接移动画布项。
1.1.2 数据结构设计
方块和堆的每个瓷砖都包含两个信息:网格上的位置(单元格)和画布小部件给定的 ID。位置可以用行和列表示,也可以用单元格索引(行 * 网格列数 + 列)表示。方块用数组 @block_cells
表示,每个元素包含对应瓷砖占用的单元格编号;数组 @tile_ids
包含代表该位置方块瓷砖的画布小部件项的 ID。堆的组织方式不同,数组 @heap
包含与网格中单元格数量相同的元素,元素可以是未定义的,也可以包含属于堆的瓷砖的画布项 ID。
1.2 实现细节
1.2.1 主程序逻辑
主程序主要调用 init()
和 MainLoop()
两个函数。 init
函数创建屏幕、设置按键绑定并配置定时器调用 tick
函数。
1.2.2 核心函数实现
-
<