From 975257db25a4feed00dc88d09e4efac5c1df8827 Mon Sep 17 00:00:00 2001 From: rudtj Date: Mon, 6 May 2024 09:56:22 +0900 Subject: [PATCH 01/14] message --- README.md | 37 ++++++++++++++++++++++++++++++++++++- index.html | 24 ++++++++++++++++++++++-- "src/\brandomNum.js" | 10 ++++++++++ src/checkError.js | 25 +++++++++++++++++++++++++ src/gameResult.js | 24 ++++++++++++++++++++++++ src/main.js | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 "src/\brandomNum.js" create mode 100644 src/checkError.js create mode 100644 src/gameResult.js diff --git a/README.md b/README.md index 8b2833c..b74d8a2 100644 --- a/README.md +++ b/README.md @@ -1 +1,36 @@ -# javascript-baseball-precourse \ No newline at end of file +# javascript-baseball-precourse +게임 시작 + '1~9까지의 수를 중복없이 3개 입력해주세요.' 출력 + +게임 재시작 / 프로그램 종료 + 3개의 숫자를 모두 맞힐 경우 : '정답을 맞추셨습니다' '게임을 새로 시작하시겠습니까?' 출력 + 재시작 버튼을 누르면 게임이 다시 시작됨 + 재시작 버튼 외에 특별한 종료 버튼은 없음 + +Random 값 추출 + 서로 다른 숫자 3개로 구성된 배열 생성 + Math.random()과 Math.floor() 사용하여 randomNum 생성 + 생성된 randomNum과 중복되는 숫자가 있는지 검사 후 추가 + +사용자의 입력 + 입력값 세자리가 모두 다르면 통과 + alert()를 사용하여 에러 메시지 출력 + 입력 받은 숫자가 3자리가 아닌 경우 + 입력 받은 값이 숫자가 아닌 경우 + 입력 받은 값에 중복된 숫자가 있을 경우 + +3자리의 수를 맞추기 + 같은 수가 같은 자리 : '스트라이크' + 같은 수가 다른 자리 : '볼' + 같은 수가 없으면 : '낫싱' + +필요한 기능 + 숫자 배열 생성 + 스트라이크 개수 체크 + 볼 개수 체크 + 숫자 비교 함수 + +출력 + 입력한 수에 대한 결과를 볼,스트라이크 개수로 표시 : ' 볼 스트라이크' + 하나도 없는 경우 : '낫싱' + 3개의 숫자를 모두 맞힐 경우 : '정답을 맞추셨습니다' '게임을 새로 시작하시겠습니까?' 출력 \ No newline at end of file diff --git a/index.html b/index.html index b021b5c..024dc6c 100644 --- a/index.html +++ b/index.html @@ -3,10 +3,30 @@ - + baseball-game -
+
+

⚾숫자 야구 게임

+ +
+
1~9까지의 수를 중복없이 3개 입력해주세요.
+
올바른 예) 139
+
틀린 예) 122
+
+ +
+ + +
+ +

결과

+

정답을 맞추셨습니다

