奥特曼打小怪兽

 1 /**
 2  * OUTMAN附
 3  *
 4  * @author 王启文
 5  *
 6  */
 7 public class One {
 8     private String name;
 9     private int hp;
10     private int mp;
11     private int damage;
12     private int defense;
13     private int intelligence;
14
15     public One(String name, int hp, int mp, int damage, int defense,
16             int intelligence) {
17         this.name = name;
18         this.hp = hp;
19         this.mp = mp;
20         this.damage = damage;
21         this.defense = defense;
22         this.intelligence = intelligence;
23     }
24
25     public String getName() {
26         return this.name;
27     }
28
29     public boolean isAlive() {
30         return this.hp > 0;
31     }
32
33     public boolean hasMp() {
34         return this.mp > 0;
35     }
36
37     public String getInfo() {
38         return "姓名: " + name + "\n生命值: " + hp + "\t" + "魔法值: " + mp;
39     }
40
41     public void physicsAttack(One other) {
42         int effectiveDamage = (int) (Math.random() * damage / 5 + 4 * damage / 5);
43         int effectiveDefense = (int) (Math.random() * defense / 4 + 3 * defense / 4);
44         if (effectiveDamage - effectiveDefense > 0) {
45             other.hp -= effectiveDamage - effectiveDefense;
46             if (other.hp <= 0) {
47                 other.hp = 0;
48             }
49         } else {
50             other.hp -= 1;
51         }
52     }
53
54     public void magicAttack(One other) {
55         int effectiveMagicAttack = (int) (Math.random() * intelligence / 2 + intelligence);
56         other.hp -= effectiveMagicAttack;
57         mp -= 40;
58         if (other.hp <= 0) {
59             other.hp = 0;
60         }
61         if (mp <= 0) {
62             mp = 0;
63         }
64     }
65
66     public void outburst() {
67         double sz = Math.random();
68         if (sz < 0.1 && this.hp < hp / 10) {
69             this.hp *= 2;
70             this.damage *= 2;
71             this.defense *= 0.5;
72         }
73     }
74
75     // public boolean escape(){
76     // double sc = Math.random();
77     // if (this.hp<hp/10&&sc<0.1) {
78     // this.hp=0;
79     // }
80     // return false;
81     // }
82 }
 1 /**
 2  * OUTMAN
 3  *
 4  * @author 王启文
 5  *
 6  */
 7 public class fight {
 8     public static void main(String[] args) {
 9         One a1 = new One("Ultraman", 600, 280, 99, 55, 120);
10         One a2 = new One("Monster", 1200, 200, 78, 70, 100);
11
12         int times = 1;
13
14         System.out.println(a1.getInfo());
15         System.out.println(a2.getInfo());
16
17         while (a1.isAlive() && a2.isAlive()) {
18             System.out.println("第" + times + "次");
19             double a = Math.random();
20             if (a < 0.8) {
21                 a1.physicsAttack(a2);
22                 if (a2.isAlive()) {
23                     double b = Math.random();
24                     if (b < 0.8) {
25                         a2.physicsAttack(a1);
26                     } else {
27                         if (a2.hasMp()) {
28                             a2.magicAttack(a1);
29                         } else
30                             a2.physicsAttack(a1);
31                     }
32                 }
33             } else {
34                 if (a1.hasMp()) {
35                     a1.magicAttack(a2);
36                     if (a2.isAlive()) {
37                         double b = Math.random();
38                         if (b < 0.8) {
39                             a2.physicsAttack(a1);
40                         } else {
41                             if (a2.hasMp()) {
42                                 a2.magicAttack(a1);
43                             } else {
44                                 a2.physicsAttack(a1);
45                             }
46                         }
47                     }
48                 } else {
49                     a1.physicsAttack(a2);
50                     if (a2.isAlive()) {
51                         double b = Math.random();
52                         if (b < 0.8) {
53                             a2.physicsAttack(a1);
54                         } else {
55                             if (a2.hasMp()) {
56                                 a2.magicAttack(a1);
57                             } else
58                                 a2.physicsAttack(a1);
59                         }
60                     }
61                 }
62             }
63
64             System.out.println(a1.getInfo());
65             System.out.println(a2.getInfo());
66             System.out.println("----------------");
67             times++;
68         }
69
70         if (a1.isAlive()) {
71             System.out.println(a1.getName() + "获胜!!!");
72         } else {
73             System.out.println(a2.getName() + "获胜!!!");
74         }
75     }
76 }

未完待续......

时间: 2024-11-08 21:31:23

奥特曼打小怪兽的相关文章

奥尔曼打小怪兽

