javafx中的tree_JavaFX中的塔防(6)

javafx中的tree

因此,我们已经在本教程的第6部分中,与此同时,游戏也取得了长足的进步。 在这一部分中,我们最终将添加一个显示得分的图层,已达到目标的敌人数量,启动下一个Wave的按钮以及用于购买新炮塔的资金。 说到钱,我们还没有逻辑,所以我们应该先解决这个问题。 不过,我不想将价格存储在应用程序代码中,因为这样会使我虚构的关卡设计师(不懂编程的人)难以微调变量。 我也想将所有东西都放在一个地方,所以如果我们决定添加一个新的刀塔,则不需要在许多不同的地方进行更改。 幸运的是,我们可以将属性存储在TileSet中,因此我们将这样做。

Tilemaps的TMX格式确实是一种将设计与编程内部结构区分开的好方法(当涉及到游戏时,业务逻辑听起来确实是错误的)。 结果,图形设计师可以创建资产,关卡设计师可以创建关卡,甚至用户也可以轻松地修改游戏并创建自己的关卡。 到目前为止,我们已经使用Tiled编辑器创建了一个关卡,并且还在其中一层中存储了一些有关敌人生成和攻击路径的元信息。 现在,我们将一些属性添加到TileSet的各个Tile中。 这仅适用于内部TileSet,因此在Tiled中,您必须通过“地图-> new Tileset”定义新的Tileset。 如果现在右键单击图块,则它具有定义图块属性的操作。 我已经为塔基定义了一些:

Bildschirmfoto-2013-08-11-um-08.29.05

我添加了几个属性,包括武器的射程,射速,造成的伤害,名称和说明(稍后显示)以及类型,我想用来定义用作子弹的瓦片。 也许还会有像激光这样的武器,必须以不同的方式实施。 然后,我可以决定对这种类型使用不同的逻辑方式。 我可以通过Tileset从Tile获取属性,如下所示:

Properties properties = tileSet.getTileList().get(selectedIndex).getProperties();

在CannonSprite内,我可以这样使用它们:

String rangeProperty = properties.getProperty("range");
if (rangeProperty != null) {
range = Integer.parseInt(rangeProperty);
}
String damageProperty = properties.getProperty("damage");
if (damageProperty != null) {
damage = Integer.parseInt(damageProperty);
}
String rateProperty = properties.getProperty("firerate");
if (rateProperty != null) {
rate = Float.parseFloat(rateProperty);
}//....

我们将对EnemySprites做同样的事情,因此我们可以确定销毁它们的要点,它们的损坏抵抗力,也许是恢复率等。这种方法的优点之一是,它也非常易于扩展。 如果以后我决定添加一个新的炮塔,该炮塔会产生磁场以迷惑敌人并使他们的飞行速度变慢,我可以通过向该特定炮塔添加一个新的Property来做到这一点。 我不必更新旧的关卡设计或破坏用户的自定义关卡。 在这一方面,它类似于我最喜欢的编程技术之一,即“ 组成于继承 ”。

我们现在可以使用这些属性,例如,通过修改炮塔的FireBehavior评估间隔,使炮塔以不同的速率发射:

@Override
public long getEvaluationInterval() {
return (long)(2000000000*rate);
}

结果是:

现在第二个炮塔以更高的射速发射,同时每发子弹造成的伤害更少。 如果将炮塔的价格与不同的价格以及可放置炮塔的有限空间相结合,我们已经具备了使塔防成为有趣游戏的一些战略要素。 现在,我们的关卡设计师负责设计关卡,设置价格和其他属性,以使游戏变得有趣,同时我们继续添加更多功能。

现在让我们从HUD图层开始,简单地显示分数:

private class HUD extends Layer {@Override
public void draw(GraphicsContext graphicsContext, double x, double y, double width, double height) {
graphicsContext.setFill(Color.RED);
graphicsContext.setFont(Font.font("OricNeo", 12));
graphicsContext.fillText("Score: "+score, 10, 16);
}}

分数在我的游戏中定义为IntegerProperty(这不是JavaFX属性!),并传递给EnemySprites:

private IntegerProperty score = new IntegerProperty(0);

因此,在EnemySprites“ die”方法中,我们只是增加该值:

@Override
public void die() {
super.die();
getParent().addSprite(new Sprite(getParent(), explosionAnimation, "explosion", getX() - 30, getY() - 80, 128, 128, Lookup.EMPTY));
score.set(score.integerValue()+killPoints);
}

现在将HUD添加为顶层,您可以看到分数:

我们接下来需要的是某种方式开始浪潮。 为此,最好具有某种简单的控件,例如按钮。 我们可以用不同的方式添加。 最简单的方法可能是将画布放入StackPane中,在其顶部添加AnchorPane并向其添加JavaFX Node或Control。 但是我们只想使用FXGameEngine功能,所以我们将Sprite用作按钮:

final Sprite button = new Sprite(canvas, "button",  tileMap.getWidthInPixels()- 30, 20, 20, 20, Lookup.EMPTY);
button.setOnMouseClicked(new MouseEventHandler() {@Override
public void handle(MouseClick click) {
startWave();
button.die();
}
});
canvas.addSprite(button);

我很确定EventHandling的API仍会有所更改,但是它将保持与此类似的抽象。 此Sprite没有渲染器,因此将使用仅绘制Rectangle的默认渲染器:

今天就这样。 在下一部分中,我们将向游戏添加资金,因此它会变得更加有趣……

翻译自: https://www.javacodegeeks.com/2014/03/tower-defense-in-javafx-6.html

javafx中的tree

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网技术应用在智慧医疗的应用案例

医疗卫生体系的发展水平关系到人民群众的身心健康和社会和谐,一直是社会关注的热点之一。智慧医疗旨在通过物联网技术实现准确、实时感知医疗信息,并进行全面、科学分析,作出智慧的决策,从而提升医疗服务的信息化水平,…

Semtech的LoRa技术实现智能化工业应用管理

EasyReach公司基于LoRa的物联网解决方案将工业设备连接到云端. ​ 美国加利福尼亚州卡马里奥市,2018年12月 - 高性能模拟与混合信号半导体产品及先进算法领先供应商Semtech Corporation (纳斯达克交易代码:SMTC)日前宣布&#x…

物联网将成为第四次工业革命的基石

在一个利润微薄的行业中,物联网正在展示一系列实际应用案例,这些案例正在为早期采用者逐步带来成果。这就是物流4.0的开始吗? 物联网实现了一个互联的生态系统,该生态系统可以传输超出传统设备限制的物理环境信息。这些设备允许在…

为什么在极端恶劣环境下不能使用商用以太网交换机?

在工业现场中,极端温度可能切断远程数据流的输送,以太网交换机在现场传输中发挥着重要的作用,但由于其昂贵的价格,有些客户会选择使用商业级以太网交换机,但是这类交换机容易在极端环境下引起故障,这是为什…

物联网在改造海上钻井平台监测方面发挥着关键作用

物联网(IoT)并没有遗漏任何面临挑战的行业,它为这些行业提供了更多发展机会。Biz4Intellia首席执行官SanjeevVerma表示,凭借其在陆上石油和天然气运输方面的持续发展,物联网也已开始在海上钻井平台监测方面占据一席之地…

这几个行业会从物联网革命中获得最大利益

工业物联网已经与消费物联网产品紧密地结合在一起,现正在改变我们所知的工业应用。Aranet公司的Vizma Bramane表示,当所有设备参数都可以全天候访问时,大数据将成为现实。 传感器提供的实时价值数据流可以让您更深入地了解现有流程的内部运作…

抖音计算机音乐你要我,抖音你要我怎么做是什么歌 抖音你要我怎么做怎么说才能爱我歌曲介绍...

最近小编刷抖音经常刷到唱“你要我怎么做怎么说才能爱我”的视频,觉得很好听就搜索了整首歌来听,相信很多小伙伴也和小编一样喜欢这首歌,接下来就把这首歌分享给大家。“你要我怎么做怎么说才能爱我”这首歌的歌名叫做《9277》,《…

物联网卡加持智能电网,发展更具优势