+
게임을 새로 시작하시겠습니까?
+ + +
+ diff --git "a/src/\brandomNum.js" "b/src/\brandomNum.js" new file mode 100644 index 0000000..e4781c5 --- /dev/null +++ "b/src/\brandomNum.js" @@ -0,0 +1,10 @@ +export function randomNum() { + let arr = []; + while(arr.length < 3) { + let num = Math.floor(Math.random() * 10); + if (!arr.includes(num)) { + arr.push(num); + } + } + return arr.join(''); +} \ No newline at end of file diff --git a/src/checkError.js b/src/checkError.js new file mode 100644 index 0000000..af8949d --- /dev/null +++ b/src/checkError.js @@ -0,0 +1,25 @@ +export function checkError() { + let value = prompt("정답을 입력하세요."); + + // 입력 받은 값이 숫자가 아닌 경우 + if (!value || isNaN(value)) { + alert("숫자만 입력해야 합니다.\n다시 입력해주세요."); + return; + } + + // 입력 받은 숫자가 3자리가 아닌 경우 + if (value.length !== 3) { + alert("3자리 수의 숫자만 입력해야 합니다.\n다시 입력해주세요."); + return; + } + + // 입력 받은 값에 중복된 숫자가 있을 경우 + let digits = value.split(''); + let uniqueDigits = [...new Set(digits)]; + if (uniqueDigits.length !== digits.length) { + alert("중복된 숫자 없이 입력해야 합니다.\n다시 입력해주세요."); + return; + } + + alert("입력값 검사를 통과했습니다."); +} \ No newline at end of file diff --git a/src/gameResult.js b/src/gameResult.js new file mode 100644 index 0000000..368ef2b --- /dev/null +++ b/src/gameResult.js @@ -0,0 +1,24 @@ +export function gameResult(userInput, comValue) { + let strike = 0; + let ball = 0; + + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + if (userInput.charAt(i) === comValue.charAt(j)) { + if (i === j) { + strike++; + } else { + ball++; + } + } + } + } + + if (strike === 3) { + return { message: '정답을 맞추셨습니다! 게임을 새로 시작하시겠습니까?', isCorrect: true }; + } else if (strike === 0 && ball === 0) { + return { message: '낫싱', isCorrect: false }; + } else { + return { message: `결과: ${ball}볼 ${strike}스트라이크`, isCorrect: false }; + } +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index e69de29..819a446 100644 --- a/src/main.js +++ b/src/main.js @@ -0,0 +1,35 @@ +import { gameResult } from "./gameResult"; +import { checkError } from "./checkError"; +import { randomNum } from "./\brandomNum"; + + +document.addEventListener('DOMContentLoaded', () => { + const userInput = document.querySelector('#userInput'); + const confirmButton = document.querySelector('#confirmButton'); + const restartButton = document.querySelector('#restartButton'); + + // 게임 재시작 버튼에 대한 이벤트 리스너 추가 + restartButton.addEventListener('click', () => window.location.reload()); + + // 정답 생성 + let answer = randomNum(); + + // 확인 버튼에 대한 이벤트 리스너 추가 + confirmButton.addEventListener('click', () => { + // 입력값에 대한 에러 체크 + const error = checkError(input.value); + if (error) { + alert(error); + return; + } + + // 게임 결과 확인 + const result = gameResult(input.value, answer); + alert(result.message); + + // 정답을 맞췄을 경우, 게임 재시작 버튼을 화면에 추가 + if (result.isCorrect) { + restartButton.style.display = 'block'; + } + }); + }); \ No newline at end of file From b895a2257558ab2be28866bb67f63dfb6e1715bc Mon Sep 17 00:00:00 2001 From: rudtj Date: Mon, 6 May 2024 10:01:04 +0900 Subject: [PATCH 02/14] =?UTF-8?q?=EB=B3=80=EC=88=98=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 819a446..fc258e0 100644 --- a/src/main.js +++ b/src/main.js @@ -17,14 +17,14 @@ document.addEventListener('DOMContentLoaded', () => { // 확인 버튼에 대한 이벤트 리스너 추가 confirmButton.addEventListener('click', () => { // 입력값에 대한 에러 체크 - const error = checkError(input.value); + const error = checkError(userInput.value); if (error) { alert(error); return; } // 게임 결과 확인 - const result = gameResult(input.value, answer); + const result = gameResult(userInput.value, answer); alert(result.message); // 정답을 맞췄을 경우, 게임 재시작 버튼을 화면에 추가 From 8cbdf90e69bc49a34dbda19bc1844c62ab453a60 Mon Sep 17 00:00:00 2001 From: rudtj Date: Mon, 6 May 2024 12:46:52 +0900 Subject: [PATCH 03/14] refact --- src/gameResult.js | 21 +++++++++++++-------- src/main.js | 10 ++++------ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/gameResult.js b/src/gameResult.js index 368ef2b..dc66f29 100644 --- a/src/gameResult.js +++ b/src/gameResult.js @@ -1,15 +1,20 @@ -export function gameResult(userInput, comValue) { +import { randomNum } from "./\brandomNum"; + +let comValue = randomNum(); + +export function gameResult(userInput) { let strike = 0; let ball = 0; + for (let i = 0; i < 3; i++) { - for (let j = 0; j < 3; j++) { - if (userInput.charAt(i) === comValue.charAt(j)) { - if (i === j) { - strike++; - } else { - ball++; - } + if (userInput[i] === comValue[i]) { + strike++; + } else { + const index = comValue.indexOf(userInput[i]); + if (index !== -1 && index !== i) { + // comValue 내에 userInput[i]가 존재하지만, 위치가 다를 경우 + ball++; } } } diff --git a/src/main.js b/src/main.js index fc258e0..2c340e3 100644 --- a/src/main.js +++ b/src/main.js @@ -8,13 +8,10 @@ document.addEventListener('DOMContentLoaded', () => { const confirmButton = document.querySelector('#confirmButton'); const restartButton = document.querySelector('#restartButton'); - // 게임 재시작 버튼에 대한 이벤트 리스너 추가 restartButton.addEventListener('click', () => window.location.reload()); - // 정답 생성 let answer = randomNum(); - - // 확인 버튼에 대한 이벤트 리스너 추가 + confirmButton.addEventListener('click', () => { // 입력값에 대한 에러 체크 const error = checkError(userInput.value); @@ -24,7 +21,7 @@ document.addEventListener('DOMContentLoaded', () => { } // 게임 결과 확인 - const result = gameResult(userInput.value, answer); + const result = gameResult(Number(userInput.value), Number(answer)); alert(result.message); // 정답을 맞췄을 경우, 게임 재시작 버튼을 화면에 추가 @@ -32,4 +29,5 @@ document.addEventListener('DOMContentLoaded', () => { restartButton.style.display = 'block'; } }); - }); \ No newline at end of file + }); + From bfdb6c173f909bd5008e182190207fe0f544f4d7 Mon Sep 17 00:00:00 2001 From: rudtj Date: Mon, 6 May 2024 12:49:36 +0900 Subject: [PATCH 04/14] last --- src/gameResult.js | 23 +++++++++++++---------- src/main.js | 6 +++--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/gameResult.js b/src/gameResult.js index dc66f29..71b5390 100644 --- a/src/gameResult.js +++ b/src/gameResult.js @@ -1,24 +1,27 @@ import { randomNum } from "./\brandomNum"; -let comValue = randomNum(); - export function gameResult(userInput) { let strike = 0; let ball = 0; - + let comValue = randomNum(); - for (let i = 0; i < 3; i++) { + // 볼 계산 + for (let i = 0; i < userInput.length; i++) { + if (comValue.includes(userInput[i]) && userInput[i] !== comValue[i]) { + ball++; + } + } + + // 스트라이크 계산 + for (let i = 0; i < comValue.length; i++) { if (userInput[i] === comValue[i]) { strike++; - } else { - const index = comValue.indexOf(userInput[i]); - if (index !== -1 && index !== i) { - // comValue 내에 userInput[i]가 존재하지만, 위치가 다를 경우 - ball++; - } + ball--; } } + ball = ball < 0 ? 0 : ball; + if (strike === 3) { return { message: '정답을 맞추셨습니다! 게임을 새로 시작하시겠습니까?', isCorrect: true }; } else if (strike === 0 && ball === 0) { diff --git a/src/main.js b/src/main.js index 2c340e3..2cea2cf 100644 --- a/src/main.js +++ b/src/main.js @@ -10,8 +10,8 @@ document.addEventListener('DOMContentLoaded', () => { restartButton.addEventListener('click', () => window.location.reload()); - let answer = randomNum(); - + let answer = randomNum(); + confirmButton.addEventListener('click', () => { // 입력값에 대한 에러 체크 const error = checkError(userInput.value); @@ -21,7 +21,7 @@ document.addEventListener('DOMContentLoaded', () => { } // 게임 결과 확인 - const result = gameResult(Number(userInput.value), Number(answer)); + const result = gameResult(userInput.value.split(''), answer); alert(result.message); // 정답을 맞췄을 경우, 게임 재시작 버튼을 화면에 추가 From 79d8aa1c2e50c5a397078f20e8148e90958a3ba8 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:41:15 +0900 Subject: [PATCH 05/14] =?UTF-8?q?fix=20:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/checkError.js | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 src/checkError.js diff --git a/src/checkError.js b/src/checkError.js deleted file mode 100644 index af8949d..0000000 --- a/src/checkError.js +++ /dev/null @@ -1,25 +0,0 @@ -export function checkError() { - let value = prompt("정답을 입력하세요."); - - // 입력 받은 값이 숫자가 아닌 경우 - if (!value || isNaN(value)) { - alert("숫자만 입력해야 합니다.\n다시 입력해주세요."); - return; - } - - // 입력 받은 숫자가 3자리가 아닌 경우 - if (value.length !== 3) { - alert("3자리 수의 숫자만 입력해야 합니다.\n다시 입력해주세요."); - return; - } - - // 입력 받은 값에 중복된 숫자가 있을 경우 - let digits = value.split(''); - let uniqueDigits = [...new Set(digits)]; - if (uniqueDigits.length !== digits.length) { - alert("중복된 숫자 없이 입력해야 합니다.\n다시 입력해주세요."); - return; - } - - alert("입력값 검사를 통과했습니다."); -} \ No newline at end of file From 4e4745f8ba0d2594b850e07fa5ee186d5b57d2d8 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:44:38 +0900 Subject: [PATCH 06/14] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EA=B5=AC=EC=A1=B0=EB=A5=BC=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/src/main.js b/src/main.js index 2cea2cf..9018ab5 100644 --- a/src/main.js +++ b/src/main.js @@ -1,33 +1,7 @@ -import { gameResult } from "./gameResult"; -import { checkError } from "./checkError"; -import { randomNum } from "./\brandomNum"; - - -document.addEventListener('DOMContentLoaded', () => { - const userInput = document.querySelector('#userInput'); - const confirmButton = document.querySelector('#confirmButton'); - const restartButton = document.querySelector('#restartButton'); - - restartButton.addEventListener('click', () => window.location.reload()); - - let answer = randomNum(); - - confirmButton.addEventListener('click', () => { - // 입력값에 대한 에러 체크 - const error = checkError(userInput.value); - if (error) { - alert(error); - return; - } - - // 게임 결과 확인 - const result = gameResult(userInput.value.split(''), answer); - alert(result.message); - - // 정답을 맞췄을 경우, 게임 재시작 버튼을 화면에 추가 - if (result.isCorrect) { - restartButton.style.display = 'block'; - } - }); - }); +import inputNum from "./components/inputNum"; +import playGame from "./components/playGame"; +function main() { + inputNum(playGame); +} +main(); \ No newline at end of file From 861abb02f93d9fbe9fa9eaa21f6acbf0e415c9cc Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:45:51 +0900 Subject: [PATCH 07/14] =?UTF-8?q?fix:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/checkError.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/components/checkError.js diff --git a/src/components/checkError.js b/src/components/checkError.js new file mode 100644 index 0000000..2c5adc7 --- /dev/null +++ b/src/components/checkError.js @@ -0,0 +1,23 @@ +export default function checkError(value) { + // 입력 받은 값이 숫자가 아닌 경우 + if (!value || isNaN(value)) { + alert("숫자만 입력해야 합니다.\n다시 입력해주세요."); + return false; + } + + // 입력 받은 숫자가 3자리가 아닌 경우 + if (value.length !== 3) { + alert("3자리 수의 숫자만 입력해야 합니다.\n다시 입력해주세요."); + return false; + } + + // 입력 받은 값에 중복된 숫자가 있을 경우 + let digits = value.split(''); + let uniqueDigits = [...new Set(digits)]; + if (uniqueDigits.length !== digits.length) { + alert("중복된 숫자 없이 입력해야 합니다.\n다시 입력해주세요."); + return false; + } + return true; +} + From f084163ee9c934fd05bb1100c58c56c27ca4411f Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:46:58 +0900 Subject: [PATCH 08/14] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/inputNum.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/components/inputNum.js diff --git a/src/components/inputNum.js b/src/components/inputNum.js new file mode 100644 index 0000000..ae0a042 --- /dev/null +++ b/src/components/inputNum.js @@ -0,0 +1,19 @@ +import checkError from "./checkError"; +import playGame from "./playGame"; + +export default function inputNum() { + const confirmButton = document.getElementById('confirmButton'); + + function handleConfirmClick() { + const userInput = document.getElementById('user-input').value; + if (!userInput) return; + + const isValid = checkError(userInput); + if (!isValid) { + return; + } + playGame(userInput); + } + + confirmButton.addEventListener('click', handleConfirmClick); +} From 1da6ae7b2c015d93bd6eace0e95637c91e875c66 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:47:56 +0900 Subject: [PATCH 09/14] =?UTF-8?q?feat:=20=EB=9E=9C=EB=8D=A4=20=EC=88=AB?= =?UTF-8?q?=EC=9E=90=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/components/\brandomNum.js" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "src/components/\brandomNum.js" diff --git "a/src/components/\brandomNum.js" "b/src/components/\brandomNum.js" new file mode 100644 index 0000000..a94538f --- /dev/null +++ "b/src/components/\brandomNum.js" @@ -0,0 +1,10 @@ +export default function randomNum() { + let arr = []; + while(arr.length < 3) { + let num = Math.floor(Math.random() * 9) + 1; + if (!arr.includes(num)) { + arr.push(num); + } + } + return arr; +} \ No newline at end of file From 4f7edee5a0a9d25948cfb2f55db91db900c1b0f9 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:51:07 +0900 Subject: [PATCH 10/14] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/playGame.js | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/components/playGame.js diff --git a/src/components/playGame.js b/src/components/playGame.js new file mode 100644 index 0000000..d980c1b --- /dev/null +++ b/src/components/playGame.js @@ -0,0 +1,44 @@ +import randomNum from "./\brandomNum"; + +let comValue = randomNum(); +console.log(comValue); + +export default function playGame() { + + const userInput = document.getElementById('user-input').value; + + let strike = 0; + let ball = 0; + + const userInputArray = Array.from(userInput.toString()).map(Number); + const resultDiv = document.getElementById('result'); + + for (let i = 0; i < userInputArray.length; i++) { + if (comValue.includes(userInputArray[i]) && userInputArray[i] !== comValue[i]) { + ball++; + } + } + + for (let i = 0; i < comValue.length; i++) { + if (userInputArray[i] === comValue[i]) { + strike++; + } + } + + if (strike === 3) { + resultDiv.innerHTML = `정답을 맞추셨습니다!

게임을 새로 시작하시겠습니까?

`; + const restartButton = document.createElement("button"); + restartButton.innerText = "게임 재시작"; + restartButton.addEventListener("click", function() { + location.reload(); + comValue = randomNum(); + document.getElementById('user-input').value = ''; + restartButton.remove(); + }); + document.getElementById('app').appendChild(restartButton); + } else if (strike === 0 && ball === 0) { + resultDiv.innerHTML = `낫싱`; + } else { + resultDiv.innerHTML = `${ball}볼 ${strike}스트라이크`; + } +} From ad1689741c754110623db85021c0e898849d1fda Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:53:17 +0900 Subject: [PATCH 11/14] =?UTF-8?q?refactor:=20gameResult.js=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gameResult.js | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/gameResult.js diff --git a/src/gameResult.js b/src/gameResult.js deleted file mode 100644 index 71b5390..0000000 --- a/src/gameResult.js +++ /dev/null @@ -1,32 +0,0 @@ -import { randomNum } from "./\brandomNum"; - -export function gameResult(userInput) { - let strike = 0; - let ball = 0; - let comValue = randomNum(); - - // 볼 계산 - for (let i = 0; i < userInput.length; i++) { - if (comValue.includes(userInput[i]) && userInput[i] !== comValue[i]) { - ball++; - } - } - - // 스트라이크 계산 - for (let i = 0; i < comValue.length; i++) { - if (userInput[i] === comValue[i]) { - strike++; - ball--; - } - } - - ball = ball < 0 ? 0 : ball; - - if (strike === 3) { - return { message: '정답을 맞추셨습니다! 게임을 새로 시작하시겠습니까?', isCorrect: true }; - } else if (strike === 0 && ball === 0) { - return { message: '낫싱', isCorrect: false }; - } else { - return { message: `결과: ${ball}볼 ${strike}스트라이크`, isCorrect: false }; - } -} \ No newline at end of file From 4b87932dc8647be6e3b61695d4907ef232fead65 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:53:42 +0900 Subject: [PATCH 12/14] =?UTF-8?q?refactor:=20randomNum.js=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/\brandomNum.js" | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 "src/\brandomNum.js" diff --git "a/src/\brandomNum.js" "b/src/\brandomNum.js" deleted file mode 100644 index e4781c5..0000000 --- "a/src/\brandomNum.js" +++ /dev/null @@ -1,10 +0,0 @@ -export function randomNum() { - let arr = []; - while(arr.length < 3) { - let num = Math.floor(Math.random() * 10); - if (!arr.includes(num)) { - arr.push(num); - } - } - return arr.join(''); -} \ No newline at end of file From 71a13b9ce481ee32d05a2016df333c94f0f86216 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 14:55:34 +0900 Subject: [PATCH 13/14] =?UTF-8?q?refactor:=20HTML=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 024dc6c..6f516ec 100644 --- a/index.html +++ b/index.html @@ -16,15 +16,12 @@

⚾숫자 야구 게임

- +
-

결과

-

정답을 맞추셨습니다

-
게임을 새로 시작하시겠습니까?
- - +

📄 결과

+
From b76b0dcbc351779de399b1725eb681885014a689 Mon Sep 17 00:00:00 2001 From: rudtj Date: Fri, 10 May 2024 15:21:25 +0900 Subject: [PATCH 14/14] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/checkError.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/checkError.js b/src/components/checkError.js index 2c5adc7..00b2572 100644 --- a/src/components/checkError.js +++ b/src/components/checkError.js @@ -15,7 +15,7 @@ export default function checkError(value) { let digits = value.split(''); let uniqueDigits = [...new Set(digits)]; if (uniqueDigits.length !== digits.length) { - alert("중복된 숫자 없이 입력해야 합니다.\n다시 입력해주세요."); + alert("중복 없이 숫자를 입력해야 합니다.\n다시 입력해주세요."); return false; } return true;