本项目效果如图
动画过程已投稿b站:https://www.bilibili.com/video/av88671119
目录
一、思路分析
二、手动拼图
三、自动拼图
四、动画展示
======================= 大爽歌作,made by big shuang =======================
一、思路分析
0、项目介绍
如最上面的图所示,本项目实际上就是通过俄罗斯方块拼出一个爱心的形状
具体拆分成三步
- 1 - 画出个爱心的形状
- 2 - 用俄罗斯方块拼起来
- 3 - 展示过程动画
1、画出个爱心的形状
这一步主要是手动实现的,即手动去做出能够表示一个爱心的二维列表(矩阵)
一个由方格块组成的爱心形状如图
其中轻灰色的方格用0表示,粉红色的方格用1表示
则迷宫文本如下,建议将文本保存到一个txt里面
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
ps1:我的项目里面保存的名字是love3.txt,你也可以起别的名字,不过后面记得调用的时候要替换
ps2:爱心中的粉红色的方格的数量必须是4的倍数,原因见下文
2 - 用俄罗斯方块拼起来
要用如下其中俄罗斯方块把这个爱心拼起来
图中7种俄罗斯方块的方格数都是4的倍数,
所以要让他们能够拼出一个爱心的话,
爱心的方格数量也必须是4的倍数
这里可以看成一个方格拼图问题
解决这个问题有两种方法
一种是通过算法去实现 - 本人使用的是回溯法
一种是手动实现 - 自己试出拼法
这里比较下两种方法
通过算法去实现
优点: 省事,对所有符合要去的爱心文本都可以找到
缺点: 不能自主选择,很容易出现老是用单一种的俄罗斯方块拼慢很多区域的情况,以及有的种类的俄罗斯方块则没有被用到,容易显得单调不丰富
补充: 但是由于本人使用的是回溯法,执行算法特别耗时间(执行出结果大概花了半个小时)
手动去实现
单纯手动的去实现非常麻烦
这里我做一个gui辅助手动去实现
优点: 可以自己选择
缺点: 费时间,换一种爱心文本就要再去手动找一次
补充: 但是由于本人使用的是回溯法,执行算法特别耗时间
3、做个gui去动态展示
TODO