基于8×8点阵的豆豆与心跳游戏机的设计

2014-11-10 07:10黄道燚李星活
网络安全与数据管理 2014年14期
关键词:双人豆豆按键

黄道燚,李星活

(汕尾职业技术学院,广东 汕尾516600)

本文介绍了一款天降豆豆的小游戏机,游戏操作简单,可单人游戏,也可双人对战,可在掌上玩耍,它具备实质感,具有灯光,可玩性强,只需4节5号电池就可以使用。同时,其成本低廉,只需20元左右即可自己组装,如果批量生产可做儿童小玩具或其他较大产品的推销赠品。

1 产品的构成与硬件电路设计

1.1 产品结构

游戏机由主机和两个游戏操作键构成。主机表面上设有游戏显示屏幕,由8×8点阵组成单双人模式,分别如图 1(a)、图 1(b)所示;每个游戏操作键上都设有游戏开始按键、游戏方向按键等3个微动按钮开关组成,其中一个是单人游戏操作键,另一个是双人游戏操作键,两个完全相同,如图1(c)所示。

1.2 硬件电路设计

硬件电路由显示子电路、按键子电路、单片机最小系统等几个模块组成。

1.2.1 显示子电路设计

图1 产品结构图

显示子电路由 8×8点阵、8个 9012驱动三极管及R1~R8(270 Ω)和 R9~R16(4.7 kΩ)限流电阻组成,它们受单片机的P0、P2口控制,点阵的显示采用动态逐点扫描[1],P2和P0口分别控制点阵的行与列。图2为 8×8点阵显示子电路,8×8点阵就是游戏机的显示屏幕。

图2 显示子电路

1.2.2 控制器子电路与单片机最小系统电路

控制器子电路与单片机最小系统子电路如图3所示,它由6个微动开关组成,并制作为两个控制器,分别为玩家1控制器、玩家2控制器。其中每个控制器各含3个按键,分别为开始、左移、右移按键,按键连接单片机P1口,检测低电平时为按键按下。图3中 S2、S3、S4为玩家1控制器按键,功能分别为左移、右移、开始;S5、S6、S7为玩家 2控制器按键,功能相同。

图3 按键与单片机最小系统子电路图

单片机最小系统是本设计的主电路,它由单片机AT89S52及外围元件 12 MHz晶振、电源开关 S1、电阻、电容组成,其中S2~S7按键为两组游戏操作键,其主要功能:(1)控制点阵电路的显示;(2)处理按键的接收信号;

(3)完成心跳动画、游戏、结果显示等。

2 软件系统工作原理

本产品软件主要设计总流程图如图4所示。

图4 主要软件设计总流程图

系统启动之后开始进行初始化,包括:(1)定时器的初始化、开启中断、定时器0工作方式设置、定时数初始值设置等;(2)游戏生命、速度初始化;(3)游戏接豆槽位置初始化、单双人状态位初始化等。

2.1 心跳动画程序

(1)点阵逐点扫描:本设计点阵采用逐点扫描的方式,灵活性强,单片机P0、P2分别对点阵的行、列进行控制,其中P0口接点阵的阴极端,P2通过驱动三极管控制点阵的阳极端。由于三极管的倒相性[2],当P0口和P2口的某个位同时为同低电平时,点亮点阵上对应的发光二极管。在点阵上,图像由点构成,显示屏由程序控制其发光二极管逐点点亮,由于扫描时间短,利用人眼的惰性[3],从而感觉图像各点同时亮。

(2)心跳动画:心跳动画模拟人体心脏的跳动,其由3幅图像构成,分别是大心形、中心形、小心形。动画过程为大心形-中心形-大心形-小心形,一幅图像持续显示时间为0.5 s左右,整个过程循环显示,效果近似心脏跳动。

(3)按键检测:设置在延时中,单片机如检测到其按键则停止心跳动画,进入游戏。

2.2 游戏程序

游戏程序的流程图如图5所示。

图5 游戏程序流程图

(1)游戏参数初始化:包括游戏生命值、速度初始化,开启定时器。

(2)显示程序:采用逐点扫描,显示的内容包括接豆槽、豆豆及生命点。在显示过程中,为了显示的方便和图像移动的灵活,采用了坐标函数把点阵上各点转化为平面坐标。

(3)按键扫描和按键处理程序:对玩家1和玩家2的方向键进行按键扫描,发现低电平为对应按键按下。如按键按下则执行相对应的按键处理程序,包括左移函数和右移函数。左移函数对接豆槽各点的横坐标进行减1,显示效果接豆槽向左移动一格;右移函数对接豆槽各点的横坐标进行加1,显示效果接豆槽向右移动一格。

