weapon
定义一个武器类,武器需要具有武器的名称,武器的伤害值
equipment
定义一个装备类,武器需要含有装备名称,装备的防御值
character
定义一个角色类,角色含有角色名称和角色ID
skill
定义一个技能类,具备法术攻击和物理攻击的功能
hero
定义一个英雄类,英雄含有英雄名称,英雄的角色,英雄的生命值,英雄需要含有武器属性,含有装备属性
需要具备攻击功能, 切换 技能功能 ,具备添加穿戴装备的功能游戏开始时,某些英雄登场,这些英雄需要穿戴一些装备和武器,
显示某某英雄开始交战,
某某英雄释放了,某些技能,造成了对方多大的伤害,
当某一个英雄的血量低于10% 提醒,血量过低,建议切换技能或者加血动作,
当全场只剩一个英雄的时候,其他英雄全部血量为0的时候,结束``````java思路:
1.初始化
业务内容:明确参与战斗的对象数量,以及对象的属性(装备.技能等)
开发内容:
创建人物类
人物类中包含人物的基本信息: 姓名,HP(血),MP(魔法)
人物类中包含装备属性:武器(攻击值),护具(防御值(减伤效果))
人物类中包含技能属性:物理攻击(伤害值),魔法攻击(伤害值)2.确定行为
明确任何交战,如何释放技能,
如随机释放技能,按照概率释放被动,
如不需要参与者随机战斗
开发内容:
创建一个容器,存放所有要参战的人物队列3.明确关系
是回合制还是混战,是一对多,还是多对多,还是随机匹配
如回合制,一对多随机匹配
开发内容:
遍历容器
判断容器中的对象的属性值HP,是否 <= 0
如果小于0,则不参与下次属性赋值
从容器中取出一个对象,随机遍历多个对象,按照属性赋值
------------------------------------------------
如果是混战则需要每个对象,按照攻击方式的不同(AOE或者单体伤害),决定随机多少对象来进行赋值4.明确结束的条件
是小队存活,还是生存数量,还是最后一人
如最后一人存活
开发内容
当容器中仅剩 1个对象的属性值 HP > 0 时,结束循环,打印结果

weapon
定义一个武器类,武器需要具有武器的名称,武器的伤害值

private String weaponName;  // 武器的名称private double injuryValue; // 武器的伤害值

equipment
定义一个装备类,武器需要含有装备名称,装备的防御值

 private String equipName;private double defenceValue;

character
定义一个角色类,角色含有角色名称和角色ID

   private String characterName; // 角色名称private String charID;

skill
定义一个技能类,具备法术攻击和物理攻击的功能

//skill
//定义一个技能类,具备法术攻击和物理攻击的功能
public interface  Skill {void physicsAttack(Hero ... heroes); //物理攻击void magicAttack(Hero ... heroes);   //法术攻击
}

hero
定义一个英雄类,英雄含有英雄名称,英雄的角色,英雄的生命值,英雄需要含有武器属性,含有装备属性
需要具备攻击功能, 切换 技能功能 ,具备添加穿戴装备的功能

