吉林大学仪电学院
可编程器件实习
自主设计开题报告
姓名:高辉
学号题目:基于可编程器件的flappy bird设计
目录:
第一部分
1. 摘要
2. 内容要求
3. 方案的设计与论证
第二部分
总体设计
各模块设计
实验板外围电路设计
第三部分
波形仿真
第四部分
结论
第一部分
摘要
flappy bird是最近由一名越南游戏开发者设计的一款手机游戏,该游戏画面风格简单,易于操作,但是难度很大,一经推出就风靡全球。这个游戏也启发了我可以用点阵来实现,尽管和原版在画面上相差很大,但基本符合游戏的风格和规则。该游戏是在我和同学讨论中同学提到的,当初我们想设计贪吃蛇和一些其它的游戏,但是最后还是觉得这个游戏最好实现。这个游戏从开始设计到最后调试成功一共用了一天半的时间,期间也不是十分顺利,多亏了同学的帮助。
内容要求
游戏主体由两部分组成:一部分是一只飞翔的小鸟,在重力的作用下会自由下落,当按动按键时小鸟会向上飞,由于像素的限制小鸟在点阵中显示为一个点。另一部分是匀速向左移动的障碍物,中间是缝隙,以供小鸟飞过去。游戏规则:玩家控制小鸟飞翔穿过障碍物,每过一个障碍物就会得一分,数码管上记录的分数就会加一。如果小鸟撞到障碍物上红灯就会亮。
3. 方案的设计与论证
要想达到该游戏效果,主要分几步来完成。首先我先设计好障碍物,然后加入滚动程序,效果是六个一循环,一开始有一段空白。然后加入小鸟,小鸟在游戏中实际上时左右不动只上下动,因此在画面中只有16种情况,我将这16种情况都列举出来,这也为以后的功能实现提供了方便。之后我又加入了小鸟上下移动的控制程序,上述工作还算顺利,只用了一下午的时间。第二天上午想加入小鸟死亡的判断程序,但是我试了好几种方法都不好使,很多时候是游戏一开始就判断小鸟死亡,后来我只好先放弃这个去做计分程序,但是也不顺利。我想采用均匀计分的方式使数码管的数字增加,但是由于一开始有一段空白,使得计分需要延迟,所以总是出错,即使我调了很多次频率,也不对,最气人的是我发现它根本就没什么规律,于是上午什么都没做就过去了。下午我还是先做计分程序,调来调去,最后还算将就达到效果,它是每次刚刚到达障碍物就计一分。最后继续做死亡程序,这次我采用每一列判断一次的方法,大约有48种情况,结合前面小鸟位置的程序,终于成功了。
需要改进的地方:1.计分程序
2.死亡后游戏不能结束
第二部分
1. 总体设计
该游戏需要用到开发板,芯片为MAX系列的EPM570T100C5,用来显示的电路板,包括16×16点阵,八段共阳极数码管2个,红色发光二极管1个,按键1个。
2. 各模块设计
本设计采用VHDL语言,主要用到6个process,包括:分频程序,计分程序,滚动程序,上下移动程序,计算程序(将分数转化为十位和个位用于数码管显示),数码管显示程序,死亡判断程序。
3. 实验板外围电路设计
数码管为八段共阳极,型号为LG5641BH,电路板上是将两块焊接在一起,一共八个,接10个输出。16×16点阵型号为LG7088BH﹣W,电路板上是将四块8×8点阵焊接在一起,接32个输出。发光二极管一段接负极,另一端接输出。按键一端接负极,一端接输入。
第三部分
1. 波形仿真
采用QuartusII软件进行波形仿真,结果如下:
第四部分
1. 结论
通过这次实习我学到了很多东西,开始对VHDL语言不是很熟练的我通过这段时间的练习已经可以自己编一些小程序了,当看到自己设计的东西好用后就会特别有成就感,也别是这次自主设计的flappy bird,开始我还觉得不太可能做到,但是当我真正开始设计的时候发现也不是很难,这也给了我很大的信心。这次设计的这个游戏虽然有点简陋,不过对于第一次接触这种东西的我来说已经不错了,我会继续努力,争取做出更好的设计来。
附件:完整源程序代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity gaohui is
port(clk: in std_logic;
x: in std_logic;
y:buffer std_logic:=0;
guan:out std_logic_vector(1 downto 0);
duan:out std_logic_vector(7 downto 0);
hang:buffer std_logic_vector(15 downto 0);
lie:out std_logic_vector(15 downt
原创力文档

文档评论(0)