aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/js-small-apps/rock-paper-scissors/app.js
blob: 581b4425b5e993c1d9f7e81efc828586fd51bbbb (plain)
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
import RPSGame from "./lib/class-rps-game.js";

function createPreview() {
  const preview = document.querySelector(".preview__content");
  const player1Wrapper = document.createElement("div");
  const player2Wrapper = document.createElement("div");
  const vsWrapper = document.createElement("div");
  player1Wrapper.id = "player1Wrapper";
  player2Wrapper.id = "player2Wrapper";
  vsWrapper.textContent = "vs";
  vsWrapper.style.fontWeight = 600;
  preview.append(player1Wrapper, vsWrapper, player2Wrapper);
}

function getUserPreviewId(id) {
  let userId;
  if (id === "player1-name" || id === "player1-ia") {
    userId = "player1Wrapper";
  } else if (id === "player2-name" || id === "player2-ia") {
    userId = "player2Wrapper";
  }
  return userId;
}

function fillPreview(target) {
  const userId = getUserPreviewId(target.id);
  if (userId) {
    const dest = document.getElementById(userId);
    dest.textContent = target.value;
  }
}

function toggleIABadge(target) {
  const userId = getUserPreviewId(target.id);
  if (userId) {
    const dest = document.getElementById(userId);
    target.checked
      ? dest.classList.add("ia-badge")
      : dest.classList.remove("ia-badge");
  }
}

function startGame(player1, player2, maxRound) {
  const register = document.querySelector(".register");
  const game = document.querySelector(".game");
  const buttons = {
    rock: document.querySelector(".btn--rock"),
    paper: document.querySelector(".btn--paper"),
    scissors: document.querySelector(".btn--scissors"),
    newGame: document.querySelector(".btn--new-game"),
  };
  const p1Scoring = {
    name: document.getElementById("player1username"),
    value: document.getElementById("player1score"),
  };
  const p2Scoring = {
    name: document.getElementById("player2username"),
    value: document.getElementById("player2score"),
  };
  const messages = document.querySelector(".message-board");
  const players = [];
  players.push(player1);
  players.push(player2);

  const app = new RPSGame(players, buttons, p1Scoring, p2Scoring, messages);
  app.init();
  app.maxRound = maxRound && maxRound !== "0" ? maxRound : "";
  register.style.display = "none";
  game.style.display = "flex";
}

function listen() {
  const inputP1Name = document.getElementById("player1-name");
  const inputP2Name = document.getElementById("player2-name");
  const checkboxP1IA = document.getElementById("player1-ia");
  const checkboxP2IA = document.getElementById("player2-ia");
  const inputMaxRound = document.getElementById("round-number");
  const registerBtn = document.querySelector(".form__submit");

  if (inputP1Name.value) fillPreview(inputP1Name);
  if (inputP2Name.value) fillPreview(inputP2Name);
  if (checkboxP1IA.checked) toggleIABadge(checkboxP1IA);
  if (checkboxP2IA.checked) toggleIABadge(checkboxP2IA);

  inputP1Name.addEventListener("keyup", (e) => fillPreview(e.target));
  inputP2Name.addEventListener("keyup", (e) => fillPreview(e.target));
  checkboxP1IA.addEventListener("change", (event) => {
    toggleIABadge(event.target);
    if (checkboxP2IA.checked && event.target.checked) {
      checkboxP2IA.checked = false;
      toggleIABadge(checkboxP2IA);
    }
  });
  checkboxP2IA.addEventListener("change", (event) => {
    toggleIABadge(event.target);
    if (checkboxP1IA.checked && event.target.checked) {
      checkboxP1IA.checked = false;
      toggleIABadge(checkboxP1IA);
    }
  });
  registerBtn.addEventListener("click", (event) => {
    event.preventDefault();
    const player1 = { username: inputP1Name.value, ia: checkboxP1IA.checked };
    const player2 = { username: inputP2Name.value, ia: checkboxP2IA.checked };
    const maxRound = inputMaxRound.value;
    startGame(player1, player2, maxRound);
  });
}

function init() {
  createPreview();
  listen();
}

init();