基于FPGA的汉诺塔游戏

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

       汉诺塔游戏规则简单,对外部要求不高,不仅能增强思维能力,而且能提高智力,在休闲中使自己得到真正的长进。

       使用Verilog HDL 以及VHDL语言,运用FPGA中的VGA显示原理以及键盘控制原理,开发汉诺塔简易游戏,力争使程序短小精悍,简洁明了,游戏界面美观,容易操作,功能丰富,趣味性强。

       首先,需要为这个游戏建立一个“地图”,确定底座、塔、圆盘以及确认点的位置,这个地图实际就是一个坐标系,为了方便,我们使用了固定(640*480)的地图。分析计算后,通过像素点的坐标确认好每个元素的位置以及所有可能出现的情况。比如,一个指定区域本来显示一个圆盘,然而当人为控制其向上、向下、向左或向右移动后,就要转换成空地,各个状态之间的转移关系并不复杂,在这里不再一一赘述。

1模块控制
       其次,需要记录每一个圆盘的当前坐标和键盘的信息,因为地图上每块区域的改变都是由键盘控制圆盘的移动引起的,故而需要记录其位置。除此之外,还需要一个控制点用来指定当前需要移动圆盘所在塔的位置。

2VGA显示控制
       最后,我们考虑了整个界面如何被显示出来。实际上这个问题非常简单,只要显示模块将指定的坐标数据读出来,将不同的颜色分配到指定的区域,转换成VGA信号,并在显示器的相应位置显示出来就可以了。

 

       经过以上分析,整个游戏的逻辑结构已经基本上清晰了,下面我们将根据这个来进行系统的设计。

基于FPGA的汉诺塔游戏

1.详细设计程序

输入输出信号:

基于FPGA的汉诺塔游戏

 

2.功能描述

接收滤波键盘产生的数据,提取扫描码,对接收来的数据区分是通码还是断码,并向信号转换模块传送。

3.模块封装

基于FPGA的汉诺塔游戏

 

信号转换模块
1.详细设计程序

输入输出信号:

基于FPGA的汉诺塔游戏

 

2.功能描述

         接受信号输入模块传送来的键盘通码或断码,对其判断当前操作是向左?向?向上?还是向下?将操作信号转换为信号kb(“1”表示键盘向上,“2”表示键盘向下,“3”表示键盘向左,“4”表示键盘向右),并将信号kb传送给核心控制模块。

3.模块封装

基于FPGA的汉诺塔游戏

 

3.2.3核心控制模块
1.详细设计程序

输入输出信号:

基于FPGA的汉诺塔游戏

 

2.功能描述

       接收的信号kb判断键盘的操作(上下左右),根据当前操作改变指定圆盘的位置,并将位置信号传递给VGA显示模块。

3.模块封装

基于FPGA的汉诺塔游戏

 

VGA显示模块
1.详细设计程序

输入输出信号:

基于FPGA的汉诺塔游戏

 

圆盘显示程序:

begin

                     if ((xpos>=pointx1)&&(xpos<=pointx2)&&(ypos>=pointy1)&&(ypos<=pointy2)) begin//圆点

                            r=pointr;

                            g=pointg;

                            b=pointb;

                     end

                     else if ((xpos>=towerax1)&&(xpos<=towerax2)&&(ypos>=toweray1)&&(ypos<=toweray2)) begin//塔a

                            r=towerar;

                            g=towerag;

                            b=towerab;

                     end

                     else if ((xpos>=towerbx1)&&(xpos<=towerbx2)&&(ypos>=towerby1)&&(ypos<=towerby2)) begin//塔b

                            r=towerbr;

                            g=towerbg;

                            b=towerbb;

                     end

                     else if ((xpos>=towercx1)&&(xpos<=towercx2)&&(ypos>=towercy1)&&(ypos<=towercy2)) begin//塔c

                            r=towercr;

                            g=towercg;

                            b=towercb;

                     end

                     else if ((xpos>=28)&&(xpos<=612)&&(ypos>=420)&&(ypos<=480)) begin//底座

                            r=fundr;

                            g=fundg;

                            b=fundb;

                     end

                     else if ((xpos>=145)&&(xpos<=161)&&(ypos>=80)&&(ypos<=420)) begin//l柱子

                            r=fundr;

                            g=fundg;

                            b=fundb;

                     end

                     else if ((xpos>=310)&&(xpos<=326)&&(ypos>=80)&&(ypos<=420)) begin//m柱子

                            r=fundr;

                            g=fundg;

                            b=fundb;

                     end

                     else if ((xpos>=478)&&(xpos<=494)&&(ypos>=80)&&(ypos<=420)) begin//r柱子

                            r=fundr;

                            g=fundg;

                            b=fundb;

                     end

                     else begin//背景全黑

                            r=8'b00000000;

                            g=8'b00000000;

                            b=8'b00000000;

                     end

              end

2.功能描述

       从核心控制模块接收圆盘的位置信号,利用VGA显示图像原理转为RGB三色的信号以及像素点坐标,连接显示器显示当前状态。

3.模块封装

基于FPGA的汉诺塔游戏

基于FPGA的汉诺塔游戏

关注博主即可阅读全文
基于FPGA的汉诺塔游戏

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

基于FPGA的汉诺塔游戏

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 基于FPGA的汉诺塔游戏
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