java练习-任务1.2-对战游戏

实现:
角色情况:
战士,生命值:120,攻击力:45,防御力:30,命中率:%80
骑兵,生命值:110,攻击力:55,防御力:30,命中率:%85
法师,生命值:90,攻击力:60,防御力:25,命中率:%70
角色特效:
战士,勇猛:恢复35生命值
骑士,追击:追加30伤害
法师,魔力:恢复自身20生命,追击20伤害
特效激发概率均为40%
游戏开始后,根据提示信息输入编号进行战斗
20个回合游戏结束或一方全体角色阵亡游戏结束
若某个角色阵亡,则无法使用切无法被攻击

游戏开始
在这里插入图片描述
有特效
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
20回合,游戏结束
在这里插入图片描述

代码:

import java.util.*;
class Combater//战斗基础类
{
		public String name;//名称
		public int live;//生命值
		public int attack;//战斗力
		public int defense;//防御力
		public int rate;//命中率
		public String addtion;//特效
		public String state;//状态
	
	public Combater()//无参数的构造函数
		{
	
		}

	public void base_echo()//基本信息显示函数
	{
		System.out.print(name+",");
		System.out.print("生命值:"+live+",");
		System.out.print("攻击力:"+attack+",");
		System.out.print("防御力:"+defense+",");
		System.out.print("命中率:"+"%"+rate+",");
		System.out.print("特效:"+addtion+",");
		if(live>=0)
		{
			System.out.println("存活");	
		}
		else
		{
			System.out.println("已阵亡");
		}
	}
}


class Soldier extends Combater//子类 战士
{   
    public Soldier()
    {
    	name="战士";
		live=120;
		attack=45;
		defense=30;
		rate=80;
		addtion="不屈战士";
    }
    	
   
}

class Cavalry extends Combater//子类 骑兵
{
	  public Cavalry()
	    {
		  name="骑兵";
			live=110;
			attack=55;
			defense=30;
			rate=85;
			addtion="勇猛骑士";
	    }

}

class Master extends Combater//子类 法师
{
	public Master()
    {
		name="法师";
		live=90;
		attack=60;
		defense=25;
		rate=70;
		addtion="法师药水";
    }
}

public class mainSet 
{   

