bobo_bobkata

Untitled

Oct 9th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. function solve() {
  2. const ELEMENTS = {
  3. firstPlayerDeck: document.getElementById("player1Div").getElementsByTagName("img"),
  4. firstPlayerResult: document.getElementById("result").getElementsByTagName("span")[0],
  5. secondPlayerDeck: document.getElementById("player2Div").getElementsByTagName("img"),
  6. secondPlayerResult: document.getElementById("result").getElementsByTagName("span")[2],
  7. fightHistory: document.getElementById("history"),
  8. };
  9.  
  10. Array.from(ELEMENTS.firstPlayerDeck).forEach(card => card.addEventListener("click", cardClickEventHandler));
  11. Array.from(ELEMENTS.secondPlayerDeck).forEach(card => card.addEventListener("click", cardClickEventHandler));
  12.  
  13. let firstPlayerLastSelectedCard;
  14. let secondPlayerLastSelectedCard;
  15.  
  16. function cardClickEventHandler(e) {
  17. if (fightHappened(ELEMENTS.firstPlayerResult.textContent
  18. , ELEMENTS.secondPlayerResult.textContent)) {
  19. clearResult();
  20. }
  21.  
  22. let selectedCard = e.target;
  23. let cardDeckID = selectedCard.parentNode.id;
  24. let cardValue = selectedCard.getAttribute("name");
  25. markCardAsSelected(selectedCard);
  26.  
  27. if (cardBelongsToFirstPlayer(cardDeckID)) {
  28. if (hasAlreadySelectedCard(firstPlayerLastSelectedCard)) {
  29. unmarkLastSelectedCard(firstPlayerLastSelectedCard);
  30. }
  31. ELEMENTS.firstPlayerResult.textContent = cardValue;
  32. firstPlayerLastSelectedCard = selectedCard;
  33. } else {
  34. if (hasAlreadySelectedCard(secondPlayerLastSelectedCard)) {
  35. unmarkLastSelectedCard(secondPlayerLastSelectedCard);
  36. }
  37. ELEMENTS.secondPlayerResult.textContent = cardValue;
  38. secondPlayerLastSelectedCard = selectedCard;
  39. }
  40.  
  41. if (playersCanFight(firstPlayerLastSelectedCard, secondPlayerLastSelectedCard)) {
  42. fight(firstPlayerLastSelectedCard, secondPlayerLastSelectedCard);
  43. }
  44. }
  45.  
  46. const FIRST_PLAYER_DECK_ID = "player1Div";
  47.  
  48. function cardBelongsToFirstPlayer(cardDeckID) {
  49. return cardDeckID === FIRST_PLAYER_DECK_ID;
  50. }
  51.  
  52. function hasAlreadySelectedCard(playerLastSelectedCard) {
  53. return playerLastSelectedCard !== undefined;
  54. }
  55.  
  56. function unmarkLastSelectedCard(lastSelectedCard) {
  57. lastSelectedCard.setAttribute("src", "images/card.jpg");
  58. }
  59.  
  60. function markCardAsSelected(card) {
  61. card.setAttribute("src", "images/whiteCard.jpg");
  62. }
  63.  
  64. function playersCanFight(firstPlayerLastSelectedCard, secondPlayerLastSelectedCard) {
  65. return firstPlayerLastSelectedCard !== undefined
  66. && secondPlayerLastSelectedCard !== undefined;
  67. }
  68.  
  69. function clearResult() {
  70. ELEMENTS.firstPlayerResult.textContent = "";
  71. ELEMENTS.secondPlayerResult.textContent = "";
  72. firstPlayerLastSelectedCard = undefined;
  73. secondPlayerLastSelectedCard = undefined;
  74. }
  75.  
  76. function fightHappened(firstPlayerResult, secondPlayerResult) {
  77. return firstPlayerResult !== ""
  78. && secondPlayerResult !== "";
  79. }
  80.  
  81. function fight(firstPlayerSelectedCard, secondPlayerSelectedCard) {
  82. let firstPlayerCardValue = +firstPlayerSelectedCard.getAttribute("name");
  83. let secondPlayerCardValue = +secondPlayerSelectedCard.getAttribute("name");
  84.  
  85. //wat do when card values are equal?
  86. if (firstPlayerCardValue > secondPlayerCardValue) {
  87. firstPlayerSelectedCard.style.border = "2px solid green";
  88. secondPlayerSelectedCard.style.border = "2px solid red";
  89. } else {
  90. firstPlayerSelectedCard.style.border = "2px solid red";
  91. secondPlayerSelectedCard.style.border = "2px solid green";
  92. }
  93. firstPlayerSelectedCard.removeEventListener("click", cardClickEventHandler);
  94. secondPlayerSelectedCard.removeEventListener("click", cardClickEventHandler);
  95. addFightToHistory(firstPlayerCardValue, secondPlayerCardValue);
  96. }
  97.  
  98. function addFightToHistory(firstPlayerCardValue, secondPlayerCardValue) {
  99. ELEMENTS.fightHistory.textContent += `[${firstPlayerCardValue} vs ${secondPlayerCardValue}] `;
  100. }
  101. }
Add Comment
Please, Sign In to add comment