(4)掉豆程序流程图如图6所示。掉豆程序主要完成3项任务:产生豆、豆下降、生命值控制。

图6 掉豆程序流程图

①产生豆:在判断屏幕没豆情况下,掉豆程序控制在屏幕的最上行随机列数位置产生1豆。本设计采用rand()函数[4]取得随机列数值。

②豆下降:如果屏幕上有豆,则控制豆的纵坐标减1,屏幕上显示效果为豆下降。豆下降的时刻受定时器累加次数阈值的控制,在游戏开始时阈值较大,经历时间较长,豆的下降慢;随着游戏时间的增加,阈值减少,经历的时间减短,豆的下降速度变快。所以随着游戏时间的增长,豆下降的速度越来越快。

③生命值控制:在豆下降同时判断豆是否掉到最低一行。如果掉到最低一行,则比较其坐标与接豆槽的中心点坐标是否相等,如相等则判定为接住豆,不相等则判定为没接住。如没接住豆则生命值减1,同时判断生命值是否为0,为0则游戏结束,游戏结束状态位置1,同时根据定时器中断累加次数给出成绩,累加次数大说明游戏时间长,成绩好,次数小则相反。成绩分为3个等次:优秀、中等、差。优秀则进入大心形图像显示函数,代表玩家游戏技术好,具备大心脏;中等进入中心形图像显示函数,代表玩家游戏技术普通,具备中等心脏;差则为小心脏。

(5)双人模式:如果判定按下的开始键是控制器2的开始键,则进入双人模式。在双人模式下,程序结构与上面单人模式相似,区别在于:一方面在屏幕的上方增加第二个接豆槽,掉豆程序增加一个从底行上升的豆,增加第二个生命值和判断程序;另一方面,成绩图像的修改不再按照游戏时间进行判定,而是按照两个生命值中哪个先减为零来进行判断。先减为零的玩家则会在其相对应的半个屏幕显示一个 “小”,代表挑战失败,小心脏;另一玩家则显示一个“大”,代表获胜,大心脏。

3 操作方法

(1)开机之时,游戏屏幕会显示一个跳动的小心脏,按下游戏控制器1上的开始按键,即可进行单人游戏。

(2)游戏时,游戏控制器上有两个方向控制键,分别是控制接豆槽向左移动和向右移动。屏幕上方会随机产生一个豆豆并下降,豆豆的下降速度会随游戏时间而变快,玩家需要控制接豆槽在豆豆下降到底部时接住豆豆,否则会扣掉1个生命值。初始生命值为3,扣完则游戏结束。

(3)接豆游戏结束时,游戏机会根据玩家的成绩给出结果:游戏成绩优异的玩家将会获得一个大心脏心跳动画的奖励,表示这个玩家拥有高超的技巧和大心脏;游戏成绩中等的玩家会获得一个中等心跳动画的心脏,表示该玩家处在普通的水平;游戏成绩差则会获得一颗小心跳动画的心脏。

(4)如果在开机之后,按下游戏控制器2上的开始按键,则可以进行双人对战接豆游戏。只不过双人游戏时,两个玩家需要面对面,游戏屏幕上下各有一个接豆槽,屏幕的上下方各随机产生豆豆,玩家需要控制各自的接豆槽接住豆豆。当任一方生命值扣完游戏结束,胜利的一方会获得一个“大”,代表大心脏;失败的一方获得一个“小”,代表小心脏。

利用单片机制作的小游戏机与计算机制作的小游戏相比,具备有成本低廉、便携性、实质感等优点,适合作为儿童玩具。虽然单片机的应用非常多,但是在制作电子游戏方面偏少,本设计的游戏操作简单,并且具备单双人模式,趣味性强,是一个很不错的儿童玩具电子产品,也适合作为电子爱好者练习焊接的套件。其软件设计部分因篇幅关系在此省略。

[1]阎石.数字电子技术[M].北京:高等教育出版社,2006.

[2]胡宴如.模拟电子技术[M].北京:高等教育出版社,2008.

[3]李华.MCS-51系列单片机实用接口技术[M].北京:北京航天航空大学出版社,2007.

[4]杨黎.基于C语言的单片机应用技术与Proteus仿真 [M].长沙:中南大学出版社,2012.

猜你喜欢
双人豆豆按键
基于有限状态机的按键检测程序设计
双人面具
——为小提琴与钢琴而作
中国第一个双人滑冰世界冠军
———申雪、赵宏博
自由自在的豆豆
豆豆过夏
按键消抖在单片机和FPGA实验教学中的应用
唐豆豆的意外惊喜
一种多方向导光按键结构设计
“双人运球”乐翻天
B超机按键的替换与维护