-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
89 lines (88 loc) · 2.48 KB
/
app.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
new Vue({
el: "#app",
data: {
options: {
rock: {value: "rock", beats: "scissors"},
paper: {value: "paper", beats: "rock"},
scissors: {value: "scissors", beats: "paper"}
},
playerChoice: null,
cpuChoice: null,
gameRunning: false,
optSelected: false,
playerScore: 0,
cpuScore: 0,
bestOf: 1,
round: 0,
log: []
},
methods: {
startGame(){
this._resetValues();
this.gameRunning = true;
},
setSelected(selection){
this.optSelected = true;
this.playerChoice = selection;
this.cpuChoice = this._setCpuChoice();
},
jankenpon(){
if (this.playerChoice.beats === this.cpuChoice.value){
this.round++;
this.log.unshift({
class: "alert alert-info",
text: "Round #" + this.round + " - Player choice: " + this.playerChoice.value + " / CPU choice: " + this.cpuChoice.value + " || PLAYER BEATS CPU"
});
this.playerScore++;
} else {
if (this.playerChoice.value === this.cpuChoice.value){
this.log.unshift({
class: "alert alert-warning",
text: "DRAW ROUND" + this.round + " - Player choice: " + this.playerChoice.value + " / CPU choice: " + this.cpuChoice.value + " || DRAW"
});
} else {
this.round++;
this.log.unshift({
class: "alert alert-danger",
text: "Round #" + this.round + " - Player choice: " + this.playerChoice.value + " / CPU choice: " + this.cpuChoice.value + " || CPU BEATS PLAYER"
});
this.cpuScore++;
}
}
this.optSelected = false;
},
_setCpuChoice(){
var keys = Object.keys(this.options);
return this.options[keys[keys.length * Math.random() << 0]];
},
restartGame(){
this.gameRunning = false;
this._resetValues();
},
_resetValues(){
this.playerChoice = null,
this.cpuChoice = null,
this.optSelected = false;
this.playerScore = 0;
this.cpuScore = 0;
this.round = 0;
this.log = [];
}
},
watch: {
playerScore: function(val){
let vm = this;
if (vm.bestOf / val < 2){
vm.log.unshift({class: "alert alert-info", text: "PLAYER WON!"});
vm.gameRunning = false;
}
},
cpuScore: function(val){
let vm = this;
if (vm.bestOf / val < 2){
vm.log.unshift({class: "alert alert-danger", text: "CPU WON!"});
vm.gameRunning = false;
}
}
}
});