java-回合制小游戏

定义一个玩家类,类中包含职业,血量,攻击上限,攻击力下限,护甲等属性


在此类中定义一个attack方法,方法的参数为被攻击的玩家对象. (Player other)
 方法中的算法为:
用当前玩家的攻击力  攻击参数传递过来的另一个玩家对象,实际伤害为攻击力-被攻击玩家对象的护甲值。
(功击力在功击力上限和下限之间产生一个随机值  
可以使用Math.random()函数得到一个0-1之间的随机数,如:
(int)(Math.random()*(攻击力上限-下限))+ 攻击力下限)
        被攻击的玩家血量=当前血量-实际伤害。


测试:
  在main方法创建两个玩家对象
       1. 职业剑圣  ,血量1000,攻击力50-100,护甲为0
       2. 职业战士  ,血量2000,攻击力25-50,护甲为25


    定义一个死循环,循环退出条件为某个玩家血量小于或等于0

        在循环体内部,分别调用剑圣的attack方法和战士的acctak方法玩成回合制攻击,在循环过程中打印当前玩家对象的本次实际伤害,和被攻击玩家的血量值。某个玩家血量为0时退出循环,并打印XXX玩家死亡

public class Player {
	Player(String job,double hp,double au,double ad,double armor){
		this.job=job;this.hp=hp;
		this.au=au;this.ad=ad;
		this.armor=armor;
	}
    String job;//职位
    double hp,au,ad,armor;//生命,攻击上限,攻击下限,护甲
    public void attack(Player other){
    	double hurt=Math.random()*(au-ad)+ad;
    	if(hurt<=other.armor) hurt=0;
    	else{
    		hurt-=other.armor;;
    	}
    	other.hp-=hurt;
    	System.out.println(job+"对"+other.job+"造成了"+hurt+"点伤害");
    	System.out.println(job+"当前血量为:"+hp);
    	System.out.println(other.job+"当前血量为:"+other.hp);
    }
    public boolean live(Player other){
    	if(hp<=0) {
    		System.out.println(job+"已死亡      "+other.job+"获得战斗胜利");
    		return false;
    	}
    	return true;
    }
	public static void main(String[] args) {
		Player p1=new Player("剑圣",500,20,10,5);
		Player p2=new Player("圣骑士",1000,10,5,10);
		while(true)
		{
			p1.attack(p2);
			if(!p2.live(p1)){
				break;
			}
			p2.attack(p1);
			if(!p1.live(p2)){
				break;
			}
		}
	}
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/acm_cxq/article/details/51670981
文章标签: 游戏 java
个人分类: java小游戏
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