-
Notifications
You must be signed in to change notification settings - Fork 3
/
singleplayer_ai.js
73 lines (70 loc) · 2.49 KB
/
singleplayer_ai.js
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
// ************************************************
// Teugg Soccer Physics
// Rip-off of the once popular Soccer Physics game
// Horribly coded by : Kevin Le Teugg, 2020
// File : singleplayer_ai.js
// Description : Contains the AI algorithm(s) for the bot player in single player mode
// ************************************************
class SinglePlayerAI {
constructor(previousTimingAI, randTimingAI, choosePlayerAI) {
this.previousTimingAI = previousTimingAI;
this.randTimingAI = randTimingAI;
this.choosePlayerAI = choosePlayerAI;
}
tickAI(playerDef, playerAtk) {
if (frameCount - this.previousTimingAI >= this.randTimingAI) {
if (this.choosePlayerAI <= 0.1) {
if (playerDef.isOnGround(ground)) {
playerDef.cstrLegs.stiffness = 0.00001;
playerDef.kick(kickForceCoeff);
playerDef.jump();
playerDef.cstrLegs.stiffness = 0.06;
//console.log("playerDef jumped");
//console.log(playerDef.isOnGround(ground));
}
}
if (this.choosePlayerAI > 0.1 && this.choosePlayerAI <= 0.8) {
if (playerAtk.isOnGround(ground)) {
playerAtk.cstrLegs.stiffness = 0.00001;
playerAtk.kick(kickForceCoeff);
playerAtk.jump();
playerAtk.cstrLegs.stiffness = 0.06;
}
}
else {
if (playerAtk.isOnGround(ground) && playerDef.isOnGround(ground)) {
playerDef.cstrLegs.stiffness = 0.00001;
playerDef.kick(kickForceCoeff);
playerDef.jump();
playerDef.cstrLegs.stiffness = 0.06;
playerAtk.cstrLegs.stiffness = 0.00001;
playerAtk.kick(kickForceCoeff);
playerAtk.jump();
playerAtk.cstrLegs.stiffness = 0.06;
}
}
this.randTimingAI = random(lowerBoundTimingAI, upperBoundTimingAI);
this.choosePlayerAI = random(0.0, 1.0);
this.previousTimingAI = frameCount;
}
}
// LITTLE FUNNY TEST FOR AI (aimed for player 2)
/*this.AItest = function(playerDef, playerAtk) {
if (playerAtk.isOnGround(ground)) {
if (mouseY >= CANVAS_HEIGHT - playerAtk.mainBody.position.x) {
if (mouseX <= playerAtk.mainBody.position.x - 10) {
playerAtk.kick();
playerAtk.jump();
}
}
}
if (playerDef.isOnGround(ground)) {
if (mouseY >= CANVAS_HEIGHT - playerDef.mainBody.position.x) {
if (mouseX <= playerDef.mainBody.position.x - 10) {
playerDef.kick();
playerDef.jump();
}
}
}
}*/
}