您好,欢迎访问三七文档
西北工业大学课程设计报告题目:贪吃蛇小游戏-1-摘要贪吃蛇是一个简单地小游戏,写作贪吃蛇的目的在于以C语言算法思想为基础,通过进一步的改编实现贪吃蛇小游戏,实现其基本游戏功能(显示蛇和老鼠、移动、长大、死亡、十五步内未吃掉则消失、计分、剩余时间)提高自己的对数字电路和相关语言的掌握。利用DE0板写作,以VHDL语法撰写,并参考实验相关资料文件、网上相关资源以及图书馆相关书籍並,并通过老师的指导和与同学讨论完成写作贪吃蛇游戏。由于未学习过VHDL和VerilogDHL语言,对DE0板不熟悉,写作过程中遇到了不小麻烦,通过进一步的学习,老师的指导以及参考资料,虽然不能完全实现游戏功能,但是已基本可以实现小游戏。从一开始的无从下手到最后学会撰写VHDL、游戏显示设计、烧录到板子调试到最后得到成果,使自己一点一点补充不足的知识,对于VHDL硬件与软件间的关系运作也能更加清楚与了解,研究此设计如有机会会再继续完成。关键词:VHDL,VerilogHDL,DE0-2-目录一、课程设计目的.............................................................................-3-二、设计任务与要求..........................................................................-3-三、方案设计与论证..........................................................................-3-1、VGA显示........................................................................................-3-2、键盘控制.......................................................................................-5-3、蛇的运动与增长...........................................................................-5-四、遇到问题的解决方法..................................................................-6-五、存在的问题与不足......................................................................-6-六、总结与体会.................................................................................-6-七、参考文献.....................................................................................-7-八、附录.............................................................................................-8--3-贪吃蛇一、课程设计目的1)巩固和加深所学电子技术课程的基本知识,提高综合运用所学知识的能力;2)培养根据课题需要选用参考书、查阅手册、图表和文献资料的能力,提高学生独立解决工程实际问题的能力3)通过设计方案的分析比较、设计计算、元件选择及电路安装调试等环节.初步掌握简单实用电路的工程设计方法。4)提高动手能力.掌握常用仪器设备的正确使用方法,学会对简单实用电路的实验调试和对整机指标的测试方法,5)学习VHDL和VerilogHDL语言,熟悉DE0电路板。提高对软件与硬件之间关系的认识与了解二、设计任务与要求设计任务:设计一个贪吃蛇小游戏要求和指标:1.用PS2键盘作为输入设备,用LCD作为显示器。2.自定义蛇的图像和老鼠的图像,用四个按键控制蛇的运动方向,完成贪食蛇游戏,蛇撞“墙”、边或者游戏时间到,游戏结束。3.老鼠出现的地方是随机的,在某个地点出现的时间是蛇走15步的时间,如果15步之内没有被吃掉,它就会在其它地方随机出现。;4.在旁边显示得分情况和游戏的剩余时间。三、方案设计与论证1、VGA显示VGA标准是一种计算机显示标准,最初是由IBM公司在1987年提出的一种-4-视频传输标准,在彩色显示器领域得到了广泛应用。VGA管脚中,VGA_Hs和VGA_Vs分别是水平扫描信号和竖直扫描信号,VGA_R,VGA_G和VGA_B是颜色控制信号,控制当前显示的像素色彩。利用水平扫描信号和竖直扫描信号实现二维平面的像素扫描显示,程序中中我們利用Cnt_H与Cnt_V信号来控制,以确认程序正确的将色彩输出到屏幕上。将屏幕分成30*40的矩阵,每个矩阵块根据不同的值赋予不同的颜色。屏幕是从最左上角的(4,4)坐标开始扫描更新,可以将屏幕视为x-y平面來看,根据矩阵点值赋予不同颜色绘制游戏框架并且实时显示蛇与老鼠在做VGA显示前先进行了彩条显示,以确保颜色显示正确,结果如下:根据彩条显示绘制游戏框架,并定义蛇与老鼠的颜色。-5-2、键盘控制键盘控制程序的主要功能,就是读取用户为控制贪吃蛇的移动,而从键盘所输入的上下左右键值(键盘的键值):上:00011101下:00011011左:00011100右:00100011在键盘控制程序里,设定一个Dir和Dirbuff对方向进行控制,为了避免蛇直接向反方向运动,需要对方向的转换进行限制。需要对现行方向和下一步控制方向进行判断,以防止“回头”运动。001001113、蛇的运动与增长利用一个数组存放蛇的信息,当蛇移动时,将蛇头之后的坐标依次沿蛇身前移,蛇头根据运动控进行移动赋值。老鼠的位置利用时钟产生随机数,利用随机数得到老鼠的坐标,将相应的坐标块赋色。当蛇头坐标与老鼠的坐标重合时表示蛇已经吃到老鼠,此时将蛇尾后一坐标-6-块赋值赋色,蛇的长度加一。当蛇头撞墙或蛇的首位相接,则根据相应的信号量结束程序。四、遇到问题的解决方法问题一、蛇穿墙而出,经过一定时间,从另一方向穿墙而入。解决方案:设置一个标志量S_Lose,初始化为零。当为零时程序继续运行,如果撞墙或者首尾相接,赋值为1,结束游戏。问题二、蛇静止不动解决方案:语句判断出错,在蛇头位置时判断结束游戏。更改判断语句,使其只有在撞墙和首位相接时结束。问题三、颜色显示不对解决方案:未考虑颜色叠加,需要将背景色改成黑色才能正确显示颜色。五、存在的问题与不足1、由于时间原因,部分游戏功能要求尚未实现,例:得分显示,老鼠十五步内未被吃掉就消失,剩余时间显示。2、老鼠的随机产生可能在蛇身上,此时将会出现冲突,游戏无法继续。3、在蛇吃掉老鼠,蛇身在蛇尾增长时会有断尾延迟4、由于数组有限,当蛇身超过10时,会出现蛇“脱皮”现象。六、总结与体会这次的设计是通过自己在图书馆和网上查阅资料所完成的,课程设计的任务需要综合运用“高频电子线路”课程的知识,通过调查研究、查阅资料、方案设计,调试及分析讨论,结果展示完成设计任务。在这次课程设计中,学会了怎样去根据课题的要求去设计相应的数字电路。动手能力得到很大的提高。从中发现自己并不能很好的熟练去使用所学到的数电知识。在以后学习中要加强对使用电路和相关语言的了解。把过去熟悉的定型分析、-7-定量计算逐步和工程估算、实验调整等手段结合起来,掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。这对今后从事技术工作无疑是个启蒙训练。通过这种综合训练,可以掌握高频电子线路设计的基本方法,提高动手组织实验的基本技能,培养分析解决电路问题的际本领,为以后毕业设计和从事高频电子线路实验实际工作打下基础。在设计的过程中我遇到很多困难,例如QuartusII软件的学习,资料的查找,编辑好的文档没有及时保存,以至于从头再来,浪费了很多时间。但吃一堑长一智,现在遇到这些问题,及时解决,以后再做这类事情就会多一点经验,就会少出一些类似问题。在两个星期的课程设计之后,我觉得不仅实际动手能力有所提高,更重要的是懂得设计流程,从开始设计思路,到实现,到纠正完善,再到最后设计论文的撰写,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。经过这次课程设计,让我对前面的路有了更多的信心,因为在这个过程中,我学到了不少实用的东西,对于高频电子电路有了更深层次的掌握,并且提高了独立解决问题的能力。我们在学习理论知识的同时还要努力培养自己的动手操作能力,通过这次课程设计我也看到了自己的差距,今后会努力提高自己的动手操作能力,以求真正领会通信专业里边的各种知识,为将来的工作打下良好的基础。总而言之,通过这次课程设计,我们获得了很多,但学海无涯,我们还得一如既往的努力踏实的学习,只有这样才能成为合格的人才七、参考文献【1】DoouglasL.perryVHDL:ProgrammingByExample(杨承恩谭克俊颜德文译)电子工业出版社【2】云创工作室詹仙宁田耕VHDL开发精解与实例剖析电子工业出版社【3】数字电路实验指导讲义(第二版)(课件)-8-八、附录LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYSnakeISPORT(Clk:INSTD_LOGIC;Start:INSTD_LOGIC;Rst:INSTD_LOGIC;--FORVGARed:OUTSTD_LOGIC;Blue:OUTSTD_LOGIC;Green:OUTSTD_LOGIC;Red1:OUTSTD_LOGIC;Blue1:OUTSTD_LOGIC;Green1:OUTSTD_LOGIC;Red2:OUTSTD_LOGIC;Blue2:OUTSTD_LOGIC;Green2:OUTSTD_LOGIC;Red3:OUTSTD_LOGIC;Blue3:OUTSTD_LOGIC;Green3:OUTSTD_LOGIC;V_Sync:OUTSTD_LOGIC;H_Sync:OUTSTD_LOGIC;--FORKEYBORD-9-PS2_Clk:INSTD_LOGIC;PS2_Data:INSTD_LOGIC);ENDSnake;ARCHITECTUREBEHAVEOFSnakeISTYPEMATRIXISARRAY(0TO29,0TO39)OFINTEGERRANGE0TO6;SIGNALS_Matrix:MATRIX;--VGACONTROLSIGNALCnt_H:INTEGERRANGE0TO799;SIGNALCnt_V:INTEGERRANGE0TO524;SIGNALRow:INTEGERRANGE0TO29;SIGNALCol:INTEGERRANGE0TO39;SIGNALClk_H:STD_LOGIC:='0';SIGNALClk_V:STD_LOGIC:='0';SIGNALColorBuf:STD_LOGIC_VECTOR(2DOWNTO0);--PS2CONTROLSIGNALbuff:STD_LOGIC_VECTOR(10DOWNTO0);SIGNALpre_clk,now_clk:STD_LOGIC;SIGNALkbclk:STD_LOGIC:='0';--SIGNALData1,Data2,Data3:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALPScnt:INTEGERRANGE0TO10:=0;SIGNALResult:STD_LOGIC_VECTOR(7DOWNTO0);--SNAKECONTROLSIGNALDir:STD_LO
本文标题:VHDL实现贪吃蛇
链接地址:https://www.777doc.com/doc-3996430 .html