基于FPGA的贪食蛇游戏设计
2014-09-15何志敏谢杰
何志敏+谢杰
摘 要: 随着社会的发展,游戏的易携性越来越受到人们的关注,基于嵌入式平台的游戏设计迅速崛起。FPGA因其高速度、高精度等功能特性,被越来越多的游戏开发者所接受。该设计利用FPGA来驱动16×16 LED点阵实现贪食蛇游戏,玩家通过4个方向键控制贪食蛇不断地吞食点阵上随机出现的老鼠,贪食蛇的长度也随之加长,7段数码管实时显示玩家得分。该设计采用VHDL语言,在FPGA实验平台上实现了该贪食蛇游戏。经测试,游戏运行良好,可进一步推广使用。
关键词: FPGA; 贪食蛇游戏; 16*16点阵; VHDL
中图分类号: TN710?34; TP399 文献标识码: A 文章编号: 1004?373X(2014)18?0105?02
Design of gluttony snake game based on FPGA
HE Zhi?min, XIE Jie
(School of Computer Science, Southwest Petroleum University, Chengdu 610500, China)
Abstract: With the social development, people pay more attention to the portability of games so that the design of games based on embedded platform has rapidly developed. FPGA has been accepted by more and more game developers because of its high speed, high precision and other features. FPGA is used in this design to drive 16*16 LED to realize gluttony snake game. The game player uses the four direction keys to control the snake to eat the mice which is randomly generated in the dot matrix and the length of snake is getting longer. The score of player is displayed on seven segment digital tube. VHDL is used in this design to implement this game on the FPGA experimental platform. The testing result indicates that the game runs well, and can be promoted further.
Keywords: FPGA; Gluttony Snake Game; 16*16 dot matrix; VHDL
随着社会的发展,游戏作为一种娱乐手段逐渐深入了人们的日常生活,人们对于游戏的要求也越来越高,除了看中其速度与交互性以外,人们更关心游戏的易携性和网络支持性[1]。1998年诺基亚公司发布了全球第一款内置游戏的手机“变色龙6110”,内置贪食蛇、记忆力、逻辑猜图三款游戏,受到了全世界的欢迎,其他厂商也纷纷跟进,使得基于嵌入式平台的游戏开发迅速崛起[2]。越来越多的游戏公司开始寻求一种新的硬件设备来适应越来越高的游戏要求。而在硬件行业,随着FPGA技术的飞速发展以及其开发周期短、成本低、功耗低、可靠性高等优势,其被广泛应用于通信、电子、航空等领域[3]。本文在以Altera公司CycloneⅡ系列FPGA芯片为控制核心的实验平台上,开发基于FPGA的贪食蛇游戏。
1 总体结构
本设计选取16×16 LED点阵作为游戏界面,在点阵上显示贪食蛇、老鼠和障碍物。选取4个按键,分别控制贪食蛇往上、下、左、右4个方向移动。游戏得分由7段数码管显示。系统初始化得分为0,随机产生老鼠,贪食蛇按预定方向移动,玩家通过按键可以控制贪食蛇的移动方向。当得分小于10分时,贪食蛇每吃到1只老鼠时,玩家得分加1分,贪食蛇长度加1;当得分大于10分时,贪食蛇每吃一只老鼠,玩家得分加2分,贪食蛇长度加2。当贪食蛇咬住自己、撞到障碍物或超出点阵边界时,游戏结束。结束后按复位键重新开始游戏。
按照贪食蛇游戏规则,本系统一共分为8个模块,分别为按键扫描、控制器、计分显示、点阵显示、规则判定、贪食蛇移动、老鼠位置生成、障碍物产生模块。其中按键扫描部分的主要功能是读取按键值判定用户操作,并将数据传送给控制器;计分显示主要是显示游戏玩家的得分情况,初始值显示为00;点阵显示部分主要是显示游戏画面;规则判定部分是根据贪食蛇当前的位置信息,障碍物的信息,以及老鼠的信息来判定在游戏玩家的控制下贪食蛇是否死亡,并将相应的游戏情况反馈给控制器;贪食蛇移动部分主要是控制贪食蛇的移动;老鼠位置生成模块的功能是随机产生老鼠的位置信号,并传递给显示部分;障碍物设置部分用于生成障碍物,根据游戏玩家的得分情况来改变游戏难度。如当游戏玩家得分小于10分时,为第一等难度,当游戏得分大于10分小于30分时,为第二等难度;控制器是上述7个模块的控制核心,根据各模块反馈的信号做出一系列处理。系统结构如图1所示。
图1 系统结构图
2 游戏实现
本设计采用16×16 LED点阵作为游戏界面。LED
点阵显示图像时每次只能显示同一列或者同一行上的LED点,而要显示某个图形时,就需要找出该图形对应的图形编码,然后根据对应的编码,进行动态扫描,只要扫描的频率足够快,人们观察到的就好像是多个点同时显示的图形[4]。
如图2所示,本次设计需要在点阵上显示贪食蛇、障碍物和老鼠。用初始化的3个点代表贪食蛇,单个点代表老鼠,“L”形代表障碍物。要在点阵上显示这些图形,根据点阵的显示原理可知,欲点亮该点阵上的某个点,需要将点阵该点所在的行引脚置为低电平,列引脚置为高电平[5]。如图2所示要显示老鼠时,只需将第10行置为低,第12列置为高,就点亮了该位置上的老鼠。
本设计通过控制贪食蛇的移动、老鼠的随机产生、障碍物的设定来控制整个游戏。其中对于贪食蛇的移动方式采用的是循环移位的方法,如设定蛇的显示时为两个数组Sx,Sy,当蛇前进时,根据蛇当前的移动方向,控制蛇头移动,蛇身分别向前移动一位,如蛇向右移动时,Sx(0)=Sx(0)+1,Sy(0)=Sy(0)。蛇身根据蛇当前长度,分别占据前一位的位置,即Sx(i)=S(i-1);Sy(i)=Sy(i-1)。这样就控制了贪食蛇的移动。
图2 16×16 LED点阵显示
当老鼠被蛇吃掉后,新的老鼠的出现是由蛇当前的移动方向决定的,产生新老鼠的方式为当前老鼠的位置加上蛇移动方向对应的控制值然后减去一个随机数来产生。如当前老鼠的坐标为(a,b),蛇移动的方向为UP↑(对应值为3),当当前坐标值分别加上方向值时,如果结果大于15,结果需要减去一个随机数m,坐标值为(a+UP-m,b+UP-m);否者的话坐标位置为(a+UP,b+UP)。这样就能随机地生成老鼠的新坐标。本次设计共设置了两种障碍物,分别代表了不同的游戏难度,在编写代码时就已经将障碍物的形状设定好,当玩家的游戏积分超过设定值时,系统会自动切换障碍物,新的障碍物会随之出现,显示在游戏屏幕上。对于游戏规则的设定为:将LED的边界设为游戏边界,当贪食蛇碰撞到边界时(一共4种情况:Sx<0||Sx>15||Sy<0||Sy>15),玩家操作失败,游戏结束。当贪食蛇的蛇头碰到自己蛇身或障碍物时游戏结束。游戏的工作流程如图3所示。
游戏效果如图4所示,其中(a)为游戏的初始化界面;(b)为移动中的第一难度的贪食蛇;(c)为第二难度的贪食蛇。该贪食蛇游戏能进行难度划分、游戏计分、场景变化等,给游戏玩家带来了众多的乐趣。
图4 游戏运行界面
3 结 语
本设计利用FPGA实验平台,采用VHDL语言编程,成功地实现了一款贪食蛇游戏。该游戏通过在硬件平台的测试,得到了众多玩家的好评。面对嵌入式游戏的飞速发展和越来越广泛的应用,FPGA的高速度、高精度等功能特性被越来越多的游戏开发者所接受,基于FPGA的游戏开发前景将是非常广阔的[6]。
参考文献
[1] 潘松,潘明.EDA技术实用教程[M].科学出版社,2006.
[2] 潘松,黄继业.EDA技术与VHDL[M].清华大学出版社,2009.
[3] 高士峰.医疗机器人主操作手入门研究与开发[D].天津:天津大学,2005.
[4] Lattice Semiconductor Corporation.利用低成本FPGA设计下一代游戏控制台[EB/OL]. [2009?04?24]. http:// www.eeworld.toni.cn.
[5] 彭介华.电子技术课程设计指导[M].北京:高等教育出版社,1997.
[6] [美]克里兹.高级FPGA设计结构、实现和优化[M].孟宪元,译.北京:机械工业出版社,2009.
如图2所示,本次设计需要在点阵上显示贪食蛇、障碍物和老鼠。用初始化的3个点代表贪食蛇,单个点代表老鼠,“L”形代表障碍物。要在点阵上显示这些图形,根据点阵的显示原理可知,欲点亮该点阵上的某个点,需要将点阵该点所在的行引脚置为低电平,列引脚置为高电平[5]。如图2所示要显示老鼠时,只需将第10行置为低,第12列置为高,就点亮了该位置上的老鼠。
本设计通过控制贪食蛇的移动、老鼠的随机产生、障碍物的设定来控制整个游戏。其中对于贪食蛇的移动方式采用的是循环移位的方法,如设定蛇的显示时为两个数组Sx,Sy,当蛇前进时,根据蛇当前的移动方向,控制蛇头移动,蛇身分别向前移动一位,如蛇向右移动时,Sx(0)=Sx(0)+1,Sy(0)=Sy(0)。蛇身根据蛇当前长度,分别占据前一位的位置,即Sx(i)=S(i-1);Sy(i)=Sy(i-1)。这样就控制了贪食蛇的移动。
图2 16×16 LED点阵显示
当老鼠被蛇吃掉后,新的老鼠的出现是由蛇当前的移动方向决定的,产生新老鼠的方式为当前老鼠的位置加上蛇移动方向对应的控制值然后减去一个随机数来产生。如当前老鼠的坐标为(a,b),蛇移动的方向为UP↑(对应值为3),当当前坐标值分别加上方向值时,如果结果大于15,结果需要减去一个随机数m,坐标值为(a+UP-m,b+UP-m);否者的话坐标位置为(a+UP,b+UP)。这样就能随机地生成老鼠的新坐标。本次设计共设置了两种障碍物,分别代表了不同的游戏难度,在编写代码时就已经将障碍物的形状设定好,当玩家的游戏积分超过设定值时,系统会自动切换障碍物,新的障碍物会随之出现,显示在游戏屏幕上。对于游戏规则的设定为:将LED的边界设为游戏边界,当贪食蛇碰撞到边界时(一共4种情况:Sx<0||Sx>15||Sy<0||Sy>15),玩家操作失败,游戏结束。当贪食蛇的蛇头碰到自己蛇身或障碍物时游戏结束。游戏的工作流程如图3所示。
游戏效果如图4所示,其中(a)为游戏的初始化界面;(b)为移动中的第一难度的贪食蛇;(c)为第二难度的贪食蛇。该贪食蛇游戏能进行难度划分、游戏计分、场景变化等,给游戏玩家带来了众多的乐趣。
图4 游戏运行界面
3 结 语
本设计利用FPGA实验平台,采用VHDL语言编程,成功地实现了一款贪食蛇游戏。该游戏通过在硬件平台的测试,得到了众多玩家的好评。面对嵌入式游戏的飞速发展和越来越广泛的应用,FPGA的高速度、高精度等功能特性被越来越多的游戏开发者所接受,基于FPGA的游戏开发前景将是非常广阔的[6]。
参考文献
[1] 潘松,潘明.EDA技术实用教程[M].科学出版社,2006.
[2] 潘松,黄继业.EDA技术与VHDL[M].清华大学出版社,2009.
[3] 高士峰.医疗机器人主操作手入门研究与开发[D].天津:天津大学,2005.
[4] Lattice Semiconductor Corporation.利用低成本FPGA设计下一代游戏控制台[EB/OL]. [2009?04?24]. http:// www.eeworld.toni.cn.
[5] 彭介华.电子技术课程设计指导[M].北京:高等教育出版社,1997.
[6] [美]克里兹.高级FPGA设计结构、实现和优化[M].孟宪元,译.北京:机械工业出版社,2009.
如图2所示,本次设计需要在点阵上显示贪食蛇、障碍物和老鼠。用初始化的3个点代表贪食蛇,单个点代表老鼠,“L”形代表障碍物。要在点阵上显示这些图形,根据点阵的显示原理可知,欲点亮该点阵上的某个点,需要将点阵该点所在的行引脚置为低电平,列引脚置为高电平[5]。如图2所示要显示老鼠时,只需将第10行置为低,第12列置为高,就点亮了该位置上的老鼠。
本设计通过控制贪食蛇的移动、老鼠的随机产生、障碍物的设定来控制整个游戏。其中对于贪食蛇的移动方式采用的是循环移位的方法,如设定蛇的显示时为两个数组Sx,Sy,当蛇前进时,根据蛇当前的移动方向,控制蛇头移动,蛇身分别向前移动一位,如蛇向右移动时,Sx(0)=Sx(0)+1,Sy(0)=Sy(0)。蛇身根据蛇当前长度,分别占据前一位的位置,即Sx(i)=S(i-1);Sy(i)=Sy(i-1)。这样就控制了贪食蛇的移动。
图2 16×16 LED点阵显示
当老鼠被蛇吃掉后,新的老鼠的出现是由蛇当前的移动方向决定的,产生新老鼠的方式为当前老鼠的位置加上蛇移动方向对应的控制值然后减去一个随机数来产生。如当前老鼠的坐标为(a,b),蛇移动的方向为UP↑(对应值为3),当当前坐标值分别加上方向值时,如果结果大于15,结果需要减去一个随机数m,坐标值为(a+UP-m,b+UP-m);否者的话坐标位置为(a+UP,b+UP)。这样就能随机地生成老鼠的新坐标。本次设计共设置了两种障碍物,分别代表了不同的游戏难度,在编写代码时就已经将障碍物的形状设定好,当玩家的游戏积分超过设定值时,系统会自动切换障碍物,新的障碍物会随之出现,显示在游戏屏幕上。对于游戏规则的设定为:将LED的边界设为游戏边界,当贪食蛇碰撞到边界时(一共4种情况:Sx<0||Sx>15||Sy<0||Sy>15),玩家操作失败,游戏结束。当贪食蛇的蛇头碰到自己蛇身或障碍物时游戏结束。游戏的工作流程如图3所示。
游戏效果如图4所示,其中(a)为游戏的初始化界面;(b)为移动中的第一难度的贪食蛇;(c)为第二难度的贪食蛇。该贪食蛇游戏能进行难度划分、游戏计分、场景变化等,给游戏玩家带来了众多的乐趣。
图4 游戏运行界面
3 结 语
本设计利用FPGA实验平台,采用VHDL语言编程,成功地实现了一款贪食蛇游戏。该游戏通过在硬件平台的测试,得到了众多玩家的好评。面对嵌入式游戏的飞速发展和越来越广泛的应用,FPGA的高速度、高精度等功能特性被越来越多的游戏开发者所接受,基于FPGA的游戏开发前景将是非常广阔的[6]。
参考文献
[1] 潘松,潘明.EDA技术实用教程[M].科学出版社,2006.
[2] 潘松,黄继业.EDA技术与VHDL[M].清华大学出版社,2009.
[3] 高士峰.医疗机器人主操作手入门研究与开发[D].天津:天津大学,2005.
[4] Lattice Semiconductor Corporation.利用低成本FPGA设计下一代游戏控制台[EB/OL]. [2009?04?24]. http:// www.eeworld.toni.cn.
[5] 彭介华.电子技术课程设计指导[M].北京:高等教育出版社,1997.
[6] [美]克里兹.高级FPGA设计结构、实现和优化[M].孟宪元,译.北京:机械工业出版社,2009.