Javascript/GMA(2302~)

23.04.20 자바스크립트 수학객체 - 가위바위보게임 2탄

hyerin1201 2023. 4. 23. 14:07

자바스크립트의 수학객체를 활용하여 가위바위보 게임을 만들어보기

 

 

HTML

<body>
  <div class="container">
    <div class="block">
      <h3>컴퓨터 선택 :</h3>
      <p class="computer-choice">??</p>
    </div>
    <div class="block">
      <h3>사용자 선택 :</h3>
      <p class="you-choice">??</p>
    </div>
  </div>
  <div class="buttons">
    <button class="red">가위</button>
    <button class="blue">바위</button>
    <button class="green">보</button>
  </div>
  <div class="result">가위바위보!</div>
</body>

 

CSS

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body { 
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100vh;
  row-gap: 30px;
}
.container {
  display: flex;
  flex-direction: column;
  row-gap: 10px;
}
.block {
  display: flex;
  column-gap: 10px;
  align-items: center;
}

button {
  width: 70px;
  height: 70px;
  border-radius: 15px;
  border: none;
  color: #fff;
  font-size: 1.5em;
  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
}
.buttons {
  display: flex;
  column-gap: 15px;
}
.red {
  background-color: red;
}
.blue {
  background-color: blue;
}
.green {
  background-color: green;
}
.result {
  font-size: 2em;
  font-weight: bold;
}

 

Javascript

// 1.버튼에 대한 정의 - 가위 바위 보에 따라 어떠한 값을 부여할 것인가
// 2. 컴퓨터 선택에 대한 정의 - Math 객체 사용
// 3. 컴퓨터와 사용자 선택에 대해 우열을 가릴 수 있는 조건식
// 4. 컴퓨터와 사용자 선택 값에 따른 결과를 출력할 공간에 대한 정의

const buttons = document.querySelectorAll("button");
const result = ["가위", "바위", "보"];
const computerChoice = document.querySelector(".computer-choice")
const userChoice = document.querySelector(".you-choice")
const winner = document.querySelector(".result")

const show = (user, computer, result) => {
  computerChoice.innerText = computer;
  userChoice.innerText = user;
  winner.innerText = result;
}

const game = (user, computer) => {
  if(user == computer) {
    message = "무승부!"
  } else {
    switch(user + computer) {
      case "가위보" :
      case "바위가위" :
      case "보바위" :
        message = "사용자승리!"
        break;
      case "가위바위" :
      case "바위보" :
      case "보가위" :
        message = "컴퓨터승리!"
        break;
    }
  }
  show(user, computer, message)
};

const play = (event) => {
  const user = event.target.innerText;
  const randomIndex = Math.floor(Math.random() * result.length);
  const computer = result[randomIndex];
  
  game(user, computer);
}

buttons.forEach((button) => {
  button.addEventListener("click", play)
})