怪兽类 1 package com.lovo; 2 3 public class Monster { 4 private String name; 5 private int hp; //血量 6 private int aggressivity; //攻击力 7 private int defense; //防御力 8 9 10 public Monster() { 11 } 12 13 public Monster(String name, int hp, int aggressivity,

Objective-C中小怪兽的逻辑

学习Objective-C的面向对象也有一段时间了,为了犒劳自己的学习成果,写个小怪兽来犒劳一下自己把.在LOL中有怪兽和英雄的角色吧,接下来就先写一个小怪兽的类吧.从小怪兽的角度来讲,怪兽都有那些行为和属性呢?最重要的两点是小怪兽要打英雄对吧,"攻击英雄"的行为是少不了的,另一个是小怪兽打不过怎么办呢?打不过就跑呗,顺理成章,得有"逃跑"行为吧.要想跑得会动,所以得有"移动"的行为吧. 小怪兽除了上面的基本行为外,还有那些属性呢?小怪兽在攻击英

小怪兽 Java反射技术 等你来打

Java反射技术,是java的难点,也是程序员进化过程中的必打小怪兽,这里就根据java api好好研究一下java的反射技术. Class Fields Methods 请先回忆一下[java类的定义]. 一.反射是什么 反射是什么?百度百科这样定义:JAVA反射机制是在运行状态下,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取对象信息以及动态调用对象方法的功能称为java语言的反射机制. 可以这样理解,大家小时候有木有玩过平

小怪兽的逻辑

学习Objective-C的面向对象也有一段时间了,为了犒劳自己的学习成果,写个小怪兽来犒劳一下自己把.在LOL中有怪兽和英雄的角色吧,接下来就先写一个小怪兽的类吧.从小怪兽的角度来讲,怪兽都有那些行为和属性呢?最重要的两点是小怪兽要打英雄对吧,“攻击英雄”的行为是少不了的,另一个是小怪兽打不过怎么办呢?打不过就跑呗,顺理成章,得有“逃跑”行为吧.要想跑得会动,所以得有“移动”的行为吧. 小怪兽除了上面的基本行为外,还有那些属性呢?小怪兽在攻击英雄的同时生命力是由变化的,会由一个值变到另一个值,

主角需要有个可以殴打的小怪兽:数据模板和个体实例的区别(新手的一个常见错误)

这一篇文章中,主要是要理清一个概念: 虽然都是同一个类的对象,但是个体实例是用来储存独立的个体对象的,个体属性的变化不会影响到其他的个体对象.数据模板则是每个个体对象在实例化时,生成属性所参照的模板.因此,数据模板一定不要作为个体对象来使用(ps,像我这样的初学者很容易犯这类错误,比如改动了一个道具的攻击力,然后发现道具栏中其他的同类道具攻击力都给改动了!!!) 那么,就拿主角喜欢殴打的小怪兽来举例吧. 首先,通过读取xml配置,我们可以获得一套怪物的数据模板: List<Enemy> lEn

经典笔试算法题之打小怪兽

import java.util.Arrays; import java.util.Comparator; import java.util.PriorityQueue; import java.util.Scanner; /** * @author liusandao * @description * 有N只怪兽,每只怪兽有血量a[i],你有M支箭,每支箭可以造成b[i]点伤害, * 会消耗c[i]点能量.你要用箭杀死某只怪兽,该箭的伤害必须大于等于怪兽的 * 血量,打一只怪兽只能用一支箭,每

一加新机来袭,你准备好迎接一台“性能小怪兽”了吗?

一加已经成为了"品质"的代名词了,每年两场发布会都变得万众期待.之前可能国内只有少部分消费者了解一加手机,但是现在一加已经靠品质获得了喝彩和忠实的粉丝. 一加手机从面世以来一直都是主要针对海外市场的,并且在海外也取得非常不俗的成绩.其后被也是从国外传到了国内,这是国产绝无仅有的,真是这样的特殊性,一加手机才能收获今天这么多掌声. 根据最新消息显示,今年下边年一加又有一款新机来袭,该机就是一加手机6的升级版,该机就是一加手机6T.目前也有媒体曝光了一组一加手机6T的相关图片和参数,从资料

配置管理是个“小怪兽”

那么按照这个逻辑,软件研发的管理,也应该越来越厉害才对啊~ 然鹅……很多初级的软件项目管理问题,仍然困扰着我们.细想想,为啥大家嘴上一直说“管理很重要”,行动上却又不愿意为此投入呢?一张图告诉你! 我一直在想,在项目管理的众多领域里,到底哪一个,可以快速反应出管理改进的好处呢?项目经理帮我找到了答案. 这挺让我欣喜的,这正好论证了我们建立的PM核心能力架构的双支柱——过程能力和领导能力. 软件的需求哪有不变的,为啥需求变更让人如此“害怕”呢?控制变更的“变更过程”从概念上讲是比较简单的,但执行起

方法构造和方法重载之奥特曼与大boss之战

知识点的总结: 1.类中的方法分为两类:1.普通方法: 2.构造方法. 2.构造方法的格式:  public 类名(数据类型  参数名,...){ } 3.构造方法的用途:  1.实例化对象.  2.初始化属性值. 4.构造方法和普通方法的区别:  1.返回值:构造方法一定不能定义返回值类型:构造方法的名字必须要和类名完全一致,包括大小写.  2.用途  3.名字 5.注意:java会给类提供一个无参数的构造方法(默认构造方法),如果你在类中定义了构造方法,  默认的构造方法会被覆盖,无法在使用