一. 完整视频演示
欢迎关注 微信公众号 FPGA之旅 回复 FPGA俄罗斯方块 获取完整代码哦。
如果觉得不错的话,欢迎给点个赞哦。
地址 :完整视频演示
在这个项目中,主要介绍一下两个功能 : 1. 当前图形的移动,旋转。 2. 地图的存储以及消行。这两个功能介绍完成后,也预示着本项目顺利结束,需要完整项目的话,可以自行获取哦。
二. 当前图形的移动,旋转
通过上一篇文章中的下一个图形的数据,传到当前图形中,我们就可以对这四个方块进行我们想要的操作啦。
下落 : 下落其实就是方块的y值加一,每隔一定的时间,定时器产生一个使能信号即可。
左右移动: 通过按键的输入,将方块的x值加一或者减一即可。这里也要注意是否达到了地图的边界,否则不能移动。
旋转 :这一部分如果用算法来的话,是比较复杂的。这使用暴力的方法,将每一个图形的坐标旋转的变化量都计算出来,然后写入代码中就可以了,这样使得代码就有点大了,不过没事,可以实现效果(#.#)。如下操作,图形3的每一次旋转的坐标变化都计算出来。
三. 地图的存储以及消行
当当前图形在移动的过程中,碰到了地图中的方块的时候,就将当前图形存入地图中,并且更新下一个图形。然后当一行全部存储方块后,就继续消行,当前行的值等于上一行。每一行都进行这个操作。
1.地图的大小为10*20,这里用一个memory的类型存储即可,reg[9:0] Row[19:0]。初始值全部都为0,如果值为1的话,就表示当前位置存储了方块。
2.利用当前图形,如果当前图形移动到了地图的最后一行,后者碰到了存储中的方块的话,就将当前图形的数据存入地图中。
3.如果一行中,全部存储了数据的话,就将其进行消行处理。每一行都进行这个处理。
4.完整的rtl图如下
以上就完全介绍了俄罗斯方块。觉得可以都话,可以给点个赞哦。
最后 欢迎关注 微信公众号 FPGA之旅 回复 FPGA俄罗斯方块 获取完整代码哦。
公众号:FPGA之旅