-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pokemon.java
61 lines (52 loc) · 1.75 KB
/
Pokemon.java
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
import java.util.Arrays;
public class Pokemon {
private final double GOODMULTIPLIER = 1.25;
private final double BADMULTIPLIER = 0.75;
private double chance;
private String name;
private int number;
private String[] goodConditions;
private String[] badConditions;
private int tempRange;
public Pokemon (double chance, String name, int number, String[] goodConditions, String[] badConditions, int tempRange) {
// Base chance of catching this pokemon, adjust based on chance
this.chance = chance;
// Name of the pokemon
this.name = name;
// Number of the pokemon (in the pokedex)
this.number = number;
// List of conditions in which this pokemon is more prominent (25% more)
this.goodConditions = goodConditions;
// List of conditions in which this pokemon is less prominent (25% less)
this.badConditions = badConditions;
// The pokemon exists more at this temperature +- 10. Set to 200 if Pokemon exists in all ranges
this.tempRange = tempRange;
}
private double tempChance (double temp) {
if (temp <= this.tempRange + 3 || temp >= this.tempRange - 3) {
return 1.00;
} else {
double newChance = 1.00 - (Math.abs(temp - tempRange) - 10) * 0.1;
if (newChance < 0) {
return 0;
} else {
return newChance;
}
}
}
public double getChance(double lon, double lat) throws Exception{
String conditions = weather.getWeather(lon, lat);
double temp = weather.getTemp(lon, lat);
double prob = this.chance;
if (!Arrays.asList(this.goodConditions).contains("all")) {
if (Arrays.asList(this.goodConditions).contains(conditions)) {
prob *= GOODMULTIPLIER;
}
if (Arrays.asList(this.badConditions).contains(conditions)) {
prob *= BADMULTIPLIER;
}
}
prob *= tempChance(temp);
return prob;
}
}