红警大战JAVA简单版
代码结构:
相关源码:
武器类:
属性:武器,攻击力,子弹数量。
方法:给属性赋值(set属性()方法)
获取属性值(get属性()方法)
package 红警大战简单版; public class Gun {//武器类 private String name;//武器的名字 private int attack;//攻击力 private int num;//子弹数量 public Gun(String name,int attack,int num) { super(); this.name = name; this.attack = attack; this.num = num; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAttack(int attack) { this.attack = attack; } public int getAttack() { return attack; } public void setNum(int num) { this.num = num; } public int getNum() { return num; } }
士兵类:
属性:(姓名,兵种,血量)
方法:
给属性赋值(set属性()方法)
获取属性值(get属性()方法)
package 红警大战简单版; public class Soldiers {//士兵类 private String name;//姓名 private String arms;//兵种 private int blood;//血量 public Soldiers(String name,String arms,int blood) { super(); this.name = name; this.arms = arms; this.blood = blood; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setArms(String arms) { this.arms = arms; } public String getArms() { return arms; } public void setBlood(int blood) { this.blood = blood; } public int getBlood() { return blood; } }
计算类:
方法:创建士兵:getsSo(int select,int i)
创建士兵武器:getGun(int select,int i)
攻击处理:attack(士兵1,武器1,士兵2,武器2):攻击方子弹减少,被攻击方血量减少
双方战况统计:show(士兵1,武器1,士兵2,武器2):显示双方战况
战况报警:decide(士兵1,武器1,士兵2,武器2):当血量小于等于0时,游戏结束。
游戏结束:gameover()
游戏开始:play()
package 红警大战简单版; import java.util.Scanner; public class Calc {//计算类 //创建士兵 public static Soldiers getsSo(int select,int i) { switch(select) { case 1: return new Soldiers("小兵"+(i+1)+"号","手枪手",30); case 2: return new Soldiers("小兵"+(i+1)+"号","机枪兵",40); case 3: return new Soldiers("小兵"+(i+1)+"号","钢炮兵",50); } return null; } //创建士兵武器 public static Gun getGun(int select,int i) { switch(select) { case 1: return new Gun("手枪"+(i+1)+"号",10,30); case 2: return new Gun("机枪"+(i+1)+"号",20,20); case 3: return new Gun("钢炮"+(i+1)+"号",30,10); } return null; } //攻击处理 public static void attack(Soldiers s1,Gun g1,Soldiers s2,Gun g2) { //攻击方,攻击方火力,被攻击方,被攻击方火力 s2.setBlood(s2.getBlood()-g1.getAttack()); g1.setNum(g1.getNum()-g1.getAttack()); } //双方状态显示处理 public static void show(Soldiers s1,Gun g1,Soldiers s2,Gun g2) { System.out.println("我方士兵:"+s1.getName()+" 兵种:"+s1.getArms()+ " 武器:"+g1.getName()+" 生命值:"+s1.getBlood()+ " 弹药:"+g1.getNum()); System.out.println(" 敌方士兵:"+s2.getName()+" 兵种:"+s2.getArms()+ " 武器:"+g2.getName()+" 生命值:"+s2.getBlood()+ " 弹药:"+g2.getNum()); } //游戏结束 public static void GameOver() { System.out.println("游戏结束!"); Scanner sc = new Scanner(System.in); int s = sc.nextInt(); } //补充弹药 public static void AddGun(Soldiers s,Gun g) { g.setNum(g.getNum()+10); s.setBlood(s.getBlood()-8); System.out.println("加弹成功(弹药+10|血量-8)"); } //报警:血量不足,弹药不足 public static boolean decide(Soldiers s1,Gun g1,Soldiers s2,Gun g2) { if(s1.getBlood()<=0) { System.out.println("我方血量不足!"); GameOver(); } if(s2.getBlood()<=0) { System.out.println("敌方血量不足"); GameOver(); } if(g1.getNum()<=0) { System.out.println("我方弹药不足!"); return true; } if(g2.getNum()<=0) { System.out.println("敌方弹药不足!"); return true; } return true; } //游戏开始 public static void play(Soldiers s1,Gun g1,Soldiers s2,Gun g2) { Scanner sc = new Scanner(System.in); System.out.println("派出的双方士兵初始化状态"); Calc.show(s1,g1,s2,g2); System.out.println("游戏开始,对战中。。。。。。"); for(int i=0;i<16;i++) {//最多进行16回合 while(decide(s1,g1,s2,g2)) {//判断双方的弹药及血量的情况 /*for(int i=0;i<16;i++){//最多进行16回合*/ System.out.println("*****************"); System.out.println("****1.我方进攻*****"); System.out.println("****2.敌方进攻*****"); System.out.println("****3.休战调整*****"); System.out.println("*****************"); int a = sc.nextInt(); if(a == 1) {//我方进攻 System.out.println("第"+(i+1)+"回合状态"); Calc.attack(s1, g1, s2, g2); Calc.show(s1, g1, s2, g2); break; }else if(a == 2) {//敌方进攻 System.out.println("第"+(i+1)+"回合状态"); Calc.attack(s2, g2, s1, g1); Calc.show(s1, g1, s2, g2); break; }else { System.out.println("第"+(i+1)+"回合状态"); Calc.show(s1, g1, s2, g2); break; } /*}*/ } } System.out.println("本轮对战结束!"); GameOver(); } }
【注意:在for()语句和while()结合使用的过程中,for()语句是为了控制对战次数不超过16次,而while()语句是为了保证对战双方还有血量。
没有血量时游戏结束。while()语句嵌套在for()语句里面。为了保证for()语句起到控制作用,要在每一个作战回合结束后break,跳出while()循环。使i+1。】
【扩展:虽然break是放在if语句里面的,但是break用于跳出循环或者switch语句,不用于跳出if】
测试类:
属性(部队数量,我方军队士兵编号,敌方军队士兵编号)
说明:首先初始化部队数量;然后建立双方军队的存储数组;然后对军队的士兵和武器进行初始化;
选择作战时的我方士兵和敌方士兵;游戏开始();
package 红警大战简单版; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc = new Scanner(System.in); int armNums; //部队数量 int nums; //我方军队序号 int numsd; //敌方军队序号 //设置部队数量 System.out.println("Game Start!"); System.out.println("请输入你需要的部队数量!"); armNums = sc.nextInt(); //建立我方军队存储数组 Gun[] gun1 = new Gun[armNums]; Soldiers[] soldiers1 = new Soldiers[armNums]; //建立敌方军队存储数组 Gun[] gun2 = new Gun[armNums]; Soldiers[] soldiers2 = new Soldiers[armNums]; //配置我方军队 for(int i=0;i<armNums;i++) { System.out.println("部队序号"+(i+1)); System.out.println("请输入我方兵种:"); System.out.println("1.手枪兵"); System.out.println("2.机枪兵"); System.out.println("3.钢炮兵"); int selectSoMe = sc.nextInt(); soldiers1[i] = Calc.getsSo(selectSoMe, i); System.out.println("请输入我方武器: "); System.out.println("1.手枪"); System.out.println("2.机枪"); System.out.println("3.钢炮"); int selectGunMe = sc.nextInt(); gun1[i] = Calc.getGun(selectGunMe, i); } //配置敌方军队 for(int i=0;i<armNums;i++) { System.out.println("部队序号"+(i+1)); System.out.println("请输入敌方兵种:"); System.out.println("1.手枪兵"); System.out.println("2.机枪兵"); System.out.println("3.钢炮兵"); int selectSoOther = sc.nextInt(); soldiers2[i] = Calc.getsSo(selectSoOther, i); System.out.println("请输入敌方武器: "); System.out.println("1.手枪"); System.out.println("2.机枪"); System.out.println("3.钢炮"); int selectGunOther = sc.nextInt(); gun2[i] = Calc.getGun(selectGunOther, i); } //派出某一士兵对敌方士兵进行作战 System.out.println("请输入我方军队派出的士兵序号"); nums = sc.nextInt()-1; System.out.println("请输入要攻击敌军的士兵序列号"); numsd = sc.nextInt()-1; Calc.play(soldiers1[nums], gun1[nums], soldiers2[numsd], gun2[numsd]); } }