打怪物小案例(1)

话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界、梦幻西游这一类的游戏)。一般这类游戏都有一个基本的功能,就是打怪(玩家攻击怪物,借此获得经验、虚拟货币和虚拟装备),并且根据玩家角色所装备的武器不同,攻击效果也不同。这天,IGame公司的开发小组正在开会对打怪功能中的某一个功能点如何实现进行讨论,他们面前的大屏幕上是这样一份需求描述的ppt
在这里插入图片描述

在这里插入图片描述

创建怪物

package com.lx.test;
/**
 * 怪物类
 * @author Administrator
 *
 */
public class GuaiWu {
	//定义一个保存怪物名称的变量
		private  String  gw_name;
		//定义一个保存怪物血量的变量
		private  int  gw_hp;
		
		public GuaiWu() {}
		public GuaiWu(String  gw_name,int  gw_hp) {
			this.gw_name=gw_name;
			this.gw_hp=gw_hp;
		}
		
		public String getGw_name() {
			return gw_name;
		}
		public void setGw_name(String gw_name) {
			this.gw_name = gw_name;
		}
		public int getGw_hp() {
			return gw_hp;
		}
		public void setGw_hp(int gw_hp) {
			this.gw_hp = gw_hp;
		}
		
		/**
		 * 怪物自身的掉血操作
		 * @param hp
		 */
		public  void  diaoxue(int hp) {
			while(true) {
			//判断怪物的死活
			if(this.gw_hp<=0) {
				System.out.println("怪物-"+this.gw_name+",已经死亡!");
				 return;
			}
			this.gw_hp=this.gw_hp-hp;
			if(this.gw_hp<=0){
				System.out.println("怪物\""+this.gw_name+"\",已经死亡,无需攻击!!!");
		 	  }else {
		 		 System.out.println("怪物\""+this.gw_name+"\",损失"+hp+"hp,剩余"+this.gw_hp+"hp,仍可继续攻击!!!");  
		 	  }
		}
		}
		public  void  getInfo() {
			System.out.println(gw_name+"  "+gw_hp);
		}
		
}

创建角色

package com.lx.test;
/**
 * 角色类
 * @author DELL
 *
 */
public class JueSe {
	//定义一个保存角色的名称
	private String js_name;
	//定义一个保存武器的变量
	private GongJiInterface wuqi;
	public JueSe(String js_name,GongJiInterface wuqi) {
		this.js_name = js_name;
		this.wuqi = wuqi;
		
	}
	public String getJs_name() {
		return js_name;
	}
	public void setJs_name(String js_name) {
		this.js_name = js_name;
	}
	public GongJiInterface getWuqi() {
		return wuqi;
	}
	public void setWuqi(GongJiInterface wuqi) {
		this.wuqi = wuqi;
	}
	
	public  void  getJsInfo() {
		System.out.println(js_name+" "+wuqi);
	}
	/**
	 * 打怪物
	 */
	public void  daGuai(GuaiWu gw) {
		this.wuqi.gongji(gw);
	}
}

打怪的方法

package com.lx.test;

public interface GongJiInterface {
	 //打怪方法
	void gongji(GuaiWu	gw);
}

测试类

package com.lx.test;

public class Test {

	public static void main(String[] args) {
		GuaiWu  gw1=new GuaiWu("巡城小妖",500);
		GuaiWu  gw2=new GuaiWu("城主",1500);
		GuaiWu  gw3=new GuaiWu("幽冥王",5000);
		gw1.getInfo();
		gw2.getInfo();
		gw3.getInfo();
		
		JueSe  js1=new JueSe("初出茅庐小剑客", new MuJian());
		JueSe  js2=new JueSe("一代宗师老剑圣", new MoJian());
		JueSe  js3=new JueSe("剑仙", new YiTianTuLongJian());
		js1.getJsInfo();
		js2.getJsInfo();
		js3.getJsInfo();
		
		js1.daGuai(gw1);
		js2.daGuai(gw2);
		js3.daGuai(gw3);
	}

}

木剑

package com.lx.test;

public class MuJian implements GongJiInterface{

	@Override
	public void gongji(GuaiWu gw) {
		gw.diaoxue(20);
	}
}

铁剑

package com.lx.test;


public class TieJian implements GongJiInterface{

	@Override
	public void gongji(GuaiWu gw) {
		gw.diaoxue(50);
	}

}

魔剑

package com.lx.test;

public class MoJian implements GongJiInterface{

	@Override
	public void gongji(GuaiWu gw) {
		int random=((int)(Math.random()*10))+1;
		if(random>5) {
			System.out.println("产生暴击!!");
			gw.diaoxue(200);
		}else {
		gw.diaoxue(100);
		}
	}

}

倚天屠龙剑

package com.lx.test;

public class YiTianTuLongJian implements GongJiInterface{

	@Override
	public void gongji(GuaiWu gw) {
		
		int random=((int)(Math.random()*10))+1;
		if(random>4) {
			System.out.println("产生暴击!!");
			gw.diaoxue(2000);
		}else {
		gw.diaoxue(1000);
		}
	}
}
	



在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值