炉石传说的代码是Java吗,hearthstone: 炉石传说,JAVA模拟器(HearthStone Simulator for Java)...

た 入场券 2023-01-17 08:25 223阅读 0赞

Java - 炉石传说

这是什么

这是用Java语言实现的游戏—炉石传说

实现了什么功能

炉石传说

主要组件

随从

英雄

武器

奥秘

任务

卡牌关键效果

随从特效

战吼

亡语

卡牌

基础包

经典包

荣誉室

AI

QQ群对战

酒馆战棋

效果图

005c38db1bdb6653b74e4ee17e52f666.png

d31f7d1754e632c92b84d88c4b361a2a.png

7741f6c5e711bca18dff3b60804958f7.png

dd1fd20b062a91fb8c7688a57c00ee83.png

e2f6705bc90ea97ddd6c13bd291f27f4.png

包含组件

模块

介绍

功能描述

hearth-core

核心模块

整个游戏的架构,接口

hearth-card

卡牌模块

游戏的卡牌各种具体实现

hearth-control

控制器模块

游戏的测试启动和控制器,目前只能以文字的交互形式启动

card-generator

卡牌生成器

从暴雪的卡牌数据库中生成对应的java类

快速开始

克隆项目

编译

使用maven工具 install核心模块【hearth-core】

在【card-generator】模块中运行cn/eiden/hsm/util/XmlUtil.java

使用maven工具 install全部模块【hearth】

运行

项目的测试运行全部都在【hearth-control】模块中

java控制台运行

运行cn/eiden/hsm/cockpit/console/ConsoleCockpit.java

QQ运行

qq模块使用http插件,系统中使用的是酷Q

运行cn/eiden/hsm/cockpit/coolq/HearthApplication.java

微信运行(未实装)

安装和配置酷Q

  1. 下载 酷Q… (如果有 酷Q Pro 的话效果更好哦!)

下载完后解压到你想安装的目录下

首次启动请运行 cqa.exe 或 cqp.exe, 并登陆机器人的 QQ 号

然后退出 酷Q (右键悬浮窗点退出)

把 .cpk 文件下载下来, 放进 酷Q安装目录\app 文件夹里

启动 酷Q

右键悬浮窗, 然后点击 应用 -> 应用管理

列表里现在应该有 [未启用] HTTP API, 点击它, 点击启用

启用的时候会提示需要一些敏感权限, 选择继续

启用之后在 酷Q安装目录\app 文件夹里会出现 io.github.richardchien.coolqhttpapi 文件夹

退出 酷Q

  1. 配置 酷Q HTTP 插件:

在 io.github.richardchien.coolqhttpapi 文件夹里创建一个文件名为 config.cfg 的配置文件

并在其中写入以下代码

[general]

host=0.0.0.0

port=接收端口

post_url=http://127.0.0.1:发送端口

enable_backward_compatibility=false

把发送端口和接收端口改成你的机器人程序里用的端口 (测试机器人的接收为31091, 发送31092)

注意: 酷Q 配置里的发送端口要和传进 Picq 的接收端口一样, 然后 Picq 的发送端口也要和 酷Q 的接收端口一样!

( 这是因为 酷Q 需要发送到 Picq 的接收端口去, 而不是发送到对方的发送端口ww )

如果 酷Q 要和你的机器人程序分开运行的话, 请把127.0.0.1改成你的机器人部署的服务器的地址

保存配置文件

  1. 配置完成! 启动 酷Q!

如何扩展添加新的卡牌

为什么要添加卡牌

炉石传说运营了6年,19+1个卡牌扩展包,卡牌数量太多

本项目从卡牌数据源能生成全部的牌面信息(费用,稀有度,职业,攻击力,生命值等静态信息)

作者将会从底层实现全部的游戏功能,并且至少每一种效果的卡牌会写出至少一个示例卡牌,其他的卡牌效果需要被仿写

希望喜欢炉石传说和Java的朋友和我一起为本项目贡献卡牌

有哪些卡牌需要被添加

大多数白板随从,武器(无描述的卡牌)无需手动添加

只有关键字描述的随从(比如[圣盾] [嘲讽] [冲锋]等)无需手动添加

关键字配合文字描述的卡牌(比如 战吼:从你的牌库中抽一张奥秘牌。)

全部的法术牌

其他牌面带有描述的卡牌

如何添加卡牌

在【hearth-card】模块中使用搜索功能找到你要实现的卡牌 (例如,我想实现卡牌【阿莱克丝塔萨】)

如果存在多个结果,则选择对应拓展包内的卡牌类(【阿莱克丝塔萨】在经典包,经典包的包名为【expert1】)

复制这个类,在cn/eiden/hsm/game/card目录中找到对应的扩展包和职业(【阿莱克丝塔萨】是经典包的中立随从对应的包名为【classic.neutral】)

在这个包中创建一个新类继承自上一步的类,新的类名一般在前面得类后面加Card

public class AlexstraszaCard extends Alexstrasza {

}

如果这张卡牌在打出时需要选择目标(炉石传说中的卡牌只有选择一个目标和不需要选择目标两种)则需要在类头加入注解@TargetScope

需要注意的是,有些卡牌可以选择全部目标(敌/我)(随从/英雄) 如火球术

有些卡牌则只能选择敌方目标,如横扫

示例中只能以双方英雄为目标则给注解添加以下属性

灵活使用TargetScope注解

@TargetScope(classScope = HeroMinion.class)

public class AlexstraszaCard extends Alexstrasza {

}

战吼随从重写selfBattleCry方法,返回一个战吼接口的实现

@TargetScope(classScope = HeroMinion.class)

public class AlexstraszaCard extends Alexstrasza {

/**

* “战吼:\n”

* + “将一方英雄的剩余生命值变为15。”

*/

@Override

protected Battle selfBattleCry() {

return (e,t) -> t.setHealth(15);

}

}

完成!一张新的卡牌特效成功实现

其他卡牌则参考项目中已经实现的其他卡牌

附录

卡牌关键效果及其部分demo示例(已经实现但没有示例的为自动生成,无需重写)

卡牌包

基础包 CORE

经典包 CLASSIC

荣誉室 HOF

纳克萨玛斯 NAXX

地精大战侏儒 GVG

黑石山的火焰 BRM

冠军的试炼 TGT

探险者协会 LOE

上古之神的低语 OG

卡拉赞之夜 KAR

龙争虎斗加基森 CFM GANGS

勇闯安戈洛 UNG

冰封王座的骑士 ICC

狗头人与地下世界 LOOT

女巫森林 GIL

砰砰计划 BOT

拉斯塔哈的大乱斗 TRL

暗影崛起 DAL

奥丹姆奇兵 ULD

巨龙降临 DRG

迦拉克隆的觉醒 YOD

外域的灰烬 BT

交流群 :649207014

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 传说彻底卸载方法

    炉石传说彻底卸载方法  使用电脑下载软件的时候,可能会带一些流氓软件,而有的流氓软件你去卸载的时候,并不能成功卸载。今天公司同事遇到一个炉石传说无法卸载,在控制面板里找到