|
|
@@ -0,0 +1,143 @@
|
|
|
+package _06_面相对象综合练习.练习1;
|
|
|
+
|
|
|
+import java.util.Random;
|
|
|
+
|
|
|
+public class Role {
|
|
|
+ private String name; // 角色名称
|
|
|
+ private int blood; // 角色血量
|
|
|
+ private String gender;
|
|
|
+ private String face;
|
|
|
+
|
|
|
+
|
|
|
+ //男生长相数组
|
|
|
+ String[] boyfaces = {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正", "相貌平平", "一塌糊涂", "面目狰狞"};
|
|
|
+ //女生长相数组
|
|
|
+ String[] girlfaces = {"美奂绝伦", "沉鱼落雁", "婷婷玉立", "身材娇好",
|
|
|
+ "相貌平平", "相貌简陋", "惨不忍睹"};
|
|
|
+
|
|
|
+
|
|
|
+ //attack 攻击描述:
|
|
|
+ String[] attacks_desc = {
|
|
|
+ "%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去。",
|
|
|
+ "%s使出了一招【游空探爪】,飞起身形自半空中变掌为抓锁向%s。",
|
|
|
+ "%s大喝一声,身形下伏,一招【劈雷坠地】,捶向%s双腿。",
|
|
|
+ "%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】,推向%s。",
|
|
|
+ "%s阴手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。",
|
|
|
+ "%s上步抢身,招中套招,一招【劈挂连环】,连环攻向%s。"
|
|
|
+ };
|
|
|
+ //injured 受伤描述:
|
|
|
+ String[] injureds_desc = {
|
|
|
+ "结果%s退了半步,毫发无损",
|
|
|
+ "结果给%s造成一处瘀伤",
|
|
|
+ "结果一击命中,%s痛得弯下腰",
|
|
|
+ "结果%s痛苦地闷哼了一声,显然受了点内伤",
|
|
|
+ "结果%s摇摇晃晃,一跤摔倒在地",
|
|
|
+ "结果%s脸色一下变得惨白,连退了好几步",
|
|
|
+ "结果『轰』的一声,%s口中鲜血狂喷而出",
|
|
|
+ "结果%s一声惨叫,像滩软泥般塌了下去"
|
|
|
+ };
|
|
|
+ /**
|
|
|
+ * 攻击方法
|
|
|
+ * role 被攻击角色
|
|
|
+ * attack(Role(zhangsan,100),zhangsan)
|
|
|
+ * 一个角色对象 攻击另外一个角色对象
|
|
|
+ */
|
|
|
+ public void attack(Role role){
|
|
|
+ // this 表示当前调用对象地址
|
|
|
+ // 造成伤害一个随机数
|
|
|
+ Random random = new Random();
|
|
|
+ // 造成伤害 1-20 之间
|
|
|
+ // 0-19 1-20
|
|
|
+ int hurt = random.nextInt(20)+1;
|
|
|
+ // 计算剩余血量
|
|
|
+ int remainingBlood = role.getBlood() - hurt;
|
|
|
+ // 判断剩余血量是否是负数 , 如果是负数设置成0
|
|
|
+ remainingBlood = remainingBlood >=0 ? remainingBlood: 0;
|
|
|
+ // 把剩余血量设置给被攻击者
|
|
|
+ role.setBlood(remainingBlood);
|
|
|
+ //this 表示当前对象地址
|
|
|
+ String str = "";
|
|
|
+ // 随机查找攻击手段
|
|
|
+ str = attacks_desc[random.nextInt(attacks_desc.length)];
|
|
|
+ if(remainingBlood >90 && remainingBlood<100){
|
|
|
+ str += injureds_desc[0];
|
|
|
+ }else if(remainingBlood >80 && remainingBlood<=90){
|
|
|
+ str += injureds_desc[1];
|
|
|
+ }else if(remainingBlood >70 && remainingBlood<=80){
|
|
|
+ str += injureds_desc[2];
|
|
|
+ }else if(remainingBlood >60 && remainingBlood<=70){
|
|
|
+ str += injureds_desc[3];
|
|
|
+ }else if(remainingBlood >50 && remainingBlood<=60){
|
|
|
+ str += injureds_desc[4];
|
|
|
+ }else if(remainingBlood >40 && remainingBlood<=50){
|
|
|
+ str += injureds_desc[5];
|
|
|
+ }else if(remainingBlood >20 && remainingBlood<=40){
|
|
|
+ str += injureds_desc[6];
|
|
|
+ }else if(remainingBlood >0 && remainingBlood<=20){
|
|
|
+ str += injureds_desc[7];
|
|
|
+ }
|
|
|
+// "%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去.结果%s退了半步,毫发无损";
|
|
|
+ System.out.printf(str,this.name,role.getName(),role.getName());
|
|
|
+ System.out.println();
|
|
|
+ }
|
|
|
+
|
|
|
+ public Role() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public Role(String name, int blood,String gender) {
|
|
|
+ this.name = name;
|
|
|
+ this.blood = blood;
|
|
|
+ this.gender = gender;
|
|
|
+
|
|
|
+ Random random = new Random();
|
|
|
+ if(gender.equals("男")){
|
|
|
+ // 在男数组长相中随机选一个作为他长相
|
|
|
+ this.face = boyfaces[random.nextInt(boyfaces.length)];
|
|
|
+ }else if(gender.equals("女")){
|
|
|
+ // 在女数组长相中随机选一个作为他长相
|
|
|
+ this.face = girlfaces[random.nextInt(girlfaces.length)];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取
|
|
|
+ * @return name
|
|
|
+ */
|
|
|
+ public String getName() {
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置
|
|
|
+ * @param name
|
|
|
+ */
|
|
|
+ public void setName(String name) {
|
|
|
+ this.name = name;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取
|
|
|
+ * @return blood
|
|
|
+ */
|
|
|
+ public int getBlood() {
|
|
|
+ return blood;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置
|
|
|
+ * @param blood
|
|
|
+ */
|
|
|
+ public void setBlood(int blood) {
|
|
|
+ this.blood = blood;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "Role{" +
|
|
|
+ "name='" + name + '\'' +
|
|
|
+ ", blood=" + blood +
|
|
|
+ ", gender='" + gender + '\'' +
|
|
|
+ ", face='" + face + '\'' +
|
|
|
+ '}';
|
|
|
+ }
|
|
|
+}
|