-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMonster.java
More file actions
123 lines (102 loc) · 2.95 KB
/
Copy pathMonster.java
File metadata and controls
123 lines (102 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/**
* Extends from Role
* Adding opponent, dodge_chance, defense_stat, base_damage
*/
public class Monster extends Role{
protected int damage;
protected int defense;
protected int dodgeChance;
public int opponent;
public Monster() {
super();
}
public Monster(String name) {
super(name);
}
public Monster(String name, int level, int hp, int damage, int defense, int dodgeChance) {
super(name, level, hp);
this.damage = damage;
this.defense = defense;
this.dodgeChance = dodgeChance;
}
public void setAttributes(String fileSetting) {
String[] attributes = fileSetting.split("\\s+");
name = attributes[0];
level = Integer.parseInt(attributes[1]);
damage = Integer.parseInt(attributes[2]);
defense = Integer.parseInt(attributes[3]);
dodgeChance = Integer.parseInt(attributes[4]);
hp = level * 10;
}
public Monster createMonster(String attributes, int level) {
Monster monster = new Monster();
monster.setAttributes(attributes);
monster.setLevel(level);
return monster;
}
@Override
public String toString() {
return "Monster{" +
" Name: '" + name +
" HP: " + hp +
" Level: " + level +
" Damage: '" + damage +
" Defense: " + defense +
" Dodge Chance: " + dodgeChance +
" }";
}
public void reduceAttributes(String attribute) {
if (attribute.equals("damage")) {
damage *= 0.9;
} else if (attribute.equals("defense")) {
defense *= 0.9;
} else if (attribute.equals("dodge")) {
dodgeChance *= 0.9;
}
}
public void setLevel(int level) {
int origin = this.level;
this.level = level;
this.hp = level * 100;
this.damage = damage * level / origin;
this.dodgeChance = dodgeChance * level / origin;
}
public boolean isDodge(){
return Math.random() < this.dodgeChance * 0.01;
}
public int getRealDamage() {
return (int) (damage * 0.15);
}
public int getRealDodgeChance() {
return (int) (dodgeChance * 0.01);
}
public void takeDamage(int damage) {
hp -= (damage - defense * 0.01);
}
// getter
public int getDamage() {
return damage;
}
public int getDodgeChance() {
return dodgeChance;
}
public int getDefense() {
return defense;
}
// setter
public void setDamage(int damage) {
this.damage = damage;
}
public void setDefense(int defense) {
this.defense = defense;
}
public void setDodgeChance(int dodgeChance) {
this.dodgeChance = dodgeChance;
}
public int getOpponent() {
return opponent;
}
public void setOpponent(int opponent) {
this.opponent = opponent;
}
}