在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢。本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则、对象、功能和背景音乐的相关内容设计,如果大家对此有兴趣的话,就接着看下去吧!

一、游戏设计—规则
植物大战僵尸中有一个小游戏关卡,屏幕的正上方有一个滚轮机,会随机生成植物,玩家可以选中植物后自由选择草坪来进行安放。基于此游戏模式,本文将该关卡抽取出来,单独做成了一个简易版的植物大战僵尸。屏幕左侧会自动生成植物的卡牌,单击选中后可以放置在草坪上。右侧会自动生成僵尸,不同的僵尸移动速度不同,血量不同,还有的僵尸有隐藏奖励,比如:全屏僵尸静止、全屏僵尸死亡等。这里先说一下游戏暂停的功能应该怎么做。最简单的一种暂停方式是鼠标移出屏幕,游戏暂停。所以这里需要引入一个鼠标监听器事件。如下图所示:

当然,这只是一个简单的通过监听鼠标的位置来改变游戏状态方法。还可以使用键盘监听器,当按下某个键时游戏暂停,这样的用户体验更好,但原理是一样的。
2、游戏设计—对象
首先分析一下游戏中有哪些对象。各式各样的植物,各式各样的僵尸,各式各样的子弹。那么这里就可以抽出三个父类,分别是植物、僵尸、子弹。在面向对象中,子类将继承父类所有的属性和方法。所以可以将三大类中,共有的属性和方法抽到各自的父类中。比如僵尸父类,如图所示:

植物父类、子弹父类就同理可得了。上面说到子类共有的方法需要抽到父类中,那么部分子类共有的方法该如何处理呢?比如,豌豆射手、寒冰射手可以发射子弹,坚果墙就没有射击的这个行为。所以这里就需要用到接口。如图所示:

到此为止,游戏对象的属性、方法基本都定义完了,至于图片的显示以及如何将图片画出来,只需要使用相应的API即可,这里就不做描述了。
3、游戏设计—功能
现在我们有了游戏的对象,该开始让对象加入到游戏中来,接着让他们动起来,最后还得让他们打起来。首先,让对象加入到游戏中来我是这么做的,这里还是以僵尸为例,如图所示:

首先植物入场时是在滚轮机上的,滚轮机上的移动就会涉及到追击和停止的问题。追击的方式当然是追前一个植物卡牌,但当第一个植物卡牌被选中放置到草地上后,那该如何追击呢?将植物集合分为滚轮机上的集合和战场上的集合,如图所示:

接下来该让对象们都动起来了。之前说到在父类中的移动方法是抽象方法,在各自的子类中都进行重写后,不同的对象移动方式就是各式各样的了。如图:

看着代码中对集合复杂的遍历,不得不感概lambda表达式真是个好东西,如图:

如何让对象们打起来呢?下面以僵尸攻击植物为例:


结合图片来看,黑框P代表植物,黑框Z代表植物,虚线是指两者接触的极限距离,当僵尸进入虚线内,就保证可以攻击到植物。至此,游戏的基本功能基本实现了。Java是一门面向对象的语言,万物皆对象,特征皆属性,行为皆方法。肉眼能看到的僵尸、植物、草坪都是对象,对象的特性比如血量、移动速度都是属性,对象的行为比如移动、攻击、死亡都是方法。
4、游戏设计—背景音乐
bgm是一个游戏的灵魂之一。这里给游戏添加背景音乐,可以新建一条线程专门用来执行音乐的解析和播放,如图:

这里需要注意的是,Java中解析音乐的API只支持WAV格式的文件,文件格式的转换大多数音乐播放器都可以做到。
基于Java的游戏设计之植物大战僵尸就讲到这里了,关于Java的更多经典游戏设计尽在博学谷在线IT培训平台。如果大家对这个游戏感兴趣,不妨现在就动手自己做一下。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Spring cloud eureka集群搭建教程
相信Spring cloud eureka集群搭建,对每一个Java学习者来讲都不陌生。想要进阶学习Java的学习者,都绕不开搭建Spring cloud eureka集群这一重要环节,同时这也是让很多人头疼的一个问题。本文就来为大家介绍一下博学谷的相关教程,希望能帮助到有这方面疑问的小伙伴。
6884
2019-11-01 19:14:07
Docker开发教程学习资源
Docker开发教程学习资源,需要学习Docker概览、Docker版本与安装介绍、Docker核心技术之镜像、Docker核心技术之容器、Docker核心技术之容器与镜像、Docker核心技术之数据卷、Docker核心技术之仓库、Docker核心技术之Dockerfile、Docker核心技术之Docker-Compose。
6154
2019-11-11 19:14:44
JVM内存区域复习汇总
相信绝大所数的开发求职者在面试中,总能遇到面试官问JVM内存区域的相关知识点。今天小编就来和大家一起复习一遍JVM内存区域,主要内容包括内存区域的划分、运行数据区、生命周期以及了解JVM内存的方法。
5896
2020-07-16 14:48:51
BAT大厂Java常见面试题分享
马上就要到今年的秋招季节了,不知道大家有没有准备好面试,能不能准确把握面试官的考核点,能否准确理解并说出技术技能的底层原理和应用,能否在面试前猜中考点?如果大家对于面试还没有做好充足的准备,建议大家都来看看博学谷的《BAT 大厂Java常见面试题》课程,相信对大家准备面试,或多或少会有一些帮助。
7729
2020-07-23 15:23:19
Java开发岗位需求量大吗?市场行情怎么样?
互联网大厂每一次的动作都会带来一股网络热浪,前不久的“反996”如此,最近腾讯推出员工退休待遇方案亦是如此。虽然退休离我们还很远,但是只要关乎福利就是我们关注的事情。
6323
2021-11-10 11:01:57
