-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAntelope.java
60 lines (51 loc) · 2.09 KB
/
Antelope.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
import javafx.scene.paint.Color;
import java.util.List;
public class Antelope extends Animal {
Antelope(MyField[][] fields, List<Organism> organisms) {
super(fields, AllOrganisms.ANTELOPE.strength, AllOrganisms.ANTELOPE.initiation, AllOrganisms.ANTELOPE.color, AllOrganisms.ANTELOPE.name, organisms);
}
Antelope(MyField[][] fields, List<Organism> organisms, int posX, int posY) {
super(fields, AllOrganisms.ANTELOPE.strength, AllOrganisms.ANTELOPE.initiation, AllOrganisms.ANTELOPE.color, AllOrganisms.ANTELOPE.name, organisms, posX, posY);
}
Antelope(MyField[][] fields, List<Organism> organisms, int posX, int posY, int str, int init, String name, Color color, boolean toDelete, int cooldown, int age) {
super(fields, organisms, str, init, color, name, posX, posY, toDelete, age, cooldown);
}
@Override
int reflectedAttack(Organism opponent) {
if (generator.nextBoolean()) {
if (moveToEmptyField()) {
return 2;
}
}
return super.reflectedAttack(opponent);
}
@Override
void reproduction(Organism parent) {
MyField emptyFieldForChild = getNearbyEmptyField(parent);
if (emptyFieldForChild != null && (age >= 0 || parent.age >= 0)) {
announcements += (name + " reproduces\n");
Antelope child = new Antelope(fields, organisms, emptyFieldForChild.getX(), emptyFieldForChild.getY());
organisms.add(child);
}
}
@Override
public int getRandomMovement() {
int a = 0;
while (a == 0)
a = generator.nextInt(5) - 2; // returns -2/-1/1/2
return a;
}
boolean moveToEmptyField() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (isInsideBoard(posX + (j - 1), posY + (i - 1)) &&
isFieldEmpty(posX + (j - 1), posY + (i - 1))) {
emptyField();
setOnField(posX + j - 1, posY + i - 1);
return true;
}
}
}
return false;
}
}