红警大战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]);
	}

}

  

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/colintz/p/10093548.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值