package todayHw;import java.util.Random;/*
定义一个英雄类,英雄含有英雄名称,英雄的角色,英雄的生命值,
英雄需要含有武器属性,含有装备属性
需要具备攻击功能, 切换 技能功能 ,具备添加穿戴装备的功能*/
public class Hero extends Character implements Skill {// 继承自 角色类// 英雄名称// 英雄的角色private double HP;       // 血量    HP=health pointprivate Weapon weapon;   // 武器属性private Equipment equip; // 装备属性public int addHP() {int temp = new Random().nextInt(50);System.out.println("本次加血" + temp + "点");return temp;}/*** 减去对方英雄的HP** @param heroes*/// 实现一下 接口中的 物理攻击 和 法术攻击@Overridepublic void physicsAttack(Hero... heroes) {// 物理攻击System.out.println("===================================");// 输出获取武器的伤害值double weaponThisInjury = weapon.getInjuryValue();// 减去对方英雄的HPfor (int i = 0; i < heroes.length; i++) {// 1. 判断对方的血量是否为 0if (heroes[i].getHP() > 0 && this.getHP() > 0) {// 0.8 ~ 1.5之间随机// 武器造成的伤害值 = 武器的伤害值(80% - 150%) - 防御值Random r = new Random();weaponThisInjury = (int) (weaponThisInjury * r.nextDouble() * 1.5) - heroes[i].getEquip().getDefenceValue();// 如果伤害值 经过 防具减伤后 攻击值小于0,则不减少 HPif (weaponThisInjury < 0) {System.out.println(" 格挡掉了本次所造成的所有伤害");} else {// 显示盾牌System.out.println(heroes[i].getCharacterName()+ " 装备了 "+ heroes[i].getEquip().getEquipName()+ "格挡掉了 , 来自"+ this.getCharacterName()+ " 的 "+ heroes[i].getEquip().getDefenceValue()+ " 点 伤害值! ");System.out.println(this.getCharacterName()+ " 使用 "+ this.getWeapon().getWeaponName()+ " 对 "+ heroes[i].getCharacterName()+ " 本次物理攻击的伤害值是: " + weaponThisInjury + " HP");heroes[i].setHP(heroes[i].getHP() - weaponThisInjury);}// 判断此次攻击后 血量是否 小于 10if (isLowerThenTen(heroes[i])) {System.out.println(heroes[i].getCharacterName() + " 发动被动魔法攻击");magicAttack(this);}// 判断此次攻击后, 血量是否为 0isEmpty(heroes[i]);// 输出对方的英雄剩余的HPif (heroes[i].getHP() > 0) {System.out.println("对方 " + heroes[i].getCharacterName() + " 还剩余 " + heroes[i].getHP() + " HP");}// 输出己方的血量System.out.println("己方 " + this.getCharacterName()+ " 还剩余 "+ this.getHP()+ " 点血量 ");}}System.out.println("===================================");}// 判断对方血量是否低于 10public boolean isLowerThenTen(Hero hero) {//if (hero.getHP() < 10 && hero.getHP() > 0) {System.out.println(hero.getCharacterName() + " 血量低于10");System.out.println("建议 " + hero.getCharacterName() + " 转换技能或者加血!!!");boolean addOrMagic = new Random().nextBoolean();if (addOrMagic) {System.out.println(hero.getCharacterName() + " 使用加血功能 ");int tempAddHP = addHP();hero.setHP(hero.getHP() + tempAddHP);System.out.println(hero.getCharacterName() + " 加血 " + tempAddHP + "点");}return true;} else {return false;}}// 判断对象经过本次攻击后,血量是否小于 0;public void isEmpty(Hero hero) {//if (hero.getHP() < 0) {System.out.println(hero.getCharacterName() + " 的血量低于0 " + " 结束本次战斗");System.out.println("造成 " + Math.abs(hero.getHP()) + " 点,过量伤害!!!");return;}}@Overridepublic void magicAttack(Hero... heroes) {// 魔法攻击/*1.判断血量是否为 02.攻击对方*/for (int i = 0; i < heroes.length; i++) {// 1. 判断对方的血量是否为 0if (heroes[i].getHP() > 0) {// 2. 获取对方的血量// 3. 以对方血量为随机数,对 对方 造成伤害int magicInjury = new Random().nextInt((int) heroes[i].getHP());System.out.println("对 "+ heroes[i].getCharacterName()+ "造成"+ magicInjury+ " 点 魔法伤害 ");// 4.减掉血量heroes[i].setHP(heroes[i].getHP() - magicInjury);}// 判断此次攻击后 血量是否 小于 10isLowerThenTen(heroes[i]);// 判断此次攻击后, 血量是否为 0isEmpty(heroes[i]);// 输出对方的英雄剩余的HPif (heroes[i].getHP() > 0) {System.out.println(heroes[i].getCharacterName() + " 还剩余 " + heroes[i].getHP() + " HP");}}}// 空参构造public Hero() {}// 构造方法public Hero(double HP, Weapon weapon, Equipment equip) {this.HP = HP;this.weapon = weapon;this.equip = equip;}// 全参构造public Hero(String characterName, String charID, double HP, Weapon weapon, Equipment equip) {super(characterName, charID);this.HP = HP;this.weapon = weapon;this.equip = equip;}public double getHP() {return HP;}public void setHP(double HP) {this.HP = HP;}public Weapon getWeapon() {return weapon;}public void setWeapon(Weapon weapon) {this.weapon = weapon;}public Equipment getEquip() {return equip;}public void setEquip(Equipment equip) {this.equip = equip;}
}

游戏开始时,某些英雄登场,这些英雄需要穿戴一些装备和武器,
显示某某英雄开始交战,
某某英雄释放了,某些技能,造成了对方多大的伤害,
当某一个英雄的血量低于10% 提醒,血量过低,建议切换技能或者加血动作,
当全场只剩一个英雄的时候,其他英雄全部血量为0的时候,结束

