在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:hearthstone开源软件地址:https://gitee.com/EidenRitto/hearthstone开源软件介绍:Java - 炉石传说这是什么这是用Java语言实现的游戏--炉石传说 包含组件
快速开始
如何扩展添加新的卡牌为什么要添加卡牌
有哪些卡牌需要被添加
如何添加卡牌
public class AlexstraszaCard extends Alexstrasza {}
@TargetScope(classScope = HeroMinion.class)public class AlexstraszaCard extends Alexstrasza {}
@TargetScope(classScope = HeroMinion.class)public class AlexstraszaCard extends Alexstrasza { /** * "<b>战吼:</b>\n" * + "将一方英雄的剩余生命值变为15。" */ @Override protected Battle selfBattleCry() { return (e,t) -> t.setHealth(15); }}
/** * 幻觉药水 * @author Eiden J.P Zhou * @date 2020/8/7 14:58 */public class PotionOfIllusionCard extends PotionOfIllusion { /** * "将你的所有随从的1/1的复制置入你的手牌,并使其法力值消耗变为(1)点。" * @param gamer 当前卡牌所有者 * @param target 所指定目标 */ @Override public void magicEffect(Gamer gamer, Minion target) { //拿到己方场上所有的随从 List<Minion> minions = gamer.getMinions(); minions.stream() //转化成他们对应的随从卡牌ID .map(Minion::getCardId) .mapToInt(Integer::parseInt) .boxed() //从卡牌工厂拿到卡牌ID对应的卡牌 .map(CardFactory::getCardById) //我们能断定生成的卡牌一定是随从,强转为随从卡 .map(e -> (AbstractMinionCard) e) //过滤掉空(理论上不存在空) .filter(Objects::nonNull) //把每一张随从卡的牌面设置1/1,费用为(1) .peek(e -> { e.setCost(1); e.setAtk(1L); e.setHealth(1L); }) //添加进手牌 .forEach(e -> gamer.getHand().addHandsCard(e)); }} /** * 秘教侍僧 * @author Eiden J.P Zhou * @date 2020/8/6 15:55 */public class CabalAcolyteCard extends CabalAcolyte { @Override protected SpellBurst selfSpellBurst() { //随机获得一个攻击力小于或等于2的敌方随从的控制权。 return (s,c) -> { //拿到所有的敌方随从列表 List<Minion> minions = s.getOwner().getEnemy().getMinions(); //过滤其中攻击力小于或等于2的,并生成一个副本 List<Minion> collect = minions.stream() .filter(e -> e.getAttackValue() <= 2).collect(Collectors.toList()); //取一个随机的随从 Optional<Minion> randomOne = Optional.ofNullable(RandomUtils.getRandomOne(collect)); //如果存在则 if (randomOne.isPresent()){ //敌方移除它 s.getOwner().getEnemy().removeMinion(randomOne.get()); //我方添加它 s.getOwner().addMinion(randomOne.get()); } }; }} /** * 魔杖窃贼 * @author Eiden J.P Zhou * @date 2020/8/7 15:35 */public class WandThiefCard extends WandThief { /** * "<b>连击:</b><b>发现</b>一张法师法术牌。" */ @Override protected Combo selfCombo() { return (s,t)->s.getOwner() //发现一张 .discoverChooseOne(() -> CardFactory.buildCard() //法师的 .cardClass(CardClass.MAGE) //法术牌 .cardType(CardType.SPELL) .discover()); }} /** * 体能研习 * @author Eiden J.P Zhou * @date 2020/8/8 0:39 */public class AthleticStudiesCard extends AthleticStudies { /** * "<b>发现</b>一张<b>突袭</b>随从牌。你的下一张<b>突袭</b>随从牌法力值消耗减少(1)点。" * * @param gamer 当前卡牌所有者 * @param target 所指定目标 */ @Override public void magicEffect(Gamer gamer, Minion target) { //发现 gamer.discoverChooseOne(() -> CardFactory.buildCard() //随从牌 .cardType(CardType.MINION) //具有突袭标签 .gameTags(GameTag.RUSH) .discover()); //添加一个规则,这个规则会使具有突袭的随从卡牌费用减少1点,满足条件(打出随从)后移除这个规则 gamer.addRule(new NextCommonCostReduceRule(1,CardType.MINION, card -> Arrays.stream(card.getClass().getAnnotation(Tags.class).value()) .boxed() .collect(Collectors.toSet()) .contains(GameTag.RUSH.getCode()))); }}
附录
交流群 :649207014 |
请发表评论