1. FlappyBird小游戏设计与实现
1.1需求分析
使用java语言,在IDEA环境下,设计实现一个简单有趣的FlappyBird小游戏。在当今社会,人们的工作学习压力日益增大,生活节奏逐渐加快,多数人没有足够的时间去休闲娱乐,放松自己。FlappyBird小游戏是一款小型休闲类游戏,
它可以锻炼人们的反应能力,有益于开发智力。
本游戏要求,实现以下基本需求:
功能需求:
(1) 控制游戏:按住空格键可以操纵小鸟以一定的速度向上飞行,松开空格键则使小鸟自由下落;控制小鸟躲避不同类型的移动的障碍物,撞到障碍物或者触碰到游戏页面的最上端或者最下端都会导致小鸟死亡,游戏结束;控制小鸟飞行过程中,添加计时和计分功能,并且保存最佳的一次游戏记录。
(2) 重置游戏:当小鸟死亡时,弹出提示页面,按住空格键将重新开始游戏。
非功能需求:
(1) 游戏页面:游戏窗口化&固化保障游戏图形界面的友好性。
(2)游戏进入界面:实现提示页面,按住空格键开始游戏。
1.2游戏功能设计
根据需求分析的结果,本游戏至少要分为以下三个模块:游戏启动模块、游戏主体模块、自定义工具模块,分别用于启动游戏、实现游戏主体功能、辅助实现游戏主体。
本游戏的整体功能模块图如2-1所示。
图1-1 FlappyBird小游戏功能结构图
该游戏程序由本人与另外两名同学三人共同完成;其中,本人完成的部分有:设计游戏窗口及展示面、设计游戏背景、绘制小鸟、绘制背景云层、设计三种类型的障碍物、实现障碍物随机出现和移动、游戏计时和计分、保存最佳记录、重置游戏。
1.3 游戏详细设计(具体实现)
在此处主要展示main模块的实现,是整个游戏程序的重要组成部分。具体细分为Barrier类、BarrierPool类、Bird类、Cloud类、GameBackGround类、GameBarrierLayer类、GameFrame类、GameFontGound类、GameReady类、GameTime类、MovingBarrier类,下面将主要展示main模块下几大主类实现的具体功能。
(1)Barrier类
该类实现对障碍物的设计,代码如下:
package com.bird.main;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import com.bird.util.Constant;
import com.bird.util.GameUtil;
public class Barrier {
// 障碍物需要用到的三张图
static BufferedImage[] imgs;
static {
final int COUNT = 3;
// 类加载的时候,将三张图片初始化
imgs = new BufferedImage[COUNT];
for (int i = 0; i < COUNT; i++) {
imgs[i]=GameUtil.loadBufferedImage(Constant.BARRIER_IMG_PATH[i]);
}
}
// 障碍物移动的速度
public static final int MIN_SPEED = 1;
public static int MAX_SPEED = 5;
int speed;
// 获得所有的障碍物元素的宽高
public static final int BARRIER_WIDTH = imgs[0].getWidth();
public static final int BARRIER_HEIGHT = imgs[0].getHeight();
public static final int BARRIER_HEAD_WIDTH = imgs[1].getWidth();
public static final int BARRIER_HEAD_HEIGHT = imgs[1].getHeight();
// 是相对于障碍物的x,y的坐标,不是相对于窗口
int x, y;
int width, height;
int type;
public static final int TYPE_TOP_NORMAL = 0;
public static final int TYPE_TOP_HARD <