国家电网一直以来都是非常重要的部门,随着技术的不断革新,物联网开始广泛的应用于国家电网,目前大多数国家的主要目标是升级其配电系统上的老化设备并安装智能电表,智能电表可以插入物联网卡联网实现很多功能。 数据显示&#xff…

浅谈工业无线遥控器的基本定义及原理

基本定义 工业无线遥控器是专门用来控制工程机械或工业设备的远程无线遥控装置。主要用于冶金、造船及集装箱码头、仓储、机械制造、化工、造纸、建筑和工程机械等使用起重机械并使之实现遥控操作的行业。其有效控制范围为半径100米的任何方位且不受障碍物的影响,操…

电源模块是电源吗?

我们平时用的充电器或电池等供电装置到底是不是电源呢?首先让我们来看一下电源的定义:电源就是把其他形式的能量转化成电能的装置。即:电源是提供电能的装置。因为它可以将其它形式的能转换成电能,所以我们把这种提供电能的装置叫…

浦发银行计算机笔试题库,2018浦发银行校园招聘笔试试题库

原标题:2018浦发银行校园招聘笔试试题库银行招聘网(http://www.jinrongren.net/)提醒:2018浦发银行校园招聘公告已经发布啦,共招聘2152人,公告中明确表明柜员岗专科以上就可以报考,专业不限,也并未对英语四…

浅析二层工业交换机的特点

二层交换技术的发展比较成熟,二层工业交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。那么,二层工业交换机的特点有哪些呢&am…

单片机、ARM、DSP与CPU之间的关系大揭秘

你知道单片机、ARM、DSP都是CPU吗,它们之间又有什么不同,小编进行了整理和编辑。 CPU:中央处理器 CPU 包括运算逻辑部件、寄存器部件和控制部件等,其本质就是一个集成电路,实现的功能就是从一个地方读出一个指令&…

物联网技术系列之3分钟了解无线MESH网络

今天来聊聊无线MESH网络的,开始之前,先说一句:“无线MESH网络是个好东西!” 要说无线MESH网络,首先从我们都熟悉的无线网络说起。 无线网络相信在座的各位一定一点儿也不陌生,现在它已经融入到我们生活的…

工业交换机故障分析的原则

由于工业交换机故障现象多种多样,没有固定的排除步骤,而有的故障往往具有明确的方向性,一眼就能识别得出。所以只能根据具体情况具体分析了,为了使的排障工作有章可循,我们可以在分析工业交换机的故障时,按…

NB-IoT在智慧烟感解决方案中的应用

火灾无疑是人员安全和公共财产的最大威胁之一,近年来独立烟感越来越多,但由于独立烟感产品功能单一,只能发出声光报警,存在一定局限性。随着全国NB-IOT技术的成熟,新的智慧烟感解决方案呼之欲出。 传统独立烟感的缺点 …

【Mybatis】

mybatis 1.配置文件实现增删改查介绍1.1第一步 环境准备1.2 第二步 查询所有数据1.2.1 步骤1: 编写接口方法1.2.2步骤二: 编写SQL语句1.2.3步骤三: 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题 1.3 参数占位符1.4 …

盘点物联网的4个认知误区

误区一 把传感网或RFID网等同于物联网。事实上传感技术也好、RFID技术也好,都仅仅是信息采集技术之一。除传感技术和RFID技术外,GPS、视频识别、红外、激光、扫描等所有能够实现自动识别与物物通信的技术都可以成为物联网的信息采集技术。传感网或者RFI…

工业交换机安全性能的必要性

22%的客户认为认为在选购工业以太网交换机等产品和解决方案时,最关心的就是安全性,其次是稳定性(21%)、速度(14%)和兼容性(12%)。接下来,飞畅科技的小编就来为大家详细介绍下工业交换机安全性能的必要性,一起来看看吧!…

京津冀计算机学科大学排名,2021年京津冀地区高校排名公布,北师排第三,央财不敌河大?...

在我国的京津冀地区一直以来经济相对繁荣,而且城市密集,不管是经济发展还是高等教育都有非常雄厚的实力。据数据统计,在去年京津冀地区经济总量8.60,000亿,而且人口达到1.1亿,并且该地区高等院校相对集中,这…