From f196de2561e06a092c12e3620f3b2840024bdeba Mon Sep 17 00:00:00 2001 From: "kayla.park" Date: Thu, 22 Dec 2022 15:34:36 +0900 Subject: [PATCH 1/2] FEAT --- README.md | 12 +++ src/main/java/baseballGame/BaseballGame.java | 90 ++++++++++++++++++ src/main/java/baseballGame/BaseballTest.java | 27 ++++++ src/main/java/baseballGame/Main.java | 8 ++ src/test/.DS_Store | Bin 0 -> 6148 bytes src/test/java/.DS_Store | Bin 0 -> 6148 bytes .../java/baseballGame/BaseballGameTest.java | 33 +++++++ src/test/java/study/StringTest.java | 1 + 8 files changed, 171 insertions(+) create mode 100644 src/main/java/baseballGame/BaseballGame.java create mode 100644 src/main/java/baseballGame/BaseballTest.java create mode 100644 src/main/java/baseballGame/Main.java create mode 100644 src/test/.DS_Store create mode 100644 src/test/java/.DS_Store create mode 100644 src/test/java/baseballGame/BaseballGameTest.java diff --git a/README.md b/README.md index fcf3f057..89884fda 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,15 @@ ## 과제 제출 과정 * [과제 제출 방법](https://github.com/next-step/nextstep-docs/tree/master/ent-precourse) + + +## 기능 구현 +Main: +BaseballGame: +- startGame: 게임을 시작한다. +- runGame: 게임의 전체 흐름을 순서대로 호출한다. +- setGame: 컴퓨터의 정답을 정한다. +- setUserAnswer: 유저의 정답을 입력받는다. +- evaluate: 유저의 정답에 대해 스트라이크, 볼을 계산한다. +- printMessage: 콘솔창에 출력한다. + diff --git a/src/main/java/baseballGame/BaseballGame.java b/src/main/java/baseballGame/BaseballGame.java new file mode 100644 index 00000000..3eb86fe0 --- /dev/null +++ b/src/main/java/baseballGame/BaseballGame.java @@ -0,0 +1,90 @@ +package baseballGame; +import java.util.Scanner; +public class BaseballGame { + protected int[] answer; //컴퓨터가 정한 답 + protected int[] userAnswer; //유저가 입력한 답 + protected int strike; + protected int ball; + protected boolean finish; + BaseballGame() { + answer = new int[3]; + userAnswer = new int[3]; + } + void startGame() { + runGame(); + Scanner sc = new Scanner(System.in); + int response = sc.nextInt(); + if (response == 2) return; + startGame(); + } + protected void runGame() { + finish = false; + setGame(); + while (!finish) { + setUserAnswer(); + evaluate(); + printOutputMessage(); + } + printFinishMessage(); + } + protected int[] setGame() { //정답 세팅 + answer[0] = (int)(Math.random() * 9) + 1; + answer[1] = (int)(Math.random() * 9) + 1; + answer[2] = (int)(Math.random() * 9) + 1; + + while(answer[1] == answer[0]) { + answer[1] = (int)(Math.random() * 9) + 1; + } + while(answer[2] == answer[0] || answer[2] == answer[1]) { + answer[2] = (int)(Math.random() * 9) + 1; + } + return answer; + } + protected String receiveUserInput() { + String buffer; + Scanner sc = new Scanner(System.in); + buffer = sc.nextLine(); + return buffer; + } + protected void setUserAnswer() { //유저의 입력을 받음 + System.out.print("숫자를 입력해주세요 : "); + String buffer = receiveUserInput(); + for (int i = 0; i < 3; i++) { + userAnswer[i] = buffer.charAt(i) - '0'; + } + } + protected int isStrike(int idx) { // idx번째가 스트라이크인지 판단한다 + if(answer[idx] == userAnswer[idx]) return 1; + return 0; + } + protected int isBall(int idx) { //idx번째가 볼인지 판단한다 + if(answer[idx] == userAnswer[idx]) return 0; + if(answer[0] == userAnswer[idx] || answer[1] == userAnswer[idx] || answer[2] == userAnswer[idx]) return 1; + return 0; + } + protected void evaluate() { //유저 입력 결과 계산 + strike = 0; + ball = 0; + for(int i = 0; i < 3; i++) { + strike += isStrike(i); + ball += isBall(i); + } + if(strike == 3) finish = true; + } + protected void printOutputMessage() { //결과 출력 + if(strike == 0 && ball == 0) { + System.out.print("낫싱"); + } + if(strike > 0) { + System.out.print(strike + " 스트라이크 "); + } + if(ball > 0) { + System.out.print(ball + "볼"); + } + System.out.println(); + } + protected void printFinishMessage() { //종료메시지 출력 + System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); + System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); + } +} \ No newline at end of file diff --git a/src/main/java/baseballGame/BaseballTest.java b/src/main/java/baseballGame/BaseballTest.java new file mode 100644 index 00000000..e2030baf --- /dev/null +++ b/src/main/java/baseballGame/BaseballTest.java @@ -0,0 +1,27 @@ +package baseballGame; + +public class BaseballTest extends BaseballGame { + + int[] testAnswer() { + setGame(); + return answer; + } + void testSetAnswer(int[] answer) { + this.answer = answer; + } + void testSetUserAnswer(int[] userAnswer) { + this.userAnswer = userAnswer; + } + int testStrike(int[] answer, int[] userAnswer) { + testSetAnswer(answer); + testSetUserAnswer(userAnswer); + evaluate(); + return strike; + } + int testBall(int[] answer, int[] userAnswer) { + testSetAnswer(answer); + testSetUserAnswer(userAnswer); + evaluate(); + return ball; + } +} diff --git a/src/main/java/baseballGame/Main.java b/src/main/java/baseballGame/Main.java new file mode 100644 index 00000000..8558177b --- /dev/null +++ b/src/main/java/baseballGame/Main.java @@ -0,0 +1,8 @@ +package baseballGame; + +public class Main { + public static void main(String[] args) { + BaseballGame baseballgame = new BaseballGame(); + baseballgame.startGame(); + } +} \ No newline at end of file diff --git a/src/test/.DS_Store b/src/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7ddf1224f4d4a9fcd40bdaa581cff916f2b39133 GIT binary patch literal 6148 zcmeHK!AiqG5Z!H~O(;SR3VI88E!tYC1uwDIgI6PZP^pP28jV?L(&kVKx$6)4BmR!g z>~0HMJqaRZ24>%8c4ou84Lcde81D?j24gm3%mhU&SulJfxQ;p}C2c7Ka@^xM7B@jG z0(iy^N&Y_rcyBU%kwA+Mcxs^Bur(j zrxr}hw0ic&c-(5#Yff{gJ*he4M!ngtIj!Bj$;2|(Hn;ardJpkqBAylZ96n4bD;lTp z0+U%nBX5wzBDn?I)PL$nNDL4I#J~bFpszZ!x`4S+O2hy$@H+v0uaNRj@6%OmJ_AeBwaK`1EVITcwt~(U2 z8xQVCcg9_XG!g^Ez-I=q_XDx9{vZ9^|4Szthyh|?F&W@S*Xwp5H(gujvcy{JfL?>5 ppkJYI76KDlioq94@j9p!usb*bbTt+V!2&`*0+I$Ah=D(4-~$6-ROA2v literal 0 HcmV?d00001 diff --git a/src/test/java/.DS_Store b/src/test/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..34b1241be03b94d4d3c2ca06e6598fee35059918 GIT binary patch literal 6148 zcmeHKO>fgc5S>j^>Zl;)0216*;u^IHMWqrK*KLKkV$>d>3O2UD!u3|M(+EY8d@ui{ zXZ{F(2j1*%Q9me03TVcfeY3ms{PEV>43N)_`$aw*_wVnRs!56}pIAbX zg3^qJStM z3f#T|e(DQWZ~s-~4MYJ^;4f2v=LZdE3_Z3E?bLz79sz*7jkJcCw~EZs9z&0$Q*LwN}I5!Pz*kb@-Elz%Iqe<)!!`+#1?72f)x{ T>kut4*$7w}q!0!Er~*F#g)?a& literal 0 HcmV?d00001 diff --git a/src/test/java/baseballGame/BaseballGameTest.java b/src/test/java/baseballGame/BaseballGameTest.java new file mode 100644 index 00000000..5afa4c23 --- /dev/null +++ b/src/test/java/baseballGame/BaseballGameTest.java @@ -0,0 +1,33 @@ +package baseballGame; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +public class BaseballGameTest { + //정답, 유저정답, 스트라이크, 볼 + @Test + void testAnswer() { + BaseballTest baseballtest = new BaseballTest(); + int[] answer = baseballtest.testAnswer(); + for(int i = 0; i < 3; i++) + assertThat(answer[i] >= 1 && answer[i] <= 9); + } + @Test + void testStrike() { + BaseballTest baseballtest = new BaseballTest(); + int[] answer = {1, 2, 3}; + int[] userAnswer = {1, 3, 5}; + int strike = baseballtest.testStrike(answer, userAnswer); + assertThat(strike == 1); + //스트라이크가 1맞는지 + } + + @Test + void testBall() { + BaseballTest baseballtest = new BaseballTest(); + int[] answer = {1, 2, 3}; + int[] userAnswer = {1, 3, 5}; + int ball = baseballtest.testBall(answer, userAnswer); + assertThat(ball == 1); + //볼이 1맞는지 + } +} diff --git a/src/test/java/study/StringTest.java b/src/test/java/study/StringTest.java index 43e47d90..9609007d 100644 --- a/src/test/java/study/StringTest.java +++ b/src/test/java/study/StringTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class StringTest { + @Test void replace() { String actual = "abc".replace("b", "d"); From f5fd73df04b0601f9fc09c271cb188a19dd95cd1 Mon Sep 17 00:00:00 2001 From: kokomo0 <50624525+kokomo0@users.noreply.github.com> Date: Thu, 22 Dec 2022 16:03:11 +0900 Subject: [PATCH 2/2] FEAT --- src/main/.DS_Store | Bin 0 -> 6148 bytes src/main/java/.DS_Store | Bin 0 -> 6148 bytes src/test/.DS_Store | Bin 6148 -> 6148 bytes src/test/java/.DS_Store | Bin 6148 -> 6148 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/.DS_Store create mode 100644 src/main/java/.DS_Store diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..068ac138d208b8bbb72114b2b7f4c5fe2149b959 GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7O(;SS3Oz1(EgEeV#7nI8;MIs8RBB?1Mq^f*v^|tU&iX@siNB*W zyPJYmPl8C9f!Vj2o!KyN!%l`V#yi7si?KRm%mPI$*)V(~xQ;p}C1WWAa@^xMmN!8x z19-*_N&Y_rcy<+b&wMsw{+IJRfVGWxB`T4bUocLe%sIaXPjQrHj`PM#<;v1>)v8)G z>&m;6V=wcwVcPKr7x;84WgHZ9KRAo}<6eFBP$rolCH;X4h{8U&T%JcsD90T+Ou|&f zdV0aKExT85OeSro-4r`cYuXf(y=|u{+O6H`)V9{vH}_9^5AkCnpEdOyzDp%51`BwB z$t<6dH%MZc+=8v}FZ>9J0b+m{SVRWQU1!x6F*(YK7$63I#Q@$90u<3Tm}^v52MnqO z0IYyn3Cz{6KcGMZpldMK2o?~oLjiRtH!TJ?odeh5umIkL*b_J z;6k}G?rNlw7$62dGl0DxNFD3{(a-(Aa-xA4AO;qb0bc2P-45htYU^B+J2>l2s8fYK}{*-|a0KQbG literal 0 HcmV?d00001 diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d0f2c78acf7e483fbe99ec35f5e9c52a541673c3 GIT binary patch literal 6148 zcmeHKO>fgc5S>i}-KZet08)=D^%@mJ0}|q5(jvsQMsNTWY+@Cwt~ZLE<`6~l8GZ~` zehGgE-t2Brt5As(tOZ&)YPbb-o! z_pH&FqeJ5Bp^LIpK+Vg9nxW@zId<2ii)r!z!EcPOKjYRoiaiRUHo zjB=j$3%qZC%gYw^H1NJ>)3T_WDEgr~Tisi?xAnH((I1k}c9Aq`Gp|SK>>arf!9MSABtI+s300a4&aE5Pf6fiuPdTaRw(K;fFY6c7b2E3oBX`@H|Z zxcdHonIvzbfGF@^DWJMX$-k;-i13uz2N{D U2W&l}1||mqCxaBCz&};s7iE=e4FCWD literal 0 HcmV?d00001 diff --git a/src/test/.DS_Store b/src/test/.DS_Store index 7ddf1224f4d4a9fcd40bdaa581cff916f2b39133..068ac138d208b8bbb72114b2b7f4c5fe2149b959 100644 GIT binary patch delta 69 zcmZoMXffE}&BVB4vJX?Cxg0YcBt&T#qp@Ff5j)Iwqd2KBxhp4i?bx?eE gPHtX)Hvn}LCWhaqXRHuD{p&1@Y1_yOoy7RCSo delta 114 zcmZoMXffCz$i(P0S%}FTNP00TGVYw5!&K-eSzT>rXrQBDY-CZZqfl*VU~HkIU}j=o vTg%BIs;qAv6rY`wo0s3s00xYV5SoD(O2eogAcKd&X|opd9hS}P9Dn%%uZ|WM