基于Java的僵尸危机游戏设计与实现

2020-12-09 05:43向镍锌郭均赵为
数字技术与应用 2020年10期

向镍锌 郭均 赵为

摘要:如今快节奏与高强度的生活、工作环境使得游戏成为人们放松身心的不错选择,而智能设备的不断升级,使联网的电脑游戏、手机游戏受到人们更多的青睐。文中设计开发了一款基于Java的僵尸危机游戏,该游戏以2D为视角,采用J2SE技术、克隆方式,使用双缓存技术对游戏进行渲染。实现了游戏的模式选择、背景音乐、人物血条显示、宝箱开启、攻击、爆炸效果、血迹渲染、结果显示等多项功能,使用户有更好的游戏体验。该游戏的设计不仅有助于提高开发能力,更为此类游戏开发提供了思路,推动网络游戏的发展。

关键词:僵尸危机;游戏开发;Java

中图分类号:TP311    文献标识码:A    文章编号:1007-9416(2020)10-0000-00

0 引言

随着智能移动终端以及互联网设备的不断优化升级,游戏成为了大众生活中必不可少的一项娱乐放松方式,特别是近年来发展势头良好[1-2]。Java语言作为目前使用最为广泛的网络编程语言之一,具有语法简单、面向对象、稳定、与平台无关、多线程、动态等特点[3],开发人员可以使用少量的代码设计具有界面效果的游戏[4]。本文基于Java语言设计开发了一款僵尸危机游戏,对游戏的功能进行设计分析,实现了怪物的刷新随机性、游戏进程单向性、游戏内容丰富性。

1 总体功能设计

僵尸危机游戏需要实现以下功能:

(1)游戏模式选择:当玩家打开游戏执行文件后,进入批处理打开cmd控制台并进入游戏的模式选择界面,玩家可选择单人或双人模式。

(2)怪物刷新:玩家进入游戏后,普通丧尸和幽灵不断刷新。

(3)宝箱系统:游戏中分为补给箱、奖励箱、boss箱。补给箱在游戏开始后不停刷新,奖励箱和boss箱为杀怪奖励。

(4)特殊技能:玩家在游戏中具有近战攻击、远程攻击、人造墙体、扔炸弹等技能。

(5)游戏难度升级:当玩家杀怪数量到一定程度时,进入不同的“血月时刻”,此时背景、地形、怪物刷新等都会改变。

(6)游戏结束:当玩家被啃食击杀后,游戏结束。此时进入结束界面,界面中显示杀怪个数,并切换背景音乐。

2 载入流程与组件

2.1 游戏载入流程

如图1为游戏载入流程。从Main入口进入游戏程序后分为Start、GameClient、World三个阶段。在Start中,实现游戏开始界面的背景音乐载入、单双人模式选择。进入GameClient客户端后,陆续完成对游戏世界初始化、开辟绘图空间辅助双缓存渲染、开启绘制线程、添加各种监听器等过程。World中包含角色之间的碰撞检测[5]、丧尸幽灵刷新、地形模式改变、炸弹位置搜寻、游戏组件排序等重要环节。

2.2 游戏组件关系

游戏组件之间都有着复杂而不同的继承关系。本游戏中设计了一个GameObject的游戏超类,它作为组件的父类,定义所有组件需要的属性,如:名字、半径、速度、x坐标、y坐标、x改变、y改变、方向、HP、碰撞判断、状态等。之后GameObject被Blood、Wall、Weapon、Role、BandDo、Border、Box继承。Blood为当生命体被攻击后在场景留下的血迹。Wall、Weapon、Role分别为:僵尸危机游戏中的墙体、僵尸危机游戏中武器系统的超类、僵尸危机游戏中角色系统的超类。BangShow为神圣炸弹爆炸的效果渲染。Border、Box分别为僵尸危机游戏边界、僵尸危机游戏宝箱系统的超类。详细的组件关系如图2所示。

3 功能实现

3.1 攻击与装备系统

游戏中英雄具备近战攻击与远程攻击功能。近战攻击时英雄可轉身、上下左右挥动武器,远程攻击时英雄可发出橙色火球对怪物进行攻击,远战攻击演示如图3所示,其关键代码如下:

public boolean collisionDetection(Gameobject object){

return ((!object. equals(this. host)) && !(object  instanceof Weapon) && super. collisionDetection(object));

}

public void setstate(){

initFireball(this.host.getDir()==Direction.STOP?host.getOldDir() : host.getDir());

super.setState();

}

public void setUltimatestate(){

if(getNum()<8)return;

for(Direction dir:Direction.values()){

if(dir= =Direction.STOP)continue;

initFireball(dir);

}

super.setState();

3.2 渲染系统

游戏的渲染系统包括对双缓存、动画[6]、血迹、背景音乐的渲染。本文只对血迹渲染和音乐渲染做详细介绍。

血迹渲染效果共有4种,如图4所示。其关键代码如下:

public Blood(int x, int y, World world)

{

super("Blood", 0, 0, 99999, x, y, false, world);

Random rand = new Random();

int picX = Math.abs(rand.nextInt()) % 2;

int picY = Math.abs(rand.nextInt()) % 2;

this.picX = picX * 475;

this.picY = picY * 475;

}

音樂渲染效果共载入6首不同的音乐,分别在游戏模式选择、进入游戏、血月时刻1、血月时刻2、血月时刻3以及游戏结束界面中体现。其关键代码如下:

public class GameSound extends Thread {

private String mp3url;

private boolean isloop;

public GameSound(String mp3url, boolean isloop) {

this.mp3url = mp3url;

this.isloop = isloop;

}

public void run() {

try {

do {

InputStream mp3 = GameSound.class.getClassLoader().getResourceAsStream("music/" + mp3url);

AdvancedPlayer advancedPlayer = new AdvancedPlayer(mp3);

advancedPlayer.play();

} while (isloop);

} catch (Exception e) {

e.printStackTrace();

}

}

}

4 结语

本文基于Java语言开发了一款僵尸危机游戏,并实现了游戏模式选择、背景音乐、怪物刷新、补给箱刷新、双缓存渲染、血迹渲染、主角搜寻、爆炸、攻击等系列功能,是一款具有良好体验的游戏。通过设计该游戏,不仅能够丰富目前的游戏市场,也为游戏开发扩宽设计思路。

参考文献

[1]许益凡,薛益鸽.基于JAVA平台的魔塔游戏设计[J].智能计算机与应用,2018,8(3):235-239+243.

[2]张会.基于Java的指法练习小游戏的设计与实现[J].电脑知识与技术,2017,13(32):85-86+96.

[3]耿祥义,张跃平.Java 2 实用教程.北京:清华大学出版社,2007.

[4]苟雨晴,兰全祥.基于Java的拼图游戏设计与实现[J].电脑知识与技术,2019,15(2):45-47.

[5]王嘉,李孔清.碰撞检测算法研究综述[J].电脑知识与技术,2017,13(20):202-205.

[6]李清亮,程佳茵,时玮淞,等.计算机图形图像处理技术研究[J].黑龙江科学,2018,9(20):82-83.

收稿日期:2020-08-12

基金项目:四川省2020大学生创新训练项目(S202010628027)

作者简介:向镍锌(1993—),女,重庆人,工学硕士,助教,研究方向:传感器技术、计算机技术。

Design and Implementation of Zombie Crisis Game Based on Java

XIANG Nie-xin,GUO Jun,ZHAO Wei

(Faculty of Information Technology, Xichang University, Liang Sichuan  615013)

Abstract: Nowadays fast-paced and high-intensity life and work environment make games a good choice for people to relax and the continuous upgrading of smart devices has made networked computer games and mobile games much more popular. This paper designs and develops a Java-based games Zombie Crisis which takes 2D as the perspective, uses J2SE, clone, and double-buffer technology to render the game. Thus, the game mode selection, background music, character blood bar display, treasure chest opening, attack, explosion effect, blood stain rendering, result display and many other functions are achieved, which make users have a better gaming experience. The design of the game not only helps to improve development capabilities, but also provides ideas for the development online games.

Key words: Zombie Crisis; game design; Java