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 +

+ + +

📄결과

+

+ + +
+ + + + \ No newline at end of file diff --git a/src/controller/baseballGameController.js b/src/controller/baseballGameController.js index 4bcfb4b..473d836 100644 --- a/src/controller/baseballGameController.js +++ b/src/controller/baseballGameController.js @@ -1 +1,20 @@ -export { default as BaseballGameModel } from './baseballGameModel'; +import { BaseballGameModel } from '../model'; +import { BaseballGameView } from '../view'; + +const checkAnswer = (playerNumber) => { + let strikes = 0, balls = 0; + const computerNumber = BaseballGameModel.getComputerNumber(); + const playerDigits = playerNumber.split("").map(Number); + + playerDigits.forEach((digit, index) => { + if (computerNumber[index] === digit) { + strikes++; + } else if (computerNumber.includes(digit)) { + balls++; + } + }); + + BaseballGameView.displayGameResult(strikes, balls); +}; + +export default { checkAnswer }; diff --git a/src/controller/index.js b/src/controller/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/main.js b/src/main.js index 7e7e0b9..c9897a0 100644 --- a/src/main.js +++ b/src/main.js @@ -1,20 +1,31 @@ -let computerNumber = []; +import { generateComputerNumber, computerNumber } from './model/ComputerNumberModel.js'; +// import { getPlayerNumber, checkAnswer, getPlayerNumber } from './model/playerNumberModel.js'; +import { displayGameResult } from './view/baseballGameView.js'; + +// 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 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(); + + // 승리 메시지 입력 후 틀린 결과 입력 시 결과 초기화함 + document.getElementById("gameResult").textContent = ""; + document.getElementById("restartPrompt").style.display = 'none'; + document.getElementById("restartButton").style.display = 'none'; + if (playerNumber.length !== 3 || new Set(playerNumber).size !== 3) { alert("잘못된 입력입니다. 1에서 9까지의 숫자를 중복 없이 정확히 3개 입력해주세요."); input.value = ""; @@ -23,6 +34,7 @@ const getPlayerNumber = () => { checkAnswer(); }; + const checkAnswer = () => { let strikes = 0; let balls = 0; @@ -40,40 +52,42 @@ const checkAnswer = () => { 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 displayGameResult = (strikes, balls) => { +// const resultElement = document.getElementById("gameResult"); +// if (strikes === 3) { +// resultElement.textContent = ""; // 기존 결과 텍스트 초기화 하고 결과 메시지 출력 +// showRestartOption(); +// } else { -const showRestartOption = () => { - const restartPrompt = document.getElementById("restartPrompt"); - const restartButton = document.getElementById("restartButton"); - restartPrompt.style.display = 'block'; - restartButton.style.display = 'block'; - restartButton.onclick = restartGame; -}; +// 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 restartGame = () => { - computerNumber = []; - generateComputerNumber(); - document.getElementById("userInput").value = ""; - document.getElementById("gameResult").textContent = ""; - document.getElementById("restartPrompt").style.display = 'none'; - document.getElementById("restartButton").style.display = 'none'; -}; + +// 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(); diff --git a/src/model/baseballGameModel.js b/src/model/ComputerNumberModel.js similarity index 52% rename from src/model/baseballGameModel.js rename to src/model/ComputerNumberModel.js index a47f580..79d6ef9 100644 --- a/src/model/baseballGameModel.js +++ b/src/model/ComputerNumberModel.js @@ -1,6 +1,6 @@ let computerNumber = []; -const generateComputerNumber = () => { +export const generateComputerNumber = () => { computerNumber = []; while (computerNumber.length < 3) { const number = Math.floor(Math.random() * 9) + 1; @@ -10,10 +10,4 @@ const generateComputerNumber = () => { } }; -const getComputerNumber = () => computerNumber; - -const resetComputerNumber = () => { - computerNumber = []; -}; - -export default { generateComputerNumber, getComputerNumber, resetComputerNumber }; +export { computerNumber }; diff --git a/src/model/PlayerNumberModel.js b/src/model/PlayerNumberModel.js new file mode 100644 index 0000000..b964b7d --- /dev/null +++ b/src/model/PlayerNumberModel.js @@ -0,0 +1,41 @@ +import { computerNumber } from "../computerNumberModel.js"; +import { displayGameResult } from "../view/displayGameResultView.js"; + +let playerNumber = ""; + +export const getPlayerNumber = () => { + const input = document.getElementById("userInput"); + playerNumber = input.value.trim(); + + // 승리 메시지 입력 후 틀린 결과 입력 시 결과 초기화함 + document.getElementById("gameResult").textContent = ""; + document.getElementById("restartPrompt").style.display = 'none'; + document.getElementById("restartButton").style.display = 'none'; + + if (playerNumber.length !== 3 || new Set(playerNumber).size !== 3) { + alert("잘못된 입력입니다. 1에서 9까지의 숫자를 중복 없이 정확히 3개 입력해주세요."); + input.value = ""; + return; + } + checkAnswer(); +}; + + +export 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); +}; + +export { playerNumber }; \ No newline at end of file diff --git a/src/model/index.js b/src/model/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/view/baseballGameView.js b/src/view/baseballGameView.js index e69de29..e0a41cc 100644 --- a/src/view/baseballGameView.js +++ b/src/view/baseballGameView.js @@ -0,0 +1,35 @@ +export const displayGameResult = (strikes, balls) => { + const resultElement = document.getElementById("gameResult"); + if (strikes === 3) { + resultElement.textContent = ""; // 기존 결과 텍스트 초기화 하고 결과 메시지 출력 + 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'; +}; \ No newline at end of file diff --git a/src/view/index.js b/src/view/index.js deleted file mode 100644 index e69de29..0000000 From d5fd5cbaf3ab429f2ad42f85da25609f7e073d1a Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Mon, 13 May 2024 16:44:20 +0900 Subject: [PATCH 5/6] feat: Export generateComputerNumber function from main.js - Export generateComputerNumber function to make it accessible to other modules. - Removed unnecessary comments and harmonized quotation marks usage. --- src.zip | Bin 0 -> 3775 bytes src/controller/baseballGameController.js | 2 +- src/main.js | 53 +---------------------- src/view/baseballGameView.js | 7 ++- 4 files changed, 8 insertions(+), 54 deletions(-) create mode 100644 src.zip diff --git a/src.zip b/src.zip new file mode 100644 index 0000000000000000000000000000000000000000..172ffa31f1e2ab1956bc1f9661ccb2322b9076d1 GIT binary patch literal 3775 zcmZ`+2{=@J7a!6XyF#|HN47x*S(6z1XzW|EWMr8^jI7!BEnA2p`yl%^WsA^A@glM& zQKEUXL}8R~yy>gn&v)YIp>~pe&-1woES7!ucjg>GTjC^>%OsbJxC381|eP2CJz{>Z-XVzyb zvleiKjAqYpEho=`NI&GsIg==IAhs#3ws_NEw_ExWQ!vf`qF?MXPgbBjTz8Cv<{kaO zw^CWkmk7Wz1rhe`^#EjrHl9+xgbK&#+-33Nt26jUC$NSmc?YELs(Yhdg$DOgY^hO= zC{v^@m(Iqe{5jgXhKIATlxZfdm%k{@$I*+Odx5xMU?ujg`xzJC?V(qXr>SqPCj_l= z;Ab|>-*glRQ-khVJ|||E)>^&W-y%b>wee~BTgP`?gihhBUv{%CSuI?TEi0rjD#)Q( zhhE>AZG77|)V;*x9AMw?7_cihCm&fifA)cXl&p8Q^*ui>(&vW3`w@bz=m6p&Oiz*oLisFky4&S}Ebo-0B0Dn7Mx z?AI=ncUehAFN6Al>^(1M(^BdhiK88!S*YUY`FO>fF|+p!Ms&Q;zJx0iBPv6m13&GA zNOQoayK0YD;x8sg4?|jqH>JGJZ*hp>?}WLoa7`h+2|)ewlISXdh72cLr@$4~PbNDn zw~eS0DZq2kCOB17a)ld@wR=LlBUXV69w+P;JMZ%Zshsajhv9jc7bh6&bF4{MEGNNC zX4Da!KT1dTn8Ahru53Ly1GkZM5&qF~Z~P7)S4MZ%Y*qxR#5b`;dW7x z<)hjAy5}P~VcF3Sy>zFrVP24;f!d1FG68ccwFJwgg7FMcgMz~)G3Tcq{Y*;rX#TNA zbLb7~dAVETV`8ZvNBo6$#4kRvvtW)+!?do*rbL;FHaYTt@$>%NT+OV^s?fr2942BP zeg`}cT6yFYpxv9Sc2j7(+crSF{_A+i4#(acL;v>^m(tVAzAw{&f~UglLZ(9|Bf9e2 zyZlx85zT%}4!)j~GjW#CECjvDJgvjqnhT+{AFAuov|hY2!r=d?n901*DLr#b zILm30!%M`a`7WV8_{?e)qF~`vlIbz1!?Q^lVc-@kow2%`s1Bdth+%5)#+?oLK>yeY zU99Z1yw@==NO1vb=8@se#hi z)_iSlH7|Xq^|M}u{wiUWtv;&c*5btU{OvqxzQ49BbqO16x}#eqKD(YzJOCT6%f1$>T)1$JlkQXLYhq)5X{&YQ3j`pwo zec@GQm0Ac;*ijspPP ze^`n@+57+7&Looo_t6W?v*yoKFSnH!nK2>Eg{ed)W&5E8SSbMti1~%c6+)6W>F{mN$(*AsP`Zjr_-zxSgrt->ysrA z_%>$%f1ixSDfd335#Ee@TG43ZnPL1x5dprB(Z*#{eF86f%0A#S%62M&)hyL~c>|Lc zLg!$q>IiO#ExBODn*f}~WHXrFbWzVTBPV7=W#TzJ415A#yXcP8X&I=FJ9Q?l>B3pR zdvg{qO?!P(AV6M0+r(HVy%=go(;|tJgS5tQ&*26HVExO85|Qlnt7d1P-X%0+yUpr0 z^WH6`H!aQW4d-b?zQin<>!@{WLL=U<6|V9$e;drwUdvaiN}e&=h+I$%v9rEx#uVs& z8j8X7ZKov`aIbN7sHOHOXh*pWG<)uf7UNvDcmG7gKqAZFQSM@}>?yuzUigCicq2l%eBViM3*N z*$|VJa4ui#NCM;6le*F?DR<(O*y<>uP?1i~(3f4E_!Cb=jm@>rOlf}4vHD4BHznNZ;S`Sd-Mi0Hee2ex@LV~yEX11|{uJr$d}0~aTM3#)z3!83fDQ~k zkc&LdLgBJL9)6LAMI5$?fTwV8B-FR=cYQPHL+1jQWS%Rper}s2We1Y&Qg4xPCs z$iElN%$29X>cO|`eKPN!WY4zV7ol~7>^#4>)VafE%Z>nT`O;*_U*!vy=cQZD*(@SZV@3m~))tX5@|EfulWd^BZ1<=oMlosb zTbrh@%4<<_T&||!VGRmrGCXLF4)e$){)V@-lAqINDiDpqQH*}?b? z-7Y7BTzgZ599?foxnZA8+_i^@7oDoBvJV%1J$n59fR6QUd70jn3{W}55Ko&@c#V1{ zlX1*$Hk&rTs70NLsidl1F7DRO;WOI{x#P89)EvKD!)_$0gh_Hf9S$X5_d^) zeQ@ewL;eeRG}Zk89@v5g9s&=E@0S@zQQraXhZ(p3z#UD5zqB}-UVdo7OA;ZJe`s+8 z+59@|=$!v?)`3NGBrZR2#bE{bWzbPI;0KJCBy4_%{r*P|D*{6AILTxH07SZZNE{hY Hd+_!j)+;sK literal 0 HcmV?d00001 diff --git a/src/controller/baseballGameController.js b/src/controller/baseballGameController.js index 473d836..7bd5830 100644 --- a/src/controller/baseballGameController.js +++ b/src/controller/baseballGameController.js @@ -13,7 +13,7 @@ const checkAnswer = (playerNumber) => { balls++; } }); - + console.log(computerNumber); BaseballGameView.displayGameResult(strikes, balls); }; diff --git a/src/main.js b/src/main.js index c9897a0..e72b2df 100644 --- a/src/main.js +++ b/src/main.js @@ -1,22 +1,8 @@ import { generateComputerNumber, computerNumber } from './model/ComputerNumberModel.js'; -// import { getPlayerNumber, checkAnswer, getPlayerNumber } from './model/playerNumberModel.js'; import { displayGameResult } from './view/baseballGameView.js'; -// 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(); @@ -52,43 +38,6 @@ const checkAnswer = () => { displayGameResult(strikes, balls); }; -// const displayGameResult = (strikes, balls) => { -// const resultElement = document.getElementById("gameResult"); -// if (strikes === 3) { -// resultElement.textContent = ""; // 기존 결과 텍스트 초기화 하고 결과 메시지 출력 -// 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) => { @@ -96,3 +45,5 @@ document.addEventListener("DOMContentLoaded", () => { getPlayerNumber(); }); }); + +export { computerNumber, generateComputerNumber }; \ No newline at end of file diff --git a/src/view/baseballGameView.js b/src/view/baseballGameView.js index e0a41cc..ebb4acc 100644 --- a/src/view/baseballGameView.js +++ b/src/view/baseballGameView.js @@ -1,3 +1,5 @@ +import {computerNumber, generateComputerNumber } from '../main.js'; + export const displayGameResult = (strikes, balls) => { const resultElement = document.getElementById("gameResult"); if (strikes === 3) { @@ -26,10 +28,11 @@ const showRestartOption = () => { }; const restartGame = () => { - computerNumber = []; + // 배열의 내용을 비웁니다. + computerNumber.length = 0; generateComputerNumber(); document.getElementById("userInput").value = ""; document.getElementById("gameResult").textContent = ""; document.getElementById("restartPrompt").style.display = 'none'; document.getElementById("restartButton").style.display = 'none'; -}; \ No newline at end of file +}; From 28d3d4fcb4f70fda2b2a671b927707fa45128339 Mon Sep 17 00:00:00 2001 From: TAEHONG-LEE <2t_hong@naver.com> Date: Mon, 13 May 2024 16:51:50 +0900 Subject: [PATCH 6/6] docs: Add README.md to project - Added README.md with project description, installation instructions, and usage guidelines. --- README.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b2833c..44bbbe1 100644 --- a/README.md +++ b/README.md @@ -1 +1,23 @@ -# javascript-baseball-precourse \ No newline at end of file +컴퓨터가 랜덤의 숫자 3자리 문제 제출 (서로 다른 3개의 수, 1~9) +사용자가 서로 다른 수로 이루어진 3자리의 수 입력 (userInput값) + +입력받은 userInput값 검증 -> userInput값 조건문 작성 +userInput값 길이 - 숫자의 길이가 3인지 확인하기 + +userInput값 숫자 - 모두 숫자인지 확인하기 +userInput값 숫자의 범위 - 숫자의 범위가 1~9 사이인지 확인하기 +userInput값이 서로 다른가? - 모두 다른 수인지 확인하기 + +답의 결과 출력 (볼, 스트라이크 판정) -> 각각 computerInput값과 userInput값 받기 (,) 이렇게? +: 같은 수 같은 자리에 있을 시 스트라이크 +: 다른 자리에 있을 시 볼 +: 같은 수가 전혀 없으면 낫싱 (0볼, 0스트라이크) +: 단, 스트라이크와 볼이 같이 있는 경우 출력 순서는 볼 -> 스트라이크 + +정답여부 확인 +1. 정답일 경우 (3스트라이크) -> "정답을 맞추셨습니다" 결과 멘트 + "게임을 새로 시작하시겠습니까?" 결과 멘트 + 게임 재시작 버튼 출력 (버튼에 기능 부여) +2. 정답이 아닐 경우 -> 판정 결과 각각 문자열 출력 + + +컴퓨터가 선택한 3개의 숫자를 사용자가 맞히면 게임 종료 + 재시작 버튼을 생성해 게임 재시작 가능하게 함 +사용자가 잘못된 값을 입력한 경우 alert 에러 메시지를 보여주고, 재입력 가능하게함 \ No newline at end of file