package todayHw;public class Battle {public static void main(String[] args) {Hero h = new Hero(" A ", "100", 100,new Weapon(" 埃辛诺斯双刃 ", 35),new Equipment(" 埃辛诺斯盾牌 ",10));Hero h2 = new Hero(" B ", "101", 100,new Weapon(" 风剑 ", 25),new Equipment(" 橡木盾 ",5));Hero h3 = new Hero(" C ", "102", 100,new Weapon(" 战斧 ", 15),new Equipment(" 复活甲 ",2));boolean flag = true;int count = 1;while (flag) {//System.out.println("第" + count++ +" 回合");System.out.println("A 攻击 BC");h.physicsAttack(h2,h3);System.out.println("B 攻击 AC");h2.physicsAttack(h,h3);System.out.println("C 攻击 AB");h3.physicsAttack(h,h2);if((h.getHP() < 0 && h2.getHP()< 0)||(h2.getHP() < 0 && h3.getHP()< 0)||(h.getHP() < 0 && h3.getHP()< 0)){flag = false;}}}
}

Java 练习之回合制游戏,练习接口,随机,数组,可变参数相关推荐

  1. java模拟回合制游戏大小姐_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 1.1 简介 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议 ...

  2. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  3. java机甲类回合制游戏,2018经典机甲游戏有哪些_好玩的机甲类游戏推荐

    战争机甲:战术 <战争机甲:战术>改编自Privateer Press的同名桌游,后者是一款奇幻题材战棋游戏(它和Gamesworkshop家的<中古战锤>系列很像),玩家要代 ...

  4. 用Java写一个简单的回合制游戏

    用Java写一个简单的回合制游戏 创建基本属性,血量,名字,技能,技能伤害. 如下: public class One3 {//创建三个属性private String name;private St ...

  5. Java实现简单的回合制游戏

    实现简单的回合制游戏 测试类 方法类 角色类 玩家类 测试类 package turn_base;import javax.security.sasl.SaslServer;/** 回合制游戏的需求* ...

  6. 用java搭建一个类似「崩坏:星穹铁道」的简单回合制游戏

    前不久,崩坏:星穹铁道刚刚上线公测了,我也第一时间体验了这款游戏.在游戏的过程中,我偶然注意到,对局界面的左上角角色行动顺序,似乎和队列的模型比较类似(相同于队列的地方在于从队首选取下一个行动的单位, ...

  7. 两个阵营互打的回合制游戏

    两个阵营互打的回合制游戏 定义一个游戏生物基类(Sprite) 下面有4种继承:英雄(Hero),远程-弓箭手(Archer),哥布林(Goblin),远程-哥布林投矛手(GoblinHunter) ...

  8. 回合制游戏网络通信协议及心跳机制调研

    回合制策略游戏 游戏后台网络通讯 游戏通信协议 网络同步 TCP UDP 心跳机制 原理 心跳检测步骤 应用层发送心跳包的技术 要关闭掉线的TCP连接 UDP与心跳 心跳包和轮询的区别 客户端如何快速 ...

  9. 游戏和服务器的协议,为回合制游戏服务器选择哪种协议

    我正在为使用Java的回合制游戏编写游戏服务器. 这些都是事实:为回合制游戏服务器选择哪种协议 游戏的速度是缓慢的,所以客户端需要发送的数据,让我们每8秒多说了,这些数据是大多数时间只有一个小的增量更 ...

最新文章

  1. MapReduce基础开发之十二ChainMapper和ChainReducer使用
  2. 冷却负载、人为因素影响传统数据中心效率
  3. php background-color:,background-color属性怎么用
  4. ios点击大头针气泡不弹出_画家双手抖不停,画不了画丢了工作,却迎合抖动创造出一个个奇迹...
  5. android串口工具apk_【APK】一个强大的Android开发工具!
  6. 微课|中学生可以这样学Python(例5.4):计算决赛现场选手得分
  7. 开箱即用的 Prometheus 告警规则集
  8. 废旧 Android 手机如何改造成 Linux 服务器?
  9. 上海车展自动驾驶产业链盘点
  10. 基于环信的开源即时通讯项目
  11. Xcode iOS 工程目录结构解析
  12. 8、开发工具软件 - 软件技术系列文章
  13. Adobe年底推出Creative Suite 3?
  14. 新年上班第一天生产环境分布式文件系统崩了!!
  15. 网络安全从业人员能力图谱
  16. 解决WinCE内存不足问题
  17. 自己写的融资金融系统的js
  18. javax.net.ssl.SSLException: hostname in certificate didn't match:
  19. linux禁止ping, 服务器防止ping拒绝服务网络攻击
  20. 运用大数据服务环境质量改善

热门文章

  1. 欢迎使用Markdown编辑器
  2. 计算机组成原理实验箱D7,计算机组成原理与系统结构实验仪教学设备,上海求育...
  3. 获取选股宝7x24小时数据
  4. 招银网络---C++
  5. 快递电子面单批量打印接口对接demo-JAVA
  6. 升降压斩波电路matlab,升降压斩波电路matlab仿真
  7. office2007之PPT模版更换与应用
  8. 万科副总裁毛大庆在建策沙龙上关于楼市走向的发言
  9. 心路历程(七)-加入微医集团
  10. 【内网渗透】域横向PTHPTKPTT哈希票据传递