用JAVA实现奥特曼打小怪兽的游戏

阅读: 评论:0

用JAVA实现奥特曼打小怪兽的游戏

用JAVA实现奥特曼打小怪兽的游戏

需求:

1、设计奥特曼类,属性有【名字和血量】,行为有【普通攻击、必杀攻击和魔法攻击】

其中普通攻击和必杀攻击一次只能随机攻击一只活着的小怪兽

魔法攻击可以攻击所有的小怪兽

要求普通攻击伤害是20~29之间

必杀伤害如果血量剩余大于60就攻击血量3/4的伤害,如果不大于就直接攻击60伤害

魔法攻击要求固定伤害30

但是无论如何攻击最终小怪兽的血量要保持为0

奥特曼是几率性触发攻击 10%必杀 30%魔法 60%普通

2、设计小怪兽类,属性有【名字和血量】,行为有【普通攻击】

其中普通攻击可以攻击奥特曼

要求普通攻击伤害10~19之间

但是无论如何攻击最终奥特曼的血量要保持为0

  1. 执行类中操作:本游戏是回合制游戏 其中是【1只奥特曼大战4只小怪兽】,如何便捷的管理和存储4只小怪兽请自行分析

    需要在控制台上输出下面的打印效果

    需要打印了第几回合 奥特曼的名字和血量 使用了什么攻击

    如果是魔法攻击即输出 使用魔法攻击攻击全体小怪兽

    如果是普通或必杀攻击 需要写出攻击了那只小怪兽

    打印每只小怪兽的名字和血量 并打印小怪兽使用普通攻击

输出:

======== 第X回合 ========

XXX奥特曼使用了 魔法攻击全体/普攻,XXX小怪兽/必杀,XXX小怪兽

XXX小怪兽 血量XXX

XXX小怪兽 血量XXX

XXX小怪兽 血量XXX

XXX小怪兽 血量XXX

小怪兽使用了普攻

XXX凹凸曼 血量XXX

游戏结束条件:凹凸曼血量为0,小怪兽胜利

所有的小怪兽都死了,凹凸曼胜利

特殊条件说明: 凹凸曼 普攻和必杀不能攻击死了小怪兽 要【随机攻击一只】活着的小怪兽

魔法无所谓攻击所有的小怪兽【死活不限】 小怪兽的血量不能出现负数 0

阵亡的小怪兽不允许参与到本轮攻击中

奥特曼和小怪兽的初始血量根据个人喜好设定【但是不要太过分】

700 ~1000 = 250~350

代码实现:

package com.qfedu.homwork;
//奥特曼与小怪兽的共有父类
public class ET {//奥特曼与小怪兽都有共有属性和行为private String name;private int hp;public ET() {}public ET(String name, int hp) {this.name = name;this.hp = hp;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp;}
}
package com.qfedu.homwork;
//小怪兽类
public class Monster extends  ET{public Monster() {}public Monster(String name, int hp) {super(name, hp);}//小怪兽有一个行为 ==> 需要攻击奥特曼public void attack(Ultraman ultraman){//小怪兽会产生随机伤害int injur = (int)(Math.random()*10+10);//获取奥特曼的血量int hp = Hp();//计算伤害hp -= injur;//不允许血量出现负数最低血量只能是0if(hp > 0){ultraman.setHp(hp); //设置血量}else{ultraman.setHp(0); //将血量永远设置为0}}
}
package com.qfedu.homwork;
//奥特曼类
public class Ultraman extends  ET{public Ultraman() {}public Ultraman(String name, int hp) {super(name, hp);}//奥特曼有一个行为 ==> 需要攻击小怪兽(普通攻击)public void attack(Monster monster){//小怪兽会产生随机伤害int injur = (int)(Math.random()*10+20);//获取小怪兽的血量int hp = Hp();//计算伤害hp -= injur;//不允许血量出现负数最低血量只能是0if(hp > 0){monster.setHp(hp); //设置血量}else{monster.setHp(0); //将血量永远设置为0}}//奥特曼有一个行为 ==> 需要攻击小怪兽(必杀攻击)public void hugeAttack(Monster monster){//提供奥特曼的必杀攻击计算规则//如果小怪兽的血量的3/4 大于 60 攻击3/4血量否则固定攻击60int injur = ((int)(Hp()*0.75)) > 60? (int)(Hp()*0.75) : 60;//获取小怪兽的血量int hp = Hp();//计算伤害hp -= injur;//不允许血量出现负数最低血量只能是0if(hp > 0){monster.setHp(hp); //设置血量}else{monster.setHp(0); //将血量永远设置为0}}//奥特曼有一个行为 ==> 需要攻击所有小怪兽(魔法攻击)public void magicAttack(Monster[] monsters){for(Monster monster : monsters) {//获取小怪兽的血量int hp = Hp();//计算伤害hp -= 30;//不允许血量出现负数最低血量只能是0if (hp > 0) {monster.setHp(hp); //设置血量} else {monster.setHp(0); //将血量永远设置为0}}}
}
package com.qfedu.homwork;import java.util.Arrays;//小怪兽工具类 辅助外界对于小怪兽的操作
public class MonsterUtils {private  MonsterUtils(){}/*** 随机挑选一只活着的小怪兽* @param monsters 存储小怪兽的数组* @return 存活的小怪兽对象*/public static Monster selectMonster(Monster[] monsters){//1. 提供小怪兽对象定义Monster monster;//2. 利用do-while循环挑选怪兽do{int randomIndex = (int)(Math.random()* monsters.length);monster = monsters[randomIndex];}Hp() == 0);return monster;}/*** 判断是否有存活的小怪兽* @param monsters 存储小怪兽的数组* @return true 则有存活 false 则没有*/public static boolean aliveMonster(Monster[] monsters){for(Monster m : monsters){Hp() > 0){return true;}}return false;}
}
package com.qfedu.homwork;
//提供游戏的执行
public class GamePlayDemo {public static void main(String[] args) {//1.提供基础信息构建创建所有奥特曼与小怪兽的信息Ultraman ultraman = new Ultraman("PDD",1000);//2.需要四个小怪兽所以需要提供一个数组进行对象数据存储Monster[] monsters = {new Monster("小团子",350),new Monster("大司马",350),new Monster("沫子",350),new Monster("大表哥",350)};//3.提供一个循环执行操作 ==> 先执行后判断int  round = 0; //回合数do{System.out.println("======== 第"+(++round)+"回合 ========");//3.1 因为奥特曼的攻击是比例性触发: 10%必杀 30%魔法 60%普通攻击//3.1.1提供一个随机数据范围通过这个范围对比来进行比例设置int random = (int)(Math.random()*10); //0,1,2,3,4,5,6,7,8,9if(random <= 5){ // 0,1,2,3,4,5 正好是6个数字 对于10个数而言是不是就是60%//随机攻击一只活着的小怪兽Monster monster = MonsterUtils.selectMonster(monsters);ultraman.attack(monster);System.out.Name()+"使用了普通攻,攻击了:"&#Name());}else if (random <= 8){ // 6,7,8 正好是3个数字 对于10个数而言是不是就是30%//魔法攻击ultraman.magicAttack(monsters);System.out.Name()+"使用了魔法攻攻击所有的小怪兽");}else{ // 9 正好是1个数字 对于10个数而言是不是就是10%//随机攻击一只活着的小怪兽Monster monster = MonsterUtils.selectMonster(monsters);ultraman.hugeAttack(monster);System.out.Name()+"使用了必杀攻,攻击了:"&#Name());}for(Monster m : monsters){System.out.Name()+"小怪兽,血量:"&#Hp());}System.out.println("小怪兽使用了普通攻击");//需要提供小怪兽的攻击操作for(Monster m : monsters) {if (m.getHp() > 0) {m.attack(ultraman);}}System.out.Name()+"凹凸曼,血量:"&#Hp());}Hp() > 0 && MonsterUtils.aliveMonster(monsters));//4.宣告胜利Hp() > 0) {System.out.println("恭喜" + Name() + "获得胜利!!!");}else{System.out.println("恭喜小怪兽获得胜利!!!");}}
}

本文发布于:2024-01-29 10:50:58,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649666014756.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:怪兽   打小   奥特曼   游戏   JAVA
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23