-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathXenBot.js
124 lines (105 loc) · 2.68 KB
/
XenBot.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
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
124
class Bot {
constructor () {
this.roundCount = 0;
this.roundWeight = 1;
this.myBot = {
'dynamites': 100,
'waterBlns': 0,
'scissors': 0,
'papers': 0,
'rocks': 0
};
this.opponent = {
'dynamites': 100,
'waterBlns': 0,
'scissors': 0,
'papers': 0,
'rocks': 0
};
}
playRandom(max) {
let move = Math.floor(Math.random() * max);
switch (move) {
case 0:
return 'R';
case 1:
return 'P';
case 2:
return 'S';
case 3:
return 'D';
case 4:
return 'W';
default:
return 'P';
}
}
playClever() {
if (this.playDynamite()) {
return "D";
}
return this.playRandom(3);
}
updateMyBot(round) {
switch (round.p1) {
case 'D':
this.myBot.dynamites -= 1;
break;
case 'W':
this.myBot.waterBlns += 1;
break;
case 'S':
this.myBot.scissors += 1;
break;
case 'P':
this.myBot.papers += 1;
break;
case 'R':
this.myBot.rocks += 1;
break;
}
}
updateOpponent(round) {
switch (round.p2) {
case 'D':
this.opponent.dynamites -= 1;
break;
case 'W':
this.opponent.waterBlns += 1;
break;
case 'S':
this.opponent.scissors += 1;
break;
case 'P':
this.opponent.papers += 1;
break;
case 'R':
this.opponent.rocks += 1;
break;
}
}
adjustWeight(round) {
if (round.p1 === round.p2) {
this.roundWeight += 1;
}
}
playDynamite() {
if (this.myBot.dynamites >= 0) {
return this.roundWeight > 1;
}
}
playWatter() {
return (player_2.dynamites >= 0) ? true : false;
}
makeMove(gamestate) {
if (gamestate.rounds.length !== 0) {
this.updateMyBot(gamestate.rounds[this.roundCount - 1]);
this.updateOpponent(gamestate.rounds[this.roundCount - 1]);
this.adjustWeight(gamestate.rounds[this.roundCount - 1]);
}
this.roundCount += 1;
this.roundWeight = 1;
return this.playClever();
}
}
module.exports = new Bot();