Guest User

Untitled

a guest
Feb 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. const btnRed = document.getElementById("red");
  2. const btnGreen = document.getElementById("green");
  3. const btnBlue = document.getElementById("blue");
  4. const btnYellow = document.getElementById("yellow");
  5. const btnStart = document.getElementById("startbutton");
  6. let btnStrict = document.getElementById("strictmode");
  7.  
  8. var audioRed = new Audio("sounds/simonSound1.mp3");
  9. var audioGreen = new Audio("sounds/simonSound2.mp3");
  10. var audioBlue = new Audio("sounds/simonSound3.mp3");
  11. var audioYellow = new Audio("sounds/simonSound4.mp3");
  12.  
  13. btnStart.addEventListener("click", startGame);
  14.  
  15. btnStrict.addEventListener("click", changeMode);
  16.  
  17. function changeMode() {
  18. if (gameParameters.strictMode === false) {
  19. gameParameters.strictMode = true;
  20. btnStrict.textContent = "YES";
  21. } else {
  22. gameParameters.strictMode = false;
  23. btnStrict.textContent = "NO";
  24. }
  25. }
  26.  
  27. const register = document.getElementById("register");
  28.  
  29. let gameParameters = {
  30. colors: ["red", "green", "blue", "yellow"],
  31. playerPattern: [],
  32. gamePattern: [],
  33. counter: 0,
  34. strictMode: false
  35. }
  36.  
  37. function startGame() {
  38. clearParameters();
  39.  
  40. btnStart.removeEventListener("click", startGame);
  41.  
  42. btnRed.addEventListener("click", addToPlayerPattern);
  43. btnGreen.addEventListener("click", addToPlayerPattern);
  44. btnBlue.addEventListener("click", addToPlayerPattern);
  45. btnYellow.addEventListener("click", addToPlayerPattern);
  46.  
  47. btnStart.style.color = "#ccc";
  48. }
  49.  
  50. function clearParameters() {
  51. gameParameters.counter = 0;
  52. register.textContent = "--";
  53.  
  54. gameParameters.gamePattern = [];
  55.  
  56. startCounting();
  57. }
  58.  
  59. function startCounting() {
  60. gameParameters.counter++;
  61. register.textContent = gameParameters.counter;
  62.  
  63. nextGamePattern();
  64. }
  65.  
  66. function nextGamePattern() {
  67. gameParameters.gamePattern.push(gameParameters.colors[Math.floor(Math.random() * 4)]);
  68.  
  69. showGamePattern();
  70. }
  71.  
  72.  
  73. function showGamePattern() {
  74. let i = 0;
  75. let displayPattern = setInterval(() => {
  76. playGame(gameParameters.gamePattern[i]);
  77.  
  78. i++;
  79.  
  80. if (i >= gameParameters.gamePattern.length) {
  81. clearInterval(displayPattern);
  82. }
  83. }, 500)
  84.  
  85. clearPlayer();
  86. }
  87.  
  88. function playGame(square) {
  89. switch(square) {
  90. case "red":
  91. $("#red").addClass("btnhover");
  92. audioRed.pause();
  93. audioRed.currentTime = 0;
  94. audioRed.play(); //SOUNDS;
  95. setTimeout(() => {
  96. $("#red").removeClass("btnhover");
  97. }, 200);
  98. break;
  99. case "green":
  100. $("#green").addClass("btnhover");
  101. audioGreen.pause();
  102. audioGreen.currentTime = 0;
  103. audioGreen.play(); //SOUNDS;
  104. setTimeout(() => {
  105. $("#green").removeClass("btnhover");
  106. }, 200);
  107. break;
  108. case "blue":
  109. $("#blue").addClass("btnhover");
  110. audioBlue.pause();
  111. audioBlue.currentTime = 0;
  112. audioBlue.play(); //SOUNDS;
  113. setTimeout(() => {
  114. $("#blue").removeClass("btnhover");
  115. }, 200);
  116. break;
  117. case "yellow":
  118. $("#yellow").addClass("btnhover");
  119. audioYellow.pause();
  120. audioYellow.currentTime = 0;
  121. audioYellow.play(); //SOUNDS;
  122. setTimeout(() => {
  123. $("#yellow").removeClass("btnhover");
  124. }, 200);
  125. break;
  126. }
  127. }
  128.  
  129. function clearPlayer() {
  130. gameParameters.playerPattern = [];
  131. }
  132.  
  133. function addToPlayerPattern(e) {
  134. gameParameters.playerPattern.push(e.target.id);
  135. playerTurn(e.target.id);
  136. }
  137.  
  138. function playerTurn(pad) {
  139. if (gameParameters.playerPattern[gameParameters.playerPattern.length-1] !== gameParameters.gamePattern[gameParameters.playerPattern.length-1]) {
  140. if (gameParameters.strictMode) {
  141. alert("Wrong, start again");
  142. startGame();
  143. } else {
  144. alert("Wrong, try again");
  145. showGamePattern();
  146. }
  147. } else {
  148. switch(pad) {
  149. case "red":
  150. $("#red").addClass("btnhover");
  151. audioRed.pause();
  152. audioRed.currentTime = 0;
  153. audioRed.play(); //SOUNDS;
  154. setTimeout(() => {
  155. $("#red").removeClass("btnhover");
  156. }, 200);
  157. break;
  158. case "green":
  159. $("#green").addClass("btnhover");
  160. audioGreen.pause();
  161. audioGreen.currentTime = 0;
  162. audioGreen.play(); //SOUNDS;
  163. setTimeout(() => {
  164. $("#green").removeClass("btnhover");
  165. }, 200);
  166. break;
  167. case "blue":
  168. $("#blue").addClass("btnhover");
  169. audioBlue.pause();
  170. audioBlue.currentTime = 0;
  171. audioBlue.play(); //SOUNDS;
  172. setTimeout(() => {
  173. $("#blue").removeClass("btnhover");
  174. }, 200);
  175. break;
  176. case "yellow":
  177. $("#yellow").addClass("btnhover");
  178. audioYellow.pause();
  179. audioYellow.currentTime = 0;
  180. audioYellow.play(); //SOUNDS;
  181. setTimeout(() => {
  182. $("#yellow").removeClass("btnhover");
  183. }, 200);
  184. break;
  185. }
  186.  
  187. let checkGameStatus = (gameParameters.gamePattern.length == gameParameters.playerPattern.length);
  188. if (checkGameStatus) {
  189. if (gameParameters.counter > 4) {
  190. alert("Congrats! You've won!");
  191. startGame();
  192. } else {
  193. setTimeout(nextRound, 1500);
  194. }
  195. }
  196. }
  197. }
  198.  
  199. function nextRound() {
  200. startCounting();
  201. }
Add Comment
Please, Sign In to add comment