您的位置:首页 > 编程语言 > Java开发

java-回合制小游戏

2016-06-14 13:28 369 查看
定义一个玩家类,类中包含职业,血量,攻击上限,攻击力下限,护甲等属性

在此类中定义一个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;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: