From e504503b600a1cd15a7aa0217c8001f9dfaa9ab2 Mon Sep 17 00:00:00 2001 From: eunsoni Date: Mon, 10 Jun 2024 05:24:41 +0900 Subject: [PATCH 1/8] [add] input name function --- bin/main/.gitkeep | 0 bin/main/Application.class | Bin 0 -> 489 bytes bin/main/Car.class | Bin 0 -> 544 bytes bin/main/GameController.class | Bin 0 -> 1028 bytes bin/main/GameView.class | Bin 0 -> 1904 bytes bin/test/.gitkeep | 0 src/main/java/Application.java | 6 ++++++ src/main/java/Car.java | 18 ++++++++++++++++++ src/main/java/GameController.java | 26 ++++++++++++++++++++++++++ src/main/java/GameView.java | 22 ++++++++++++++++++++++ 10 files changed, 72 insertions(+) create mode 100644 bin/main/.gitkeep create mode 100644 bin/main/Application.class create mode 100644 bin/main/Car.class create mode 100644 bin/main/GameController.class create mode 100644 bin/main/GameView.class create mode 100644 bin/test/.gitkeep create mode 100644 src/main/java/Application.java create mode 100644 src/main/java/Car.java create mode 100644 src/main/java/GameController.java create mode 100644 src/main/java/GameView.java diff --git a/bin/main/.gitkeep b/bin/main/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/bin/main/Application.class b/bin/main/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..280c0f92f8b007f911e5187ff7d781e768867169 GIT binary patch literal 489 zcmZvYTT22#6vzLwuCBY@wk*58^ri;+0jwZ|B3SCd5Td7X8@7>kR>raK)k{J_AD|Bv zozXyr9_E}mx8J#Z|9pG_xWKUohoN*enWQr2MrO)`%MgzEEAOOSC7t`>NW_Mra4wZJ zmkhaPYrx?4vS$$>2fvIw3JkSKDseX(4~2fJ1-@UZ#xB(p2aGA$%)#%Gk97_*28Ru}OsEI-xH0 ze`o|sHbAs(w27v9f_^sBvAC9Yk#KF+GdmtmKzE=60uKFXf07$5TYO6}hjir=;p3dnclwU{3Q}Ek%%KREit`ItV_AR(_NcH( O-hCVpj^U7O2S>k}{$R5J literal 0 HcmV?d00001 diff --git a/bin/main/Car.class b/bin/main/Car.class new file mode 100644 index 0000000000000000000000000000000000000000..59234b9931272657626c3f10859f6093847fd949 GIT binary patch literal 544 zcmZut%T5A85UklJkJXhGe0%T)n8*kCxR98b5HP`TUvPs%VAm{*U*$m)iHQe4z>hN4 z3`C7Mhwh&4s_L5g_+dVEVy=6g|y0Fc~0hF}R>{3y>JxHzGbzrDYX~52UC{`P5(+b{qzrXs*(d!pWVl-sv$;Ti}rtRC_A zykc{wTY1?&5*@`5?Gmgd#Rmqnp;Pp}%3ydM?l{6_$Ta+{p^|o`ISJBzWLG*;)fj@s zQi~x}@4pr%f{0s)!8DL0>i={m5{SpZkhTy;#6XrIb&52GHLM#rb3$hGlcz+_LLO%s z0@7i~P2|Xa<%KgCs-|)U?^R7?a9)?bz_4Ci3MsX;go_poL>ZC|>4^PduPxjI-nIpa zYxFzZZgE%Y^E4PzZ=^?xd~4=zk^wPKaaZXUO`^SSVG~7$m99{A?(S2V(sISptBDrh zbJ8lEF6Bl$Ge~9$K>M|A;RZ~GtSjCPg*PMho7UY{EZoE`;&Q}CrJEsav2?mx6n7Zd zwuyUqVBr2qcYQ$?9^w&0*c;fACSr4H-=gH@ZG@%%1KPRyT+MonHx=)^-Q$C)lV-C& zbUWgi)Lv(_Z*x0$bUrr7#~@8`0BJoYv`g!MMQf05XsYPDLZ<_SXa^L^V_4-MNF0u_ zdW;lpGlyT18{^zD3SS5jz$N;o2@hfl5m!==2r+F?#G0_+GOo~x;p(hHjZOiIMam;w zYs{HUKN=@>37=tYf|@dfDXWCCpG(6)t5(}4jP5F5{)W^DTeK8L*lBE~Z;xfjmaqd`!fxEXLHWi9 z9JM-AooQ!~0jC{b>NtMDjw0=#qhI|gB#i$+e0G!Yn(;&S-h1wI&wb8w&bj&f-$#D{ z=tfe3N5FSUoz#YO?E?i~f!Z7Dlp0B?##rRa$PFzi1uD99Lzm|S%0l5G0dLG4)%++! zWdP-<5U7dkhSr~%9MP;nbtI(;)WyxDni^6q-B}lmUOBGY0{(dMzNkQhrM;igY#CFn zezLH8jdVsrD)>pZuAA-5XU$WoN<`!pZ`zU+&yY)MBx!IN6{OyiVacd@+`*d~v z%Y{%|IJma5l>2rjx3HSMw-8+W^{4FeY}k*3IIQ51Kz)h319%LN3n*!aPRby|P@bYI zC;92dSk#g5U?J=ak};)a%*+_l4c&()1)6i8Eo5)aI^@^qKhJ$Km%VvAnEml%XR)}l zwlqV^=LPl`ob;Jf+EvZYq$o*!;lhm6Q<1oCOZU3Ugg$1dGGj3{hj$~o;uJr6j=(A$ z$I}X01opYXZ8`}cgfI(5mzt$Y(-Jrk3g;tpF}($QvFjnR~5H^)tLB9o5pm3y0I z$H76yS^|E38$SOyMGIxPooP%>r4lUFXiWuP_u(xHFM?--0)bw`(5zTWwQbE-@UFn| zJzK67X`y2a;cfs|ZKIvAp#+_E4HXcp+dkFNHIXchPqoqc54wv1;U;S{ipvt_5e_p#5R-p$plS2TLL zeg59YKeR0)#)B^l%y0bVMCEm5IZ7&^3=I_F7-|saf5J(Q-Kay1_BeN(Xj_RVi9)o_ ztQW6Pss`%)Dp4M^po!Lg;;s;xm)JoK5cL`@XW-r7m0krx;RC3!fw6%jD9;-dbkaoa k{TrmR1I4Uer2`KV806@q!)yFq$J<=_IeQ21VFZW%1CEa41ONa4 literal 0 HcmV?d00001 diff --git a/bin/test/.gitkeep b/bin/test/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/main/java/Application.java b/src/main/java/Application.java new file mode 100644 index 00000000..a806aa87 --- /dev/null +++ b/src/main/java/Application.java @@ -0,0 +1,6 @@ +public class Application { + public static void main(String[] args) { + GameController gameController = new GameController(); + gameController.startGame(); + } +} \ No newline at end of file diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 00000000..b33aa983 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,18 @@ +public class Car { + private final String name; + private int position; + + public Car(String name) { + this.name = name; + this.position = 0; + } + + public String getName() { + return name; + } + + public int getPosition() { + return position; + } + +} diff --git a/src/main/java/GameController.java b/src/main/java/GameController.java new file mode 100644 index 00000000..97d08c2a --- /dev/null +++ b/src/main/java/GameController.java @@ -0,0 +1,26 @@ +import java.util.Scanner; + +public class GameController { + private final GameView gameView; + private final Scanner scanner; + + public GameController() { + this.gameView = new GameView(); + this.scanner = new Scanner(System.in); + } + + public void startGame() { + String[] carNames = getCarNames(); + } + + private String[] getCarNames() { + while (true) { + gameView.requestCarNamesInput(); + String input = scanner.nextLine(); + String[] carNames = input.split(","); + + } + } + + +} diff --git a/src/main/java/GameView.java b/src/main/java/GameView.java new file mode 100644 index 00000000..c85eb214 --- /dev/null +++ b/src/main/java/GameView.java @@ -0,0 +1,22 @@ +import java.util.List; + +public class GameView { + public void requestCarNamesInput() { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + } + + public void requestAttemptCountInput() { + System.out.println("시도할 회수는 몇회인가요?"); + } + + public void requestMoveResult(List cars) { + for (Car car : cars) { + System.out.print(car.getName()+" : "); + for(int i=0; i Date: Mon, 10 Jun 2024 05:32:56 +0900 Subject: [PATCH 2/8] [update] input name validation --- bin/main/GameController.class | Bin 1028 -> 2090 bytes bin/main/GameView.class | Bin 1904 -> 1294 bytes src/main/java/Car.java | 1 + src/main/java/GameController.java | 33 +++++++++++++++++++++++++++++- src/main/java/GameView.java | 12 ++--------- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/bin/main/GameController.class b/bin/main/GameController.class index b3056b9a28046867d0503ea79cfb446431ed0c30..1f1c2c29aea86c8144ff13d27e4e6fa5fce47a7e 100644 GIT binary patch literal 2090 zcma)7TXPge6#jZI%x0NnNj4i2F1ZLK*=0?Ha8W`)hy)|MK}?JUyiGP!%iv}<&dw^l zX^B-7Sfy4a7EnTA2?onNpcMk8DSm*y_~w(pAd{bf@$1-2zG>qnV~|2}D!wt)gw@ItNReJYTclFb(^FfWJLHED-3;kLh9fQK_N=VFeL} zejF~0DpXcLphiUyYZTN9R6iB80(GcYu>J{{gXasjKCYqx8w7lYDG)2cG4h@L=0wpR zv@Km5?+zo1P4el@0`=`>UE;$MLX!#wA%RHBF!h1r_^56TX`?xv;8OXFmK)YAL)zYE zz&>LXh{%;@MNJA&QLr`3mK4Jb+p3}s?E-7Fy4|Z;1Kj4dSbO|*35%;au^MKUSOpR) zwj)Ux^gm>i;)LCsFPcmU_3Wp1ndKnSG9d(1?TK5WUy8g_MHj*XwU+*IQ7C$QeZ4=4rl~=d-vU zQgIl)q+k?=wVW~Lq7$fVFGDnbDug2fC!OzaE?&E{ICaID{;b)Vy5wBvbmPl~o44h7 z`QpOmTOHi^X5s6r&fPoB&h^=apDswJ-Q1L>yn21s`EJ&knr~j5`q{f9RXeKUbx`x@ zm_at$`6HH-i! znwRIWFP%uv;nk}MChyAgn%CygH@)-^{rxVTMp6Nr2KzN%kFh=1p%LqO)_^$4N@^uM zNe@p18}J5>@%1|1lgNBX(M#q02u%vQ6{NXl>+=x)326bP>6aGDx@Jxkc@m~LPvs@cgKunQZx-ip1e#BTMl kGPaleYNmgbvX>C9hkuER^EXRSX$W^jm5;zO4DG|%|CE&tApigX delta 305 zcmYj~Jx&5q6otR{#$m`f3Jk=ALL>eJ9l*hVMHwqQtX#p^5D21CVr%0Hd<(ENu_G~4 zShxV)iJcozZ$=B7d(OG{o^zh^cUkxC>*W<_b2N4zlzCT`tjjcYkA`vdY$o(*vTg#s z)ZA34y301Z4m*l`KfZ~>K|Jh+r=zRhu|9Wybv^bFb!_=w}+7_ybegHXe BD((OP diff --git a/bin/main/GameView.class b/bin/main/GameView.class index 3c7ffb089ba41cd83cec1edf49002672ce09b10f..1231aa4d09786e03208e49db80f2b30ec78b9d82 100644 GIT binary patch delta 292 zcmXAj%}T>i5QWc8a+@?w6l5fBxbq3b!7>bUzH=BjKVuKB`|&$`18{)7XZKb3<%@y7Nz{FqW!G6Z(ptq) ziSw$58s_QKXwM4RSEE3nbbP7qRFJ4N4o+{gK^pJVx7o@yv1((5DpuXBVU4=hQ?=n> zLm=M|d%ct1`J52&I%yhZ?L=uEX&YPQ$cD8e;8Q{RbS4jlL67oCT5urgi;$~)Xfe60 KHnELeO#J~i#hLcnrOTeu~ga4=$2c1=qD17bn+pif0FA^cxr2i0*JQG!x5pR?8G zh_S6u5XF3SYH`WTxiJ+31epzK=*JlyXK{|8=1n&vp0fGfJx%#&*0rr-J{IPsoYygo z5$^{jDjE(Ureh4p2)<=zxB-k4sIR7ZLB~a0A_Q4;y5v}{RVwnth>@(dUDk0F{@O=e z)iH@{Jo~Y5GFyI`v%uza!gdIayFPwv&8)!)4@^zf*2&{6zLUJER4FG4^TM{oV!@ny zv24!O0z&IPiJfyG)Ms6hdy*E*TTE|K8uZWOwu)O`MKa`J-0|K^Z`*GMaF6{^`)E5s zPZo=&ohS&$F&z~T37y^tsnf4Q5ZX9w^FGNFBzwQ*3qBtL@Ov+n7H>xB@zrsran@Qn z4hbE+O9>~S0wi(d<2>E7fs=&HD#rRY&`tP?{`5yQ^sZxY6GOl{M&%)86(KH$E;G@ z0iA2LD~%+sgZ~CZaf4YBy3oqi4D+TK*BRSpO>;EE@d%VE&s0>9%0Icv2aGD(;M*>! o=;ur_thm7UUEJqP 0) { + return attemptCount; + } else { + gameView.displayErrorMessage("유효하지 않은 입력입니다. 회수는 1 이상이어야 합니다."); + } + } catch (NumberFormatException e) { + gameView.displayErrorMessage("유효하지 않은 입력입니다. 숫자를 입력해주세요."); + } + } + } + + + private boolean isValidInput(String[] carNames) { + for (String name : carNames) { + if (name.length() > 5) { + return false; + } + } + return true; + } } diff --git a/src/main/java/GameView.java b/src/main/java/GameView.java index c85eb214..2758b172 100644 --- a/src/main/java/GameView.java +++ b/src/main/java/GameView.java @@ -1,4 +1,3 @@ -import java.util.List; public class GameView { public void requestCarNamesInput() { @@ -9,14 +8,7 @@ public void requestAttemptCountInput() { System.out.println("시도할 회수는 몇회인가요?"); } - public void requestMoveResult(List cars) { - for (Car car : cars) { - System.out.print(car.getName()+" : "); - for(int i=0; i Date: Mon, 10 Jun 2024 05:46:15 +0900 Subject: [PATCH 3/8] [add] execute game class --- bin/main/Race.class | Bin 0 -> 2150 bytes src/main/java/Race.java | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 bin/main/Race.class create mode 100644 src/main/java/Race.java diff --git a/bin/main/Race.class b/bin/main/Race.class new file mode 100644 index 0000000000000000000000000000000000000000..4fbe0681a9a4cb13a9041ec70fcd0dd62b160f5e GIT binary patch literal 2150 zcmZ`)%Trrb82_C-xJkG`8z2+{6k1x7K#F2pD+$=j%V?5fsX?r-OSr-XlHlbA%Dx-N z88^;!;mXc9!^TCe7K(K`t{umPTX(u}rlbFXBmU0439ljy$vNNo?)QDa$GQCU@Appt z3}Ib?OTcqO%j*g}0w)%=HLZVHE6(>{pIy}R77z29xyqBYeN?uL<^Hs>Y9$2xQ^tHz zv&yC}&~oHBnI6&1#4xjb^IAdA8Tz_FAU#o8GhUN4iiR~T5Q^M#9=6*~S*B5(PegO< zJW`s|18}23MJ-MUxFgY=f*@;F>jZET4SonTtMDVBphci@f6!~Dscpz<0|+^JZ7RH| zQP9q6oG^eeI%W0KEDYNfkXf$12*~+>vJ;<`U6&1RBytQO}kO zv$}axn_VVR!E`CFE$1}Tko!u|V=WluxF#)ykere8EU99w@fdPQO_8Uv*uGvB;solZ zEG@s3(N^r@3VH>UdEFvfmJ3FrN0ef_)@OqI^101&k^Lg6XwHwzxT4^tLpGV(She(m zikC4+GD>ASrrGIWl=>&BrNzN?t&s2`$=Uw;^sB$`e$w^y!TqP-{t&=0t}1w?s@dTu zR9us?C@Zqaa#0E~qGA+d3*=SIf$pg1^BL{-WNFo~j1pC3-;^A2Ud4h;sAWR+RK^!oEMeKPi?rWSZuTsu ztXIdXEgWnRI&AKZm8!vej+pL$X3xM>u?mXfW?eE7Nu{FXCNNbhn|XcQkT=LLFUbX| zDjmU0^6o-VUTf|Yd*|bxuLG{VjMYNrXB~Gt@GuLQh;5@j_82E;w$bc4)J>&^>~gsUG}IGh#<-xhd_)uf`38uAx;n%7!AR-%aVLW2?hNS_9t4I z_dH%;jstMOhQnk25~Q5*J{K-~7|8?pVw6oKa>;_zRNzHiWJGfD3!`3sk3GPpU}6hH z?x9Uwl9hJws=%OU6K$=Y9gGY7h;TOk2 cars; + private final GameView gameView; + + public Race(String[] carNames) { + this.gameView = new GameView(); + this.cars = new ArrayList<>(); + for (String name : carNames) { + this.cars.add(new Car(name)); + } + } + + public List getCars() { + return cars; + } + + public void run(int attempts) { + System.out.println("실행 결과"); + for (int i = 0; i < attempts; i++) { + for (Car car : cars) { + car.move((int) (Math.random() * 10)); + } + } + } + + public List getWinners() { + List winners = new ArrayList<>(); + int maxPosition = getMaxPosition(); + for (Car car : cars) { + if (car.getPosition() == maxPosition) { + winners.add(car.getName()); + } + } + return winners; + } + + private int getMaxPosition() { + int maxPosition = 0; + for (Car car : cars) { + maxPosition = Math.max(maxPosition, car.getPosition()); + } + return maxPosition; + } +} From 549fd9ca0806be9fa4f55126bf81e419a54f876d Mon Sep 17 00:00:00 2001 From: eunsoni Date: Mon, 10 Jun 2024 05:47:21 +0900 Subject: [PATCH 4/8] [update] execute game function --- bin/main/Car.class | Bin 544 -> 684 bytes bin/main/GameController.class | Bin 2090 -> 2229 bytes src/main/java/Car.java | 6 +++++- src/main/java/GameController.java | 6 +++++- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bin/main/Car.class b/bin/main/Car.class index 59234b9931272657626c3f10859f6093847fd949..2be8c58195816ec386c302e1e72bfb386782f075 100644 GIT binary patch delta 174 zcmZ3$vWAuG)W2Q(7#J9A85B2iF*B;Oh*D7)bH~X$A%%238=CpFxyC1jrME=mGM?fIOgX23ZCUpowxoHZubwKaeR8WHK=* F003~`8R`H4 delta 35 rcmZ3(x`2i2)W2Q(7#J9A8DuwdF*8m!V>D!Bo}9sWhn0bWi9rSc!1M^S diff --git a/bin/main/GameController.class b/bin/main/GameController.class index 1f1c2c29aea86c8144ff13d27e4e6fa5fce47a7e..b927d2e03ff5f81bafaf453b02c8eac384b27a61 100644 GIT binary patch delta 1273 zcmZ8hO-x)>7(MsBH}i(!$_&$ifhjPQDU^9k3zSN$fVHB+Sf~~h1w|d{b2=4X>F`G5 zY8JY4g|{0wCMHdqG$j5+2BS$=uB;1pCMHcxT)J}OuHw0G#zx)T``!D#`b4hT`Rs@9Ig80&C%tJqUX7l7NpT*tFEsc-x=7UiEwdb2wM9 zaazFAyrUS$8C~pAb=Te(X~Tuwin=Eza|xW6coI?|S#fVv-5r0n zSh>XRb_(8h)sG^DrzB?av~rB&W6uhRd=&F|&PL(C-T0NVSCY7h1%c4c_GX#1PN+Z3 zr25!Mg)d1wj~CSEh9j2LFUEQ#ffprS!iqX?uD4EU8DEoFhg7%C-pm^)+IaIHB?Gkz zp6{02io{#kP`{aj7G1ii?i+(@+!_`owPwv(Wr2+P(aNarEhjP$YU^Q4{b^0tOc>fb z`kc@<1v>@i9-?>jm+K=ut;1pjWSs-FIbt7i=Q|`;50KnP2gB6rSLi-KW*-AzGR?qo zuAM9b7PaV^E}CS)0hS!(tu74IvKYb%1_Hwmv9|cYEO;|)Uj2B8|$(s&uK5WbU)H8%sROq1LnAY)_R#u{VJca!41CdG*c#aACv{06Vj z^n8j?&t5?8N4aIdJQ62(Pj{Rn=l4${0(Os$O`}f delta 1134 zcmY*ZO-~b16g_XI?UedxX@T+~wxAU3Pz6Qt15ptL5l|8Q07b1jAsDS%292w3T(~nh zZd_nuVq#)gsF7kc@ds#3bmhul;6E@?Ja49cZSH%w@4j=-IrmMMqR%Qq?|;5|2cQSm zd?+*De{`~3q6{Ge5rN=9_NsMa#<~?k80BRUh)MVnFi<5By_~(7ZJ)DeuC$L`%;s`d zz6^2H8mJMdaL=w}bJOi(w`XnZsze>?=f5X|m1t1-Yn&#L3?wBC1f6~{8fcMd#d>E! zm;qCw4H@U7sCCj>S2~Q%5}gPMROPK3bJncgm(3q0vDv}g^*K9)N^F(r!Zzow)|}cQ zATl9zqsPFm|B2Z7ncTF*ZtQVBYh8g}iGApE%5_s5aJK7H!7v6S4r0(*(5D7AD#=GA zj;hABrN+HBrChiBuFd7_QuAXNH!$|w4Oj7C&bFqlyu@*waC&_y-zkA1r&~`s_k8Qc zr1RQ0AkN(P4+pz(ULs4Wx+gJ0g#gRY_&+3q-TqVvU zlqnI4pdN=X#P)ICQ`9sJvr2OPfuw2W;#hvRFE_B1?#zhTiO zchV*Ib;M03+~gClM#!ZFr`dO%yL!x9XuslSkYj`=RW!X8DOR;IOEa37>Oj(!V7hbb z{3D^MBtePxJZ&Z16wb1p5>romexQzG#0qWJ3<&O3IL!*aaOJ)e4>lIg1)spLFW%9` znrh$Um2bX9UiTQrIaXjZqWsY6um!8RZ^pKNJZ&iv0(E&qj&jTw=&nbj2Kow(= 4) { + position++; + } + } } diff --git a/src/main/java/GameController.java b/src/main/java/GameController.java index 044f4f31..3722d7b9 100644 --- a/src/main/java/GameController.java +++ b/src/main/java/GameController.java @@ -1,10 +1,12 @@ import java.util.Scanner; public class GameController { + private Race race; private final GameView gameView; private final Scanner scanner; public GameController() { + this.race = null; this.gameView = new GameView(); this.scanner = new Scanner(System.in); } @@ -12,6 +14,8 @@ public GameController() { public void startGame() { String[] carNames = getCarNames(); int attemptCount = getAttemptCount(); + race = new Race(carNames); + race.run(attemptCount); } private String[] getCarNames() { @@ -44,7 +48,7 @@ private int getAttemptCount() { } } - + private boolean isValidInput(String[] carNames) { for (String name : carNames) { From 9cc406d0c99528a9360155a1cefb613329268b70 Mon Sep 17 00:00:00 2001 From: eunsoni Date: Mon, 10 Jun 2024 05:51:37 +0900 Subject: [PATCH 5/8] [update] print situation and winner --- bin/main/Car.class | Bin 684 -> 684 bytes bin/main/GameController.class | Bin 2229 -> 2430 bytes bin/main/GameView.class | Bin 1294 -> 2509 bytes bin/main/Race.class | Bin 2150 -> 2217 bytes src/main/java/Car.java | 2 +- src/main/java/GameController.java | 5 ++++- src/main/java/GameView.java | 25 +++++++++++++++++++++++++ src/main/java/Race.java | 1 + 8 files changed, 31 insertions(+), 2 deletions(-) diff --git a/bin/main/Car.class b/bin/main/Car.class index 2be8c58195816ec386c302e1e72bfb386782f075..b182df9b80bcf9e2a4e69537b454a9633accf63a 100644 GIT binary patch delta 21 ccmZ3(x`uT_2@|I<11p0F13!b<!3PSy04t2OP=?Y@5qyNLI}&H* zLbon-A&EA`g+D+yx^m@D0X#FUU|h_-_sjP<=X@vgxn|ETf7|==6+jFxw&mlJM}|OD zK|d4$C6i5Q`gBUu)NIZONczxbB9cyM$;hP6xk&{RxN7{Ax}Db*+`yz!VGD^{MvraIIj!I} z?ig=uGa~~s+?Z4Fz=Ulq!4B%Wx}4F6R`Qx&f_{hv7v=?O4q-+$T}`T41u7mHgLc3D zvA~!SwfT)LdxuywcI+b}{mK#FJdKQkRb&O^r21E{fV(3Yx2EOwR5}t*<@BgYMpux> znn2}3DwjzoHcI;usO|W_JUC_QUste!P620H)si|%*fs8qV3RBP?7TW`XpVm2G~PSb z%k!|qMmO4wu+uvpDxhzhkpv&lCOCOk!GUVXs6joscu|X1)WOe8OR*CHv@>!r7sCME zl;OcSoHw?d-p#?#C$tuDF@Dm0xqvI

