第 1 次大作业进展报告
2/21/25About 3 min
Warning
This content was generated by AI.
AI can make mistakes. Check important info.
实现三阶魔方的操作与动画
问题
请编写带有图形界面的普通三阶魔方模拟程序.
要求:
- 实现平移、放大、缩小和自适应大小的魔方展示功能.
- 请自定义编码表示魔方的各种可能操作, 每种编码表示其中 1 种操作.
- 实现打开文本文件的功能, 该文本文件由一系列编码组成, 对应魔方操作.
- 实现魔方操作功能: 可以交互实现每个操作, 也可以通过动画自动播放魔方的系列操作.
- 在操作或转动魔方时, 必须以动画的形式展示, 从而方便看清如何操作或转动.
- 可以保存魔方操作, 保存结果是由一系列编码组成文本文件.
- 编写文档详细介绍模拟算法与图形界面等内容.
参考:
- 雍俊海. 清华教授的小课堂魔方真好玩. 北京: 清华大学出版社.
设计
魔方渲染
魔方由 3 x 3 x 3 个小正方体组成, 每个小正方体有 6 个面.
对于暴露在外的面, 我们可以赋予相应的颜色, 以便区分.
自适应大小与缩放
- 自适应大小: 根据窗口大小自动调整魔方的显示比例, 确保魔方始终在窗口内完整显示.
- 放大与缩小: 通过鼠标滚轮或键盘快捷键实现魔方的放大与缩小, 调整视角以更好地观察魔方.
魔方操作编码
操作编码定义
为了简化魔方操作的表示, 我们为每个操作定义一个唯一的编码.
编码由两部分组成: 操作类型和操作方向.
- 操作类型:
F: 前面旋转B: 后面旋转U: 上面旋转D: 下面旋转L: 左面旋转R: 右面旋转
- 操作方向:
1: 顺时针旋转 90 度2: 顺时针旋转 180 度3: 逆时针旋转 90 度
例如, F1 表示前面顺时针旋转 90 度, R3 表示右面逆时针旋转 90 度.
操作编码示例
F1: 前面顺时针旋转 90 度B2: 后面顺时针旋转 180 度U3: 上面逆时针旋转 90 度D1: 下面顺时针旋转 90 度L2: 左面顺时针旋转 180 度R3: 右面逆时针旋转 90 度
魔方操作功能
键盘输入映射
将键盘按键映射到魔方操作, 用户可以通过按下特定按键来执行魔方操作.
例如:
F: 前面旋转B: 后面旋转U: 上面旋转D: 下面旋转L: 左面旋转R: 右面旋转
结合 Shift 键可以实现逆时针旋转, 例如 Shift + F 表示前面逆时针旋转 90 度.
文件操作
- 打开文件: 用户可以打开一个包含魔方操作编码的文本文件, 程序将自动解析文件中的操作并依次执行.
- 保存文件: 用户可以将当前的操作序列保存为文本文件, 文件内容为一系列操作编码.
动画实现思路
魔方旋转的动画效果可以通过将所要旋转的 3 x 3 个方块绕某点连续旋转来实现. 每次旋转一小步 (根据帧率确定), 并在每一步之后重新渲染整个魔方, 从而形成连续的动画效果.