谢昊 昝乡镇
摘要:在不少人眼中,电子游戏是第九艺术,容易被青少年接受,所以具有极大的市场。但是当今社会,生活节奏飞快,大部分人已经没法静下心来花大量时间去玩某个“3A”大作。而flappy bird游戏正是一款快节奏的Side-Scrolling (横向卷轴)游戏。该文以当前比较热门的JAVA语言,在需求分析的基础上,开发并设计了经典的flappy bird游戏。
关键词:JAVA;游戏;flappy bird;事件处理;IntelliJ IDEA
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2018)29-0077-03
Abstract: In the eyes of many people, video games are the ninth art, easily accepted by young people. In today's society, the pace of life is fast, most people have been unable to settle down to spend a lot of time playing "3A" games. But the flappy bird game is a fast-paced Side-Scrolling (horizontal scroll) game. With the help of the current popular JAVA language, this paper develops and designs the classic flappy bird game based on the demand analysis.
Key words: JAVA; game development; flappy bird; event processing; IntelliJ IDEA
1 背景
开发游戏的语言不止一种,JAVA是当前比较流行的一门编程语言,因其是一种可以撰写跨平台应用程序的面向对象的程序设计语言[1],并具有卓越的通用性、高效性和平台移植性,同时,JAVA语言在游戏开发方面, 又因为其语言严谨、可读性强、高度的便利性等优势,在游戏开发中具有非常重要的地位[2]。
当今社会,生活节奏飞快,大部分人已经没法静下心来花大量时间去玩某个“3A”大作。但flappy bird游戏正是一款快节奏的Side-Scrolling (横向卷轴)游戏,方便人们在等车或者其他碎片化时间里去耍上几局。它由来自越南的独立游戏开发者Dong Nguyen所制作,游戏于2013年5月24日上线,并在2014年2月突然爆红,可谓是游戏史上的一朵奇[3]。游戏虽然难度极大,新人上手困难,但是通过游戏分数的排名,它让人产生强烈的竞争欲,即使“受苦”也乐此不疲。该文基于JAVA平台对flappy bird游戏进行设计和开发。整个游戏在Microsoft Windows10 64位操作系统下,利用Intelli J IDEA 2017.2.4 x64开发工具进行开发。游戏模式的选择使用鼠标进行操作;游戏中小鸟的控制使用鼠标或者方向键上操作。
2 需求分析与系统结构
2.1 功能需求
通过对flappy bird游戏的多次试玩和深入分析,可以发现,该款游戏虽然没有华丽的游戏画面,剧情几乎为零,也不可能通关,但每次分数的提高都让人无比激动。游戏中的图形设计和界面的美化至关重要,玩家通过点击鼠标操纵小鸟在屏幕中向上移动,游戏刚开始时屏幕的右边开始出现水管。游戏中水管会每隔一段距离放置,如果成功越过一个水管,分数加一,反之则跳转到game over画面。
像大多数游戏一样,初始界面里有开始游戏和退出游戏的按钮。开始游戏后,小鸟出现在屏幕中,有扑腾着翅膀的动画效果,并根据重力加速度下落;而背景的蓝天白云随小鸟移动而移动;玩家轻点鼠标控制小鸟控制向上移动。
2.2 总体结构
flappy bird游戏的总体设计分为五个模块,总体结构设计图如图1所示。
3 游戏数据流程
flappy bird游戏的数据流程如图2所示。
玩家打开游戏,点击相应位置后开始游玩,游戏全程只需要点击鼠标。一旦进入游戏,就对游戏资源初始化,之后小鸟会往下掉落。然后判断小鸟是否与水管相撞或者是落地,如果未相撞则获得相应的分数奖励并继续往下掉落。如果相撞,则游戏结束。
4 核心功能模块的设计
该款游戏具有以下3种特性:稳定性,即游戏进行时不会出现故障;可维护性,即在不破坏玩家数据的前提下进行维护修复程序BUG;扩展性,即在原有基础上有添加更多的内容,使游戏焕发出新的生命力。下面,我就详细介绍一下游戏中核心功能模块的实现。
4.1 界面设计
通过Swing工具包完成面板的整体布局。利用JFrame作为大的容器,在窗体里设置三个JPanel面板,分别作为开始界面,游戏界面和游戏结束界面,在相应时刻设置面板是否可见。
创建一个MyPanel类继承于JPanel类,对Jpanel类中的paintComponent ()方法進行重写,以便程序在绘制不断向左滚动的背景时,MyPanel线程调用repaint()方法时能实现背景移动和小鸟扑腾翅膀的效果。
4.2 动画设计
动画设计里包括小鸟扑腾翅膀的动态效果、友好的人机交互、背景图片的滚动以及水管的随机高度。
为了实现友好的人机交互,需要通过java中的事件处理技术实现点击按钮的反应。当单击单人模式选项时,会产生一个ActionEvent事件,或者在游戏正式开始时,只要玩家触碰键盘上的方向键,就会产生一个KeyEvent事件,之后Java虚拟机(JVM)检测项目中与该选项或方向键对应的事件处理器是否存在,事件处理器实质是一个方法,如mouseClicked ()方法。JVM通过传递过来的 MouseEvent或者keyEvent对象,获得事件发生时与该事件及事件源相关联的信息。
4.3 碰撞检测的设计
碰撞检测算法有:点与矩形碰撞、点与圆形碰撞、矩形之间碰撞、圆形之间碰撞等[4]。flappy bird游戏中碰撞检测的方法是点与矩形碰撞,将游戏中的小鸟近似地看作矩形,水管看作点,如果小鸟的矩形部分和点重合即发生碰撞。只要游戏中的实体对象(小鸟、水管)的位置发生了变化,就需要执行碰撞检测算法。
4.4 音效的设计
电子游戏是一门集合了美学、动画、音乐、交互设计等元素的第九艺术。影响同样类型的两款游戏之前热度持续的因素有很多,其中背景音乐(bgm)可能是重要的一点。背景音乐能够影响游戏的节奏感,体现一款游戏的本质。背景音乐有从悠扬到急促的过渡,才能让玩家更容易获得愉快的体验感,增强游戏的重复可玩性。或者说,游戏节奏对孕育游戏产品的深层魅力起着不可或缺的作用;控制游戏节奏,当是游戏开发设计中的一个关键环节;优秀的游戏不仅善于通过音乐渲染气氛,也几乎都善于使用音乐去控制玩家的交互频率[5],追求游戏节奏构思的良好实现,让玩家在游戏中减少无聊感。
4.5 数据库的设计
常用操作是:
1)加载驱动程序:Class.forName(driverClass);
2)获得数据库连接DriverManager.gerConnection(URL,user,password);
3)创建Statement对象:conn.createStatement();
4)向数据库发送SQL命令;
5)最后处理数据库的返回结果(ResultSet类)。
5 测试
该游戏的测试方法主要是通过试玩来发现问题,然后根据记录的问题对游戏进行相应的改进,然后再一次测试。最终,打开游戏,游戏的界面各个部分正常显示,如图3、4、5所示。
6 结束语
该文在需求分析的基础上,概述了基于java的flappy bird游戏需要设计与实现的基本功能,以 idea作为开发平台,成功完成各个核心功能。在调试bug的同时,我也看到了不少完善的空间,比如添加不同难度的模式和游戏音乐的变化等,有利于游戲可玩性进一步的提高。
参考文献:
[1] 王红伟, 李会凯. 计算机软件开发的Java编程语言探究[J]. 无线互联科技, 2018, 15(10): 56-57.
[2] 许益凡, 薛益鸽. 基于JAVA平台的魔塔游戏设计[J]. 智能计算机与应用, 2018, 8(3): 235-239, 243.
[3] 张书乐. 爆红的手机小游戏《Flappy Bird》[J]. 信息与电脑: 理论版, 2013(12): 13.
[4] 周贵志. 碰撞检测算法[EB/OL].http://blog.csdn.net/jjwwmlp456/article/details/40679879.
[5] 赵锟. 基于电子游戏节奏的游戏音乐简析[J]. 音乐传播, 2018(2): 123-124.
【通联编辑:谢媛媛】