-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrps.js
More file actions
127 lines (110 loc) · 4.59 KB
/
rps.js
File metadata and controls
127 lines (110 loc) · 4.59 KB
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
125
126
127
/* Rock Paper Scissors */
/* Rules:
- Rock (0): beats Scissors
- Paper (1): beats Rock
- Scissors (2): beats Paper
- Tie: when both select the same
*/
var rps = {
computersHand : 0,
playersHand : 0,
wins: 0,
streak: 0,
init : function() {
},
startGame: function() {
tactile.page.getComponent('headerview').elem.innerHTML = 'Rock Paper Scissors!<br/>Wins: 0, Streak: 0'
tactile.page.getComponent('start').hide();
tactile.page.getComponent('instructions').hide();
tactile.page.getComponent('gameplay').show();
rps.computersHand = 0;
rps.playersHand = 0;
},
showInstructions: function() {
tactile.page.getComponent('start').hide();
tactile.page.getComponent('instructions').show();
},
playComputersHand : function() {
rps.computersHand = Math.floor(Math.random() * 3);
var opponentTurn = tactile.page.getComponent('gameviewopponentturn');
if (rps.computersHand == 0) {
tactile.page.getComponent('gameviewopponentrock').show();
} else if (rps.computersHand == 1) {
tactile.page.getComponent('gameviewopponentpaper').show();
} else {
tactile.page.getComponent('gameviewopponentscissors').show();
}
tactile.page.getComponent('gameviewyourturn').hide();
},
playRound : function(playersHand) {
rps.playersHand = playersHand;
rps.playComputersHand();
tactile.page.getComponent('gamebutton' + playersHand + 'view').addClass('movebuttonselected');
tactile.page.getComponent('buttonlock').show();
},
getResult : function() {
if (rps.computersHand == rps.playersHand) {
tactile.page.getComponent('gameviewresulttie').show();
} else {
if (rps.playersHand == 0) {
/* Player played rock */
if (rps.computersHand == 2) {
/* Rock beats scissors */
tactile.page.getComponent('gameviewresultwin').show();
rps.updateScores('win');
} else {
/* Paper beats rock */
tactile.page.getComponent('gameviewresultlose').show();
rps.updateScores('lose');
}
} else if (rps.playersHand == 1) {
/* Player played paper */
if (rps.computersHand == 0) {
/* Paper beats rock */
tactile.page.getComponent('gameviewresultwin').show();
rps.updateScores('win');
} else {
/* Scissors beats paper */
tactile.page.getComponent('gameviewresultlose').show();
rps.updateScores('lose');
}
} else {
/* Player played scissors */
if (rps.computersHand == 0) {
/* Rock beats scissors */
tactile.page.getComponent('gameviewresultlose').show();
rps.updateScores('lose');
} else {
/* Scissors beats paper */
tactile.page.getComponent('gameviewresultwin').show();
rps.updateScores('win');
}
}
}
tactile.page.getComponent('gameviewopponentrock').hide();
tactile.page.getComponent('gameviewopponentpaper').hide();
tactile.page.getComponent('gameviewopponentscissors').hide();
},
startOver : function() {
tactile.page.getComponent('gamebutton0view').removeClass('movebuttonselected');
tactile.page.getComponent('gamebutton1view').removeClass('movebuttonselected');
tactile.page.getComponent('gamebutton2view').removeClass('movebuttonselected');
tactile.page.getComponent('gameviewyourturn').show();
tactile.page.getComponent('gameviewresultwin').hide();
tactile.page.getComponent('gameviewresultlose').hide();
tactile.page.getComponent('gameviewresulttie').hide();
tactile.page.getComponent('buttonlock').hide();
},
updateScores : function(gameResult) {
if (gameResult == 'win') {
// win! increment win count and streak
rps.wins++;
rps.streak++;
} else if (gameResult == 'lose') {
// lose - reset streak only
rps.streak = 0;
}
tactile.page.getComponent('headerview').elem.innerHTML = 'Rock Paper Scissors!<br/>Wins: ' + rps.wins + ', Streak: ' + rps.streak;
}
};
tactile.page.onready(rps.init);