P4$Uc(Xo$iz|i%>t(0?f+uC&4Tp8#djl5 z4}qHqd5mM53FSqQZXd#iOR#3uUECvVJ*k-lB;4l=h4(HtkGnAD!VH55I$2b~)OSXv z<}Q;$0ka1bcaVrRzlEdugGDZBk^4Pv1t}}|!PY8r3t)-3ZPs069zZ!q`pG=NiVm(Q zNFAFYmW5e(iaRnH_$&z_Zk_lC5>AvP)UlPDBS<^PEkonW6w^e$yYNtp*vAn_E(pHO zV~G{~bxO)&j0EeeOv?PKy9!t-Ab04g%nINPD$#8*F*{9-MUE*W z+6fCM<#VOS7_)E+1CsY6$=gdO`j3E>@%JnUV#Rc#IcNxbeUzKnE8UC+3ZIQufvo108hk5 zzDbFKIBNj9+%Ww83HH66qevpfNk#4&kugzl#S`Pt)D!uI`&bR?1QX((S;D>!iZuYqk53$^glMY9ot34HOw$JfISX? zf?0Z41m1)hGf^^8l}$6UcKsjAC)_MXUPF((b13dQ6u&FZaNikz@OT>_i3JAqJI@Yc z5-!@uiI|`wg>D=mY?`Vpbpw2J5Qo^cQ8QdGFx){Mr@U{QwVORx#E=y2mhgaGn>x%r zY$8Nx(ZWtBCItI-S)ii*EBx9K7t1eQz1}>$I6}e^t|w2Pf*f)M^PL;;@(vzyDIL=w Y)E4()IA&D{x>bSQ3U~I1nF=2N1t7R{ZvX%Q diff --git a/bin/main/GameView.class b/bin/main/GameView.class index 1231aa4d09786e03208e49db80f2b30ec78b9d82..932577af7d36c91307352053695eb7b2e143d6fe 100644 GIT binary patch literal 2509 zcmaJ?ZBr9h6n<_9Y!U(}g7|_qRYX7(?Tc0eT8*f*0WGo6YHhoOEv$synBAcG$qzVf zZD(v}bjC8+YTxX1`hhx?ieult_G5nrS*CxWQ~KOZ0s%6eOm^=*_uO-y^PK12{qx@^ zzXIsMRRtaa-$`{;>(jN%3cLbqE~;Z{TS7I4+D;E#)Z(^4S-WoN_F;jNrsh5YZ^Rtb z0w{q$h*FdZR7G_|>q(CeXsNU6KtdC!j+${b(Wj<#InNor_ONaV1fuzTVS$>Ib}6k{ zc0^6}5QWucB-6GZYf!CV?J_X2am&_5gII?e0x{FXRU37&>So)Sly2BDJEf_kVIS5D z^v^x~#rf*#{Ox-o=krf8H$QWxzY95cf69D2;oO~|?Rw_kH}kjeI1`VZ$yl7Z4S*no_4;z=1e`!+@A`~J^CRtGtnHt25eHWQD9w>+(B$cy?~OGa1sU) zHf15YbP}I#4230y8**hIwOLcrj+kk~c1!o+8G#1pqp8fz2?>6F@?+#cRmrIzo^+a1#w`@0^Kc){Es+~@;HJes?v`0yP z_%I#Iu>(65GzwI@#VrO2q6y6uif(Hu)izTC>zkUhmAO7$IeWMqyRch9D;2O5A-@{L z9<)(DhIWNWYw{5aq!w1NkIf~X0QTbfAYQO@vZjDJw?&M>6()2$!E8GJT_kz= zDH>1aPg32A2>BKYRK#pGKGLlwb7!t{P`8o^b-Z6U3{58Axw`#srwSD+wcx|+RFm^) z%K7qo$eEmWZp`u^g${+JNcw|#18)*GiI5`i%86llE6*=Kzpnb_?h8S@Eot;x`c=(` zcLhAHA+mKjkFjA@c|{-+U9PsyRLV?sYnG)BY1I%oz*xLW8=ikazDTsxu5 zyQ(689qo~x#C*&&ZOcxn$!^UaHV3T$Mlh-%!GpOJOE<>M5v?t&!K~s=sBxZ+aVbU0 z;!dI9a^Bg1r&MDwp;--4(;P`B!>a)nSe9)(O9d2hKVRUVy|TlF{m6xgsEI_32RK|+ zhKoL2BL9Nz^ns%ApYQDLJ>7dDBm{z8QYn#yYFV14U`$}gs;Z0Cq2P+Z*8g|qrzBf6 zo@Jj(cyNI-j`$VfQ{k+QZ^3tI%g^xr$bkoeoD;aAoa12Df$s{=cvmfMK0t4|+5Zq# z)wMIITM7{15~IRL=cOS2#UNXX2iaOAh@U|MMT3M`mIvFI$b;>&91-NGl=IlGSu_ar zJV5*IS+ofJj=kMP**b&go?t&PgF_|zy$?_+p?7dL;T5%BE+4tS@HcHUh;U=4z~sUo z*{Q6}>ypz5KgSiQAr;$Eg=T&}_wn6r+{eXr>ff$?3=9mm3>F)?_A<%|r(_lvb$1MB2}Y!1>KKo%zhH_%ER z21X#s38Z;}G$Vt;a(#p0nN)o8S9O^l6cHnCMa z>3{HU9;BXB@KTld3xr-hdiSb-g~r*c4DZdCneWVe=e-|$Uqzg+zdwBeN<7?hHq2>< z2v=OLQc*oU>c{5NnH87Y)D(j& zo#eyzExFf-Zn4hinKGy=jNA^gt<@l}^5_w-okk=1p%&-&ZV(6WktXO|c( zyy5upOplUTdcj#eY86wtckGiB@3Hj6P|3ve{`QtIO(x_XC#)-0?8GQ@M7cncBNELK z3VM+tD?UKixQ@bMmZ~5_YF%z{Q@^y*(=kjNrIZjA%S=hy7Hr@#ApV=6K-%nQqL<&Z zzntrFOaHRQoO*JT!F-{|U47V2#}5)FB_(O;KF%bEI3@TT6S`u@vMnrWKfp=W{wWv< z6v!TJY3@ocEZ@??*U#*fDUYkS?ZUD82Rf$+W(n&E!4k@M|U*kL|dLXM`d7M mY*HTx$EJb-N}{`W1{fj*hB5jK5ehby_2zo2!(+Vw delta 457 zcmXw#%Su~O6o$WjPCO?bk9SNe$Epz&6G>I5&{l(jmLjOsk%+AtZ!uPlmsHzF|Q~~&1Z*`-#%tG)7f-pRbjS92OT_8E{lFai4;7uetya23(I;muw!kwY?3|w z8<$6w5KA`|Ov_ zLfrvnZSfpwow6gf^#o~_$`Wrvt%w$HF=5J@E_16nptQ??_4?*9;XrMa5f;TG~V`CNZv)!EmQ9pd?#d a5HQ3FRAJ;PC*W@?>wWMuim$>LY&`%ad{I9D diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 4a39ddee..deff4870 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -14,10 +14,10 @@ public String getName() { public int getPosition() { return position; } + public void move(int distance) { if (distance >= 4) { position++; } } - } diff --git a/src/main/java/GameController.java b/src/main/java/GameController.java index 3722d7b9..2eea99de 100644 --- a/src/main/java/GameController.java +++ b/src/main/java/GameController.java @@ -16,6 +16,7 @@ public void startGame() { int attemptCount = getAttemptCount(); race = new Race(carNames); race.run(attemptCount); + printWinners(); } private String[] getCarNames() { @@ -48,7 +49,9 @@ private int getAttemptCount() { } } - + private void printWinners() { + gameView.displayWinners(race.getWinners()); + } private boolean isValidInput(String[] carNames) { for (String name : carNames) { diff --git a/src/main/java/GameView.java b/src/main/java/GameView.java index 2758b172..455f9ee6 100644 --- a/src/main/java/GameView.java +++ b/src/main/java/GameView.java @@ -1,3 +1,4 @@ +import java.util.List; public class GameView { public void requestCarNamesInput() { @@ -8,6 +9,30 @@ public void requestAttemptCountInput() { System.out.println("시도할 회수는 몇회인가요?"); } + public void requestMoveResult(List cars) { + for (Car car : cars) { + System.out.print(car.getName()+" : "); + for(int i=0; i winners) { + System.out.print("최종 우승자 : "); + for (int i = 0; i < winners.size(); i++) { + System.out.print(winners.get(i)); + if (i != winners.size() - 1) { + System.out.print(", "); + } + } + System.out.println(); + } + public void displayErrorMessage(String message) { System.out.println("[ERROR] " + message); } diff --git a/src/main/java/Race.java b/src/main/java/Race.java index c3cb47e7..c801857e 100644 --- a/src/main/java/Race.java +++ b/src/main/java/Race.java @@ -23,6 +23,7 @@ public void run(int attempts) { for (Car car : cars) { car.move((int) (Math.random() * 10)); } + gameView.requestMoveResult(cars); } } From 325e60e8dfac3383d4b95d1be5ed062e57ba362e Mon Sep 17 00:00:00 2001 From: eunsoni Date: Mon, 10 Jun 2024 05:52:42 +0900 Subject: [PATCH 6/8] [add] Car test --- bin/test/CarTest.class | Bin 0 -> 643 bytes src/test/java/CarTest.java | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 bin/test/CarTest.class create mode 100644 src/test/java/CarTest.java diff --git a/bin/test/CarTest.class b/bin/test/CarTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4cc02d47b85afe482283011cda1b88f3fdd06335 GIT binary patch literal 643 zcmZuuT~8B16g{(SyX~?H6aj%Ms32RKu<^NSLWm|!){h8j;^VYV>NM>x&d&0`d;ueg zKfoVlJhN?r55C+x_v@T<@BIGr^A~_uI1bAR=d+h%(=ZzoNDs1nO_BXeDT_}0i%Ro(ASP{(D+`JLt0k`d@R#O^9K5RjDY*B zdRXDhb*<7npc&yk`omkSeQvGaU?c4Y*Ldi6uhIU2{cioA;ErgAAPyizgOE*Z@zo~n Y0qGq1<{WfE9%2{IaYR~ym{kv*zYv9c^#A|> literal 0 HcmV?d00001 diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java new file mode 100644 index 00000000..39f88a5c --- /dev/null +++ b/src/test/java/CarTest.java @@ -0,0 +1,13 @@ +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class CarTest { + @Test + void testMove() { + Car car = new Car("car1"); + car.move(4); // 조건에 따라 이동 + assertEquals(1, car.getPosition()); + car.move(3); // 이동하지 않음 + assertEquals(1, car.getPosition()); + } +} From 8715bdbeaab6efbeb10e99c1bf7f3dc60a727f68 Mon Sep 17 00:00:00 2001 From: eunsoni Date: Mon, 10 Jun 2024 05:53:07 +0900 Subject: [PATCH 7/8] [add] Race test --- bin/test/RaceTest.class | Bin 0 -> 1653 bytes src/test/java/RaceTest.java | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 bin/test/RaceTest.class create mode 100644 src/test/java/RaceTest.java diff --git a/bin/test/RaceTest.class b/bin/test/RaceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9b8e0ecd5146e8aecbbefcd075030fdfe715c748 GIT binary patch literal 1653 zcmZux+gcM>7+pJ=WMUW;BZ4VVk=iB^G!?Z6f>^{uqeDP~vB91;=@d5&GjuYshZpEO z^tKmX_Xfd!?bqwx_jQ`CJ(CCsH~a9PX8r45d;a?mFra6TkDR$D%YEi zK*shOvRRY9()X^>2%f2yK-%touOwgw{O(HI707Z8)Rt3IEybL9*YyG!D9>fesO|Y1 z#mzQRaNSmc;}_+&Dr(Rr6PZJ(tAVfFjT8onv?2YgDGWuY=@iaIr)wtO;z{F3Ba2bp z$C$uS{;9p+eN?AZsOgaN7RGUb4EP$WkuOK)cPw1QyKG~_2^OSJsF{2rs?iQqvuG;< z>_ZL(6M2D?VfEJ@3zslS{&hbx@O+KnV0O7{XNAisnz+L9`xSa#3-9A9F}co~u(zWmrK4vS=WwY%peXGH&bix?!a>rctsm zi<<&{?0ea3DLto99_2J{Vcx_i0^`TeY`)cU{BW)oZeu~flA-19_ifoEfw}yF8AJ*! z9kmo{nv=U0?%_T$Ka;IW*gh4yMn*aJirjKo?#wYGC0Ra4Php2rqztuC7(DRi=-3lI z0tuVsF>dIvu7BF@X?ysM%-Jwujw$`sKsLTxl-uDeFj1xqwCL|U!4u`Wj^EPys#$oV zg_I_tU9*-=-NKsY*=VVsDb-u}T$A<%0p-h-AUppdsv&Uk2!j0yccrZ1q^n-rZ#egq zey07smv}|T;sV$&e+=NtPaw(F(;SL_)A)Coz1~%<+=AJ_ZOZ>tzb9C#G z?-6|~v?v%IK9ZyfVWMgxYcjy3UeUqmVY7*8?O@!E4l@s>bbT@UL`RR~Xg#K^9>+9( zp;eD^QnPvt+vM4v+`;3;~a>@^>e cars = race.getCars(); + for (Car car : cars) { + assertEquals(true, car.getPosition() <= 5); + } + } + + @Test + void testGetWinners() { + Race race = new Race(new String[]{"car1", "car2", "car3"}); + List winners = race.getWinners(); + assertEquals(3, winners.size()); + } +} From 1654fdf876df7e5a9b580dbb275323f2cc7eafd3 Mon Sep 17 00:00:00 2001 From: eunsoni <135586807+eunsoni@users.noreply.github.com> Date: Mon, 10 Jun 2024 06:03:05 +0900 Subject: [PATCH 8/8] Update README.md --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 491aece1..1501f0ea 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# java-racingcar-precourse \ No newline at end of file +# java-racingcar-precourse +기능구현목록 + +1. 차량이름 입력받기 +2. 차량이름 유효성 검사(사용자가 잘못된 값을 입력할 경우 를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다 시 받는다.) +3. 게임실행 +4. 게임결과출력(매 회차마다 결과출력 및 우승차량 출력)