	public static void main(String[] args)//主函数
	{   int i;
		Soldier srole1=new Soldier();
		Cavalry crole1=new Cavalry();
		Master mrole1=new Master();//创建成员
		
		Soldier srole2=new Soldier();
		Cavalry crole2=new Cavalry();
		Master mrole2=new Master();//创建成员
		
		System.out.println("角色详情:");
		System.out.println("战士,生命值:120,攻击力:45,防御力:30,命中率:%80,特效:不屈战士");
		System.out.println("骑兵,生命值:110,攻击力:55,防御力:30,命中率:%85,特效:勇猛骑士");
		System.out.println("法师,生命值:90,攻击力:60,防御力:25,命中率:%70,特效:法师药水");
		System.out.println("使用说明:");
		System.out.println("角色阵亡后,无法使用该角色,且无法被攻击,否则操作无效");
		
		Random random1 = new Random();//生成随机数,用于玩家1攻击成功概率
		Random random2 = new Random();//生成随机数,用于玩家1攻击成功概率
		Random addtion1 = new Random();//生成随机数,用于战士加成产生概率
		Random addtion2 = new Random();//生成随机数,用于骑士加成产生概率
		Random addtion3 = new Random();//生成随机数,用于法师加成产生概率
	
		
for(i=1;i<=20;i++)//用于对战回合进行
	{
	    System.out.println("回合"+i);
			if(i%2==1)//角色1模块
			{//if
				System.out.println("玩家1发动攻击");
				int choice1;//输入编号进行战斗
				Scanner reader=new Scanner(System.in);
				System.out.println("1、战士攻击对方战士,2、战士攻击对方骑士,3、战士攻击对方法师,");
				System.out.println("4、骑士攻击对方战士,5、骑士攻击对方骑士,6、骑士攻击对方法师,");
				System.out.println("7、法师攻击对方战士,8、法师攻击对方战士,9、法师攻击对方法师,");
				System.out.print("请输入:");
				choice1=reader.nextInt();//从键盘输入攻击情形
		
				if(choice1==1&srole1.live>=0&srole2.live>=0)//输入1,战士攻击对方战士,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方战士");
					
						if(random1.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2战士生命值减45");
								srole2.live=srole2.live-srole1.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置加成产生
								{   
									srole2.live=srole2.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家2战士生命值恢复35");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
		
				
				else if(choice1==2&srole1.live>=0&crole2.live>=0)//输入2,战士攻击对方骑士,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方骑士");
					
						if(random1.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2骑士生命值减45");
								crole2.live=crole2.live-srole1.attack;//血量计算
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==3&srole1.live>=0&mrole2.live>=0)//输入3,战士攻击对方法师,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方法师");
					
						if(random1.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2法师生命值减45");
								mrole2.live=mrole2.live-srole1.attack;//血量计算
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==4&crole1.live>=0&srole2.live>=0)//输入4,骑士攻击对方战士,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方战士");
					
						if(random1.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2战士生命值减55");
								srole2.live=srole2.live-crole1.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置战士加成产生
								{   
									srole2.live=srole2.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家2战士生命值恢复35");
								}
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									srole2.live=srole2.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家1追加30伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==5&crole1.live>=0&crole2.live>=0)//输入5,骑士攻击对方骑士,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方骑士");
					
						if(random1.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2骑士生命值减55");
								crole2.live=crole2.live-crole1.attack;//血量计算
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									crole2.live=crole2.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家1追加30伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==6&&crole1.live>=0&mrole2.live>=0)//输入6,骑士攻击对方法师,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方法师");
					
						if(random1.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2法师生命值减55");
								mrole2.live=mrole2.live-crole1.attack;//血量计算
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									mrole2.live=mrole2.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家1追加30伤害");
								}
								
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
			
				else if(choice1==7&mrole1.live>=0&srole2.live>=0)//输入7,法师攻击对方战士,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方战士");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2战士生命值减60");
								srole2.live=srole2.live-mrole1.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置加成产生
								{   
									srole2.live=srole2.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家2战士生命值恢复35");
								}
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									srole2.live=srole2.live-20;//法师追击
									mrole1.live=mrole1.live+20;//法师恢复
									System.out.println("法师魔法,玩家1自身恢复20生命,追击20伤害");
								}
							
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==8&mrole1.live>=0&crole2.live>=0)//输入8,法师攻击对方骑士,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方骑士");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2骑士生命值减60");
								crole2.live=crole2.live-mrole1.attack;//血量计算
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									crole2.live=crole2.live-20;//法师追击
									mrole1.live=mrole1.live+20;//法师恢复
									System.out.println("法师魔法,玩家1自身恢复20生命,追击20伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice1==9&mrole1.live>=0&mrole2.live>=0)//输入9,法师攻击对方法师,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方法师");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家2法师生命值减60");
								mrole2.live=mrole2.live-mrole1.attack;//血量计算
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									mrole2.live=mrole2.live-20;//法师追击
									mrole1.live=mrole1.live+20;//法师恢复
									System.out.println("法师魔法,玩家1自身恢复20生命,追击20伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else
				{
				System.out.println("无效攻击");
				}
				
				
				
				if(srole2.live<=0&crole2.live<=0&mrole2.live<=0) 
				{i=i+100;
				System.out.println("玩家2所有角色阵亡,玩家1胜利");
			 
				//如果血量为零跳出循环	
				}
		
			
			}//if	
			
	else  //角色2模块
		{     //else括号
				System.out.println("玩家2发动攻击");
				int choice2;//输入编号进行战斗
				Scanner reader=new Scanner(System.in);
				System.out.println("1、战士攻击对方战士,2、战士攻击对方骑士,3、战士攻击对方法师,");
				System.out.println("4、骑士攻击对方战士,5、骑士攻击对方骑士,6、骑士攻击对方法师,");
				System.out.println("7、法师攻击对方战士,8、法师攻击对方战士,9、法师攻击对方法师,");
				System.out.print("请输入:");
				choice2=reader.nextInt();//从键盘输入攻击情形
		
				if(choice2==1&srole2.live>=0&srole1.live>=0)//输入1,战士攻击对方战士,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方战士");
					
						if(random2.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1战士生命值减45");
								srole1.live=srole1.live-srole2.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置加成产生
								{   
									srole1.live=srole1.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家1战士生命值恢复35");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
		
				
				else if(choice2==2&srole2.live>=0&crole1.live>=0)//输入2,战士攻击对方骑士,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方骑士");
					
						if(random2.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1骑士生命值减45");
								crole1.live=crole1.live-srole2.attack;//血量计算
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==3&srole2.live>=0&mrole1.live>=0)//输入3,战士攻击对方法师,若战士生命值<0,则无法攻击
				{
					System.out.println("战士攻击对方法师");
					
						if(random2.nextInt(20)<=16)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1法师生命值减45");
								mrole1.live=mrole1.live-srole2.attack;//血量计算
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==4&crole2.live>=0&srole1.live>=0)//输入4,骑士攻击对方战士,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方战士");
					
						if(random2.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1战士生命值减55");
								srole1.live=srole1.live-crole2.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置加成产生
								{   
									srole1.live=srole1.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家1战士生命值恢复35");
								}
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									srole1.live=srole1.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家2追加30伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==5&crole2.live>=0&crole1.live>=0)//输入5,骑士攻击对方骑士,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方骑士");
					
						if(random1.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1骑士生命值减55");
								crole1.live=crole1.live-crole2.attack;//血量计算
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									crole1.live=crole1.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家2追加30伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==6&crole2.live>=0&mrole1.live>=0)//输入6,骑士攻击对方法师,若骑士生命值<0,则无法攻击
				{
					System.out.println("骑士攻击对方法师");
					
						if(random1.nextInt(20)<=17)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1法师生命值减55");
								mrole1.live=mrole1.live-crole2.attack;//血量计算
								if(addtion2.nextInt(10)<=4)//设置骑士加成产生
								{   
									mrole1.live=mrole1.live-30;//骑士追击
									System.out.println("勇猛骑士,玩家2追加30伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
			
				else if(choice2==7&mrole2.live>=0&srole1.live>=0)//输入7,法师攻击对方战士,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方战士");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1战士生命值减60");
								srole1.live=srole1.live-mrole2.attack;//血量计算
								if(addtion1.nextInt(10)<=4)//设置加成产生
								{   
									srole1.live=srole1.live+35;//战士恢复生命值
									System.out.println("不屈战士,玩家1战士生命值恢复35");
								}
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									srole1.live=srole1.live-20;//法师追击
									mrole2.live=mrole2.live+20;//法师恢复
									System.out.println("法师魔法,玩家2自身恢复20生命,追击20伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==8&mrole2.live>=0&crole1.live>=0)//输入8,法师攻击对方骑士,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方骑士");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1骑士生命值减60");
								crole1.live=crole1.live-mrole2.attack;//血量计算
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									crole1.live=crole1.live-20;//法师追击
									mrole2.live=mrole2.live+20;//法师恢复
									System.out.println("法师魔法,玩家2自身恢复20生命,追击20伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else if(choice2==9&mrole2.live>=0&mrole1.live>=0)//输入9,法师攻击对方法师,若法师生命值<0,则无法攻击
				{
					System.out.println("法师攻击对方法师");
					
						if(random1.nextInt(20)<=14)//设置攻击成功概率
							{	System.out.println("攻击成功,玩家1法师生命值减60");
								mrole1.live=mrole1.live-mrole2.attack;//血量计算
								if(addtion3.nextInt(10)<=4)//设置法师加成产生
								{   
									mrole1.live=mrole1.live-20;//法师追击
									mrole2.live=mrole2.live+20;//法师恢复
									System.out.println("法师魔法,玩家2自身恢复20生命,追击20伤害");
								}
							}
						else
							{System.out.println("受击方闪躲成功");}//显示攻击详情
					
				}
				
				else
				{
				System.out.println("无效攻击");
				}
				
				
				if(srole1.live<=0&crole1.live<=0&mrole1.live<=0) 
				{i=i+100;
				System.out.println("玩家1所有角色阵亡,玩家2胜利");
				//如果血量为零跳出循环	
				}
			
		}//else括号
			
			
			System.out.println("玩家1:");
			srole1.base_echo();//显示角色1
			crole1.base_echo();
			mrole1.base_echo();
			System.out.println("玩家2:");
			srole2.base_echo();//显示角色1
			crole2.base_echo();
			mrole2.base_echo();
			
			if(i==20)//当回合结束时判断哪个玩家胜利
			{
				if(srole1.live+crole1.live+mrole1.live>srole2.live+crole2.live+mrole2.live)//根据总血量判断
				{System.out.println("回合结束,玩家1胜利");}
				else
				{System.out.println("回合结束,玩家2胜利");}
			}
			
  }//for循环
		 
		  System.out.println("战斗结束.。。。。。。");//战斗结束
		  
		
		
	}//主程序括号

	
}//主类括号
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值