From af44c7b30ea27d4c713f09feb5df40b07e1a2ab0 Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Tue, 7 May 2024 21:10:22 +0900 Subject: [PATCH 1/6] Refactor baseballGame in main --- src/main.js | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/src/main.js b/src/main.js index e69de29..b6c7af4 100644 --- a/src/main.js +++ b/src/main.js @@ -0,0 +1,84 @@ +let computerNumber = []; +let playerNumber = ""; + +// Computer가 1~9까지의 중복되지 않는 임의의 수 3개를 생성하고 computerNumber에 push 함수 +const generateComputerNumber = () => { + while (computerNumber.length < 3) { + const number = Math.floor(Math.random() * 9) + 1; + if (!computerNumber.includes(number)) { + computerNumber.push(number); + } + } + console.log(computerNumber); +}; + +const getPlayerNumber = () => { + const input = document.getElementById("userInput"); + playerNumber = input.value.trim(); + if (playerNumber.length !== 3 || new Set(playerNumber).size !== 3) { + alert("잘못된 입력입니다. 1에서 9까지의 숫자를 중복 없이 정확히 3개 입력해주세요."); + input.value = ""; + return; + } + checkAnswer(); +}; + +const checkAnswer = () => { + let strikes = 0; + let balls = 0; + const playerDigits = playerNumber.split("").map(Number); + const computerDigits = computerNumber.map(Number); + + playerDigits.forEach((digit, index) => { + if (computerDigits[index] === digit) { + strikes++; + } else if (computerDigits.includes(digit)) { + balls++; + } + }); + + displayGameResult(strikes, balls); +}; + +const displayGameResult = (strikes, balls) => { + const resultElement = document.getElementById("gameResult"); + if (strikes === 3) { + showRestartOption(); + } else { + if (balls === 0 && strikes === 0) { + resultElement.textContent = "낫싱"; + } else if (balls > 0 && strikes === 0) { + resultElement.textContent = `${balls}볼`; + } else if (balls === 0 && strikes > 0) { + resultElement.textContent = `${strikes}스트라이크`; + } + else { + resultElement.textContent = `${balls}볼 ${strikes}스트라이크`; + } + } +}; + +const showRestartOption = () => { + const restartPrompt = document.getElementById("restartPrompt"); + const restartButton = document.getElementById("restartButton"); + restartPrompt.style.display = 'block'; + restartButton.style.display = 'block'; + restartButton.onclick = restartGame; +}; + +const restartGame = () => { + computerNumber = []; + generateComputerNumber(); + document.getElementById("userInput").value = ""; + document.getElementById("gameResult").textContent = ""; + document.getElementById("restartPrompt").style.display = 'none'; + document.getElementById("restartButton").style.display = 'none'; +}; + +document.addEventListener("DOMContentLoaded", () => { + generateComputerNumber(); + document.getElementById("checkButton").addEventListener("click", (event) => { + event.preventDefault(); // Prevent form submission + getPlayerNumber(); + }); +}); From a787bcf1a4bdff7dd9983d887620a50df79d3c22 Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Tue, 7 May 2024 21:11:07 +0900 Subject: [PATCH 2/6] Refactor baseballGame in main --- src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index b6c7af4..7e7e0b9 100644 --- a/src/main.js +++ b/src/main.js @@ -78,7 +78,7 @@ const restartGame = () => { document.addEventListener("DOMContentLoaded", () => { generateComputerNumber(); document.getElementById("checkButton").addEventListener("click", (event) => { - event.preventDefault(); // Prevent form submission + event.preventDefault(); getPlayerNumber(); }); }); From 92b71d5e146ce1d963d7e8394179faee01d3856e Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Tue, 7 May 2024 21:19:36 +0900 Subject: [PATCH 3/6] Refactor baseballGame in MVC struture --- src/controller/baseballGameController.js | 1 + src/controller/index.js | 0 src/model/baseballGameModel.js | 19 +++++++++++++++++++ src/model/index.js | 0 src/view/baseballGameView.js | 0 src/view/index.js | 0 6 files changed, 20 insertions(+) create mode 100644 src/controller/baseballGameController.js create mode 100644 src/controller/index.js create mode 100644 src/model/baseballGameModel.js create mode 100644 src/model/index.js create mode 100644 src/view/baseballGameView.js create mode 100644 src/view/index.js diff --git a/src/controller/baseballGameController.js b/src/controller/baseballGameController.js new file mode 100644 index 0000000..4bcfb4b --- /dev/null +++ b/src/controller/baseballGameController.js @@ -0,0 +1 @@ +export { default as BaseballGameModel } from './baseballGameModel'; diff --git a/src/controller/index.js b/src/controller/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/model/baseballGameModel.js b/src/model/baseballGameModel.js new file mode 100644 index 0000000..a47f580 --- /dev/null +++ b/src/model/baseballGameModel.js @@ -0,0 +1,19 @@ +let computerNumber = []; + +const generateComputerNumber = () => { + computerNumber = []; + while (computerNumber.length < 3) { + const number = Math.floor(Math.random() * 9) + 1; + if (!computerNumber.includes(number)) { + computerNumber.push(number); + } + } +}; + +const getComputerNumber = () => computerNumber; + +const resetComputerNumber = () => { + computerNumber = []; +}; + +export default { generateComputerNumber, getComputerNumber, resetComputerNumber }; diff --git a/src/model/index.js b/src/model/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/view/baseballGameView.js b/src/view/baseballGameView.js new file mode 100644 index 0000000..e69de29 diff --git a/src/view/index.js b/src/view/index.js new file mode 100644 index 0000000..e69de29 From ba89f2a77361c7c07b3d1a0cf811cf7ad5b90a31 Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Wed, 8 May 2024 15:00:16 +0900 Subject: [PATCH 4/6] Refactor baseballGame in MVC structure --- index.html | 42 ++++++-- src/controller/baseballGameController.js | 21 +++- src/controller/index.js | 0 src/main.js | 98 +++++++++++-------- ...allGameModel.js => ComputerNumberModel.js} | 10 +- src/model/PlayerNumberModel.js | 41 ++++++++ src/model/index.js | 0 src/view/baseballGameView.js | 35 +++++++ src/view/index.js | 0 9 files changed, 186 insertions(+), 61 deletions(-) delete mode 100644 src/controller/index.js rename src/model/{baseballGameModel.js => ComputerNumberModel.js} (52%) create mode 100644 src/model/PlayerNumberModel.js delete mode 100644 src/model/index.js delete mode 100644 src/view/index.js diff --git a/index.html b/index.html index b021b5c..ef1f46e 100644 --- a/index.html +++ b/index.html @@ -1,12 +1,34 @@ -
- - -
+ 1~9까지의 수를 중복없이 3개 입력해주세요.
+ 올바른 예) 139
+ 틀린 예) 122
+