From 3ee879260da917bd45d07572441ca7bdbad6ef9f Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 09:33:34 +0900 Subject: [PATCH 1/6] =?UTF-8?q?Fix=202026-06-15=5F=EC=BA=A1=EC=8A=90?= =?UTF-8?q?=ED=99=94=20=EB=B0=8F=20=EC=BB=AC=EB=A0=89=EC=85=98=20WizardTes?= =?UTF-8?q?t=20=EB=A7=A4=EC=A7=81=EB=84=98=EB=B2=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/survivalcoding/WizardTest.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/game/src/test/java/com/survivalcoding/WizardTest.java b/game/src/test/java/com/survivalcoding/WizardTest.java index 72dd4af..cd64aaa 100644 --- a/game/src/test/java/com/survivalcoding/WizardTest.java +++ b/game/src/test/java/com/survivalcoding/WizardTest.java @@ -6,6 +6,11 @@ import static org.junit.jupiter.api.Assertions.assertThrows; class WizardTest { + private static final String NULL_NAME = null; + private static final String TWO_NAME = "AB"; + private static final int SETMP = -1; + private static final double SEP_MIN_POW = 0.4; + private static final double SEP_MAX_POW = 100.1; @Test @DisplayName("Wand, Wizard 클래스 테스트") @@ -13,30 +18,31 @@ void Wizard() { Wand wand = new Wand("지팡이", 50); Wizard wizard = new Wizard("아서스", 100, 50, wand); + // Wizard 이름 mp 테스트 assertThrows(IllegalArgumentException.class, () -> { - wizard.setName(null); + wizard.setName(NULL_NAME); }); assertThrows(IllegalArgumentException.class, () -> { - wizard.setName("ab"); + wizard.setName(TWO_NAME); }); assertThrows(IllegalArgumentException.class, () -> { - wizard.setMp(-1); + wizard.setMp(SETMP); }); // Wand 이름, 마력 테스트 assertThrows(IllegalArgumentException.class, () -> { - wand.setName(null); + wand.setName(NULL_NAME); }); assertThrows(IllegalArgumentException.class, () -> { - wand.setName("ab"); + wand.setName(TWO_NAME); }); assertThrows(IllegalArgumentException.class, () -> { - wand.setPower(0.4); + wand.setPower(SEP_MIN_POW); }); assertThrows(IllegalArgumentException.class, () -> { - wand.setPower(100.1); + wand.setPower(SEP_MAX_POW); }); } } \ No newline at end of file From ab6dfcb68dd9c7caa59e5d1cb59bd776aeeb9692 Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 15:45:43 +0900 Subject: [PATCH 2/6] =?UTF-8?q?FEAT=202026-06-16=5F=EC=83=81=EC=86=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4-\354\273\254\353\240\211\354\205\230.md" | 17 ++-- .../2026-06-16-\354\203\201\354\206\215.md" | 92 ++++++++++++++++++ game/game.png | Bin 0 -> 20579 bytes game/game.puml | 39 ++++++++ .../java/com/survivalcoding/GreatWizard.java | 31 ++++++ .../java/com/survivalcoding/PoisonSlime.java | 29 ++++++ .../main/java/com/survivalcoding/Slime.java | 28 ++++++ .../main/java/com/survivalcoding/Wizard.java | 28 +++++- .../com/survivalcoding/GreatWizardTest.java | 48 +++++++++ .../com/survivalcoding/PoisonSlimeTest.java | 38 ++++++++ 10 files changed, 337 insertions(+), 13 deletions(-) create mode 100644 "TIL/sample/2026-06-16-\354\203\201\354\206\215.md" create mode 100644 game/game.png create mode 100644 game/game.puml create mode 100644 game/src/main/java/com/survivalcoding/GreatWizard.java create mode 100644 game/src/main/java/com/survivalcoding/PoisonSlime.java create mode 100644 game/src/main/java/com/survivalcoding/Slime.java create mode 100644 game/src/test/java/com/survivalcoding/GreatWizardTest.java create mode 100644 game/src/test/java/com/survivalcoding/PoisonSlimeTest.java diff --git "a/TIL/sample/2026-06-15-\354\272\241\354\212\220\355\231\224-\354\273\254\353\240\211\354\205\230.md" "b/TIL/sample/2026-06-15-\354\272\241\354\212\220\355\231\224-\354\273\254\353\240\211\354\205\230.md" index c668a35..3971f62 100644 --- "a/TIL/sample/2026-06-15-\354\272\241\354\212\220\355\231\224-\354\273\254\353\240\211\354\205\230.md" +++ "b/TIL/sample/2026-06-15-\354\272\241\354\212\220\355\231\224-\354\273\254\353\240\211\354\205\230.md" @@ -45,14 +45,15 @@ - Map: 키(key), 값(value)의 쌍으로 이루어진 요소를 담는 자료구조, 키의 중복은 허용되지 않는다. -- List의 for문은 일반 for 문과 다르다. - List personLists = new ArrayList<>(); - personLists.add(new PersonList("홍길동", 20)); - personLists.add(new PersonList("한석봉", 25)); +- for 문의 다른 형식 - for (PersonList name : personLists) { - System.out.println(name.getName() + "의 나이는 " + name.getAge() + "살"); - } + List personLists = new ArrayList<>(); + personLists.add(new PersonList("홍길동", 20)); + personLists.add(new PersonList("한석봉", 25)); + + for (PersonList name : personLists) { + System.out.println(name.getName() + "의 나이는 " + name.getAge() + "살"); + } ## 기억할 것 @@ -151,7 +152,7 @@ class ClericTest2 { ## 어려웠던 점 -- List에서 for문을 다르게 작성한다는 것이 헷갈림? +- for문의 같으면서 다른 형식의 헷갈림? - List외에도 Set, Map은 언제 어디서 써야 하나? ## 해결 방법 diff --git "a/TIL/sample/2026-06-16-\354\203\201\354\206\215.md" "b/TIL/sample/2026-06-16-\354\203\201\354\206\215.md" new file mode 100644 index 0000000..f7e6ab3 --- /dev/null +++ "b/TIL/sample/2026-06-16-\354\203\201\354\206\215.md" @@ -0,0 +1,92 @@ +# 2026-06-15 캡슐화-컬렉션 + +## 오늘 배운 내용 + +- 상속: 이전에 만든 클래스와 닮았지만, 일부 다른 클래스 를 만들 필요가 있을 경우가 늘어날 것이다. + - extends 로 상속을 쓴다. + - public class SuperHero extends Hero + - SuperHero가 자식 클래스 이름, Hero가 부모 클래스 + - boolean 같은 경우 private로 하고 getter 만들때 is를 붙이는게 관습이다. + - private boolean isFlying; + - public boolean isFlying(){return isFlying;} + - 다중상속은 Java에서는 금지 + + - final을 쓰면 상속을 막을 수가 있다. + - public final class String 하면 상속이 되지 않는다. + + - 상속을 받은 생성자는 부모 생성자부터 호출 후 자식 생성자를 호출한다. + - 부모 클래스에 생성자가 없다면 자식 클래스에서 에러가 뜬다. + - 상속을 받으면 반드시 부모(super) 클래스의 생성자를 반드시 호출해야 된다. + - 해결방법 + public SuperHero(String name, int hp){super(name,hp);} + - 단, 부모 클래스에 생성자가 있다면 에러가 나지는 않는다. + + - 부모 클래스(위로(super))로 갈수록 추상적인 것으로 일반화가 되고, 자식 클래스 일 수록 구체화 된다. + + +- 오버라이드(Override) + - 부모 클래스에 있는 메서드를 자식 클래스에서 재정의 하는 것 + - 상속 받은 메서드를 재정의 + + - 메서드도 부모 클래스에 final 이 있다면 상속을 막을 수 있다. + - public final void slip() + - public void attack() { super.attack(); << 상속 받은 것. + + +- 어노테이션 (주석) + - @Override 같은 것들 + +## 기억할 것 + +- 상속 받은 메서드도 재정의를 할 수 있다. +- 그 외 오늘 배운 내용을 메모 한 것을 기억해야 한다. + +========= + +## 실습 코드 + +```java +package com.survivalcoding; + +public class GreatWizard extends Wizard { + private int maxHp = 300; + + GreatWizard(String name, int hp, int mp) { + super(name, hp, mp); + setMp(150); + } + + @Override + void heal() { + if (getMp() < 5) { + System.out.println("마나가 부족합니다."); + } else { + setMp(getMp() - 5); + setHp(getHp() + 25); + System.out.println("힐을 시전했습니다. " + getName() + " HP : " + getHp()); + } + } + + void superHeal() { + if (getMp() < 50) { + System.out.println("마나가 부족합니다."); + } else { + setMp(getMp() - 50); + setHp(maxHp); + System.out.println("슈퍼 힐을 시전했습니다. " + getName() + " HP : " + getHp()); + } + } +} +``` + +## 어려웠던 점 + +- 어렵다기보다 헷갈린 점인데, 상속 받은 후에 super 클래스에서 private 면 get, set을 써야한다는 점 + +## 해결 방법 + +- 연습 말고는 없음 + +## 내일 더 공부할 것 + +- 부모,자식 클래스를 만들어서 여러 번 해보는 것 diff --git a/game/game.png b/game/game.png new file mode 100644 index 0000000000000000000000000000000000000000..0fcfcf761863904bd30f8a84eaf708ec0089ba6a GIT binary patch literal 20579 zcmd42Q(z`r*EJg3?l>LWwr$&a;^gVrR;QD6l8$ZL9ox2T+sVn^@Be<^e{s(JS$C@z zYtC9#HOCk;LP1OyBS0scf`k~XfE1#H^;K}O(8H84BUEs3aPYqqe2dh;|D{b%PEJDgosx-)I9ih|Mwjfj zE;ThZJu3qvD-$C(GyNYkwy(m=&dJBcF2unh!o`#TU`w(Q6cpqW;ujPW;*;VRkQI`Y zloXX0lT?%vSCy1hl9H8`l~$6G){<2;Qu!(xTAC`RYU%(jO)G6fLqjbaT|--A1E7() zxw)Bxg_#?`+|AO|-NM4%%A~^CqRQRM%F52k-oe??%Foup8|V=F!@9=Xp+3OztN8qI z^K*9$b8?At|4|?8+7#~L;o%wJ<@LwcCo#Y`Il#9yz^f%HBqYQ?DJUR0BqSv~Bqt)c zBRH`APiSXqSXX3tcz8rwWK3pkL}659aZFTcY(!T^;#bK@iZ4$}s7y|3N{{O+%*@Qp zD$hx)&djRKN&TCd(UF_gm6tqNo-$OCIZ~UOo10ypTU1q?-I1TuTbMskQaDtaJJwh* z-cnIfQBqf0I$l*aSzS8WQ88UxHq}{EQ`6Ye*z~u#daS;BrlGB^t*fhRh?;41baZiX zabsg+XJ_Z&kW;&W=tzjEs)9#`exGcD4+r4tA~+BSc@1fq<2omh*qFgMfa`-HIoCC<^8pePz0yLhrB7^d#+8%R-UtVv#z6S)&Xq{N$ z|F*soA{H(FR;_YH2D?D{5?~H*wh-I^=lvAXRgP$mE5Wx2_TZRR$l-xqFD^+>?M076 zC=FKl_b6ml(l~NdMLuw72rHSDVy9F_2=$#V*EVUOCQUo>O)fv5zND13i2e=&IaaV9 zmbb`txk|m8T~`tctDNYi9VVZSho#EYsi!=|?N%7+pfMjJG1KHY;&T<<`iSw4{}WpQ z6EGMMz4rs00ggdvDOXY;<&*!6Z#CN`L{oKf+M{7jeBh#!Za`=EfWH0~?r$Cf@)o~K zuZU)Qy!`_so5(t02}K+pGFj7a=sZ`CKUAv+Rv*>louIr_Q<}FI4eTHwa?8?U!fNg- z=RWY>=;|GxRkIdxg-U^ZGNXCg9!ppy7$x_R8k)tlZ)I-%gY9MIwN0K0>IR8n{S}y6 zbOqnPH`^zL(Vc;5pfHrHwFPFIh+AQislm7ASdu7_V8v0e8b4*RR>{rO%M%Tg-FXYj zQ?NQ6jBx{e`C~S{Cm+Qsz`z1g0#$fHA@mXYc3?!{O@I(NkTqO^Q-NCe!j{5x(Zu!P zs7;zk?4=ohqz37M)_3xDtwZE<{cZm^R?#@8p_DJ?u1 zV-m7OZCPhs>k8(`$;5nahNj&E2oi~}o60Mywma*8^|{<}LqJmWpM#<(e7V+gGhK@) zaTmnyVt1>ZKnTIW@cje7P=KrT?8s4G;;@?mD-z>)G z;};(rlXCVo&;cPi7z%yV1|4eJl9TX#fEzY!45dEMv3OTS+~Ly5f_KBa4z+WKg_2fe z&FMr6tE-~H&;st&JSj^8c5}YzJB-l0r0+}hHcPc)P zGbp3M?uO?<@e31f)s9YuA~{ObMQ(LLm*C&7&_kY?VYM|#hTzF(iAB%TQR<_ql#eYO z8h=Jqx8DnzoNid|BP?#8uWaJ!bVi#}_unCCVpNzAqR=>~KYqjpd>Ju-gX>hQX!Uj2Of9K=i*X}HqYY02qWbAAO788{z#6$(hsVN{w2 zNA-jD?e7(5K+FT5f3HwmViF{1!jeXk`q%xga7EJ*m)uvELgr5=?ht~taaJ=3`8w!$ z)50E@E$Zx9s=So3NO>!;;Rr)mNr{E7D&Gk;<}dK2C4D>J@p&`8s(3xRwIN!1X1%U^B!rf=OtI!x1!=vM9FS5qW4gK_5dhYotLIc-^aH|&Nx=8(blmL7; z1YLZbyq3_XTYySK^kvvK?9l_RsrL{byplUh^UC;N(;&vbD=Gsczq>VP4=2W6p0{QU)P94}gp(-=WDB#o zZ+7rZl$Q@;msD-EItcbWPNs0dcd*G_M_ft8mz|F6whb6p#WK)bt$-==pn^AlmZ-d2 z`yKVt9S>}#ZxF;&?88ei@OIsy`1;**xsvEjHaj-u%%F);bd%=}y9P;WK=e|Jb9m@0Ph_~v67VmLnk4K|Jav=!)1V^&47V^r&ab!Z&S+StnNe4Xc3Y7xN%CZml zHOO?&m{)?=)_x+U%z(~yPY-}+I&N5QhCIZJWb7rDKI)!k%xT@0;ehe-th9|r+ zN6@L|lI%VmvN-w>eC1s}MR=+81ZwD?-bNXfA%xkwV6JH|{4^WwC4aA@wpdmYBsdPU z&_!SBA66Af-=n}P(puu|cq9V!0Si<4rsiupqmM>sgMtKD}x8I1FOiJRu1zIX77NRQAj-|ufgQW5&5=0zEJal)9PYU7TxFM74Y1S%kR#-qX-Zza z44v&# zO~+aT8fb~p<_vkLs&-aOIp9!Se@&-H)upC`AU!@RY~!o|K++Y8h6`O6V85f%*GyEo za~%-z#*p7$zO9M-Oja;V+i@RDtuK8-vRn{b((2p~!s6eq1$~m#m#!gzYu+g{=xLRj z12iRt@Ptq-EE^Jg@SXbCh(|!w(5w|5<^nDHlB|m|iEpM#`=8~M5>CY0&YYSC78odq zuf)B)Ob(}uDq~hkD8u>c`*<`18$D&Clh1*TsYUY&K8qlOO3duoRnrhuhHnL39k|G>l1uE(eRMXf|<+|hTa2*#Wn}0eDCTDp~ixf2Z|7dh`Z^7 zd%v;<*Y2%`LdkiK1^xNliIge6s_j@zUD#&Yg`M zAb$T}$6=5Jlub#K`7E$3baTE@kL7q&ef<~7QnmuOGzP7PT(mwVUpV?`CqI|)3M}(zLs+tLqk z=)1;tkeEsT!g=G$&SQQf9@vVWCvJX*MMxT9%pm-T8JYHbz3P?a?P#MNQS*KtJE;4n zN%Q0B;drTub5Kltvkce{sA_+nCv8REWPjZ#t5Z~aw;6Q=*Zf;_{XW9Vx$Rh}A~|2U z>T()m0kXGg@^TQ@Z~WKn8~>q!_4aa_-t%w(qt9HoZDV|F%KCIIISfW+rf$8^K2?o8KE}VnIFqlw(?9dnt)RtF;|_TnLeT_>3Pl7= z`f9?JFt715)IkdhB~9n7NYqVMH;20n`Tl0mh{y)TkHFLI$lESzmrXROdk&|)urdUSgdo>V3j}!}zjroB z1<0Z>>1Zjbpt+$2xz`)VnOOXJ3Rbu79rN8MK04?<&l=BW@uUUUrj;$O{}Y!avVUeR z?H0_-qG!K(*bo4Irl;3QhP1Sd{HubVenEB>#av1}Sjw$WbB$cc4u={C+!=%u)__B| z{;Uw+Xka3BoK8!=7^{($BVKfb4LL`nX%BfY&6Iih53_ku8~G90)6Z6jVnkBNJYGvj z0&!WLLtm~gm&++1dj1zSJ%e_&R zYa=J_ItqtgvWB<_ME(3pzmM#$4S2D*yVno=rwOK>B)>v_y_txqT9Pw7Mtrc>ruvWT zGQ@)eQCt%Q1WrKhgb#NY4)}r480~l}9lyqXek9=$MccS9GK17R*#I|hq)BDI~k zhfZt|#jmHHS4m)MB1=yMn{j32R7lVs=*Et5y6o6Z&#SHz=IWsd&~vs`?vmScYXsTR zO3`g$^<|4j(Q9k6k&Qk^fjpHd2i^?^oiM>~;SBBy_f&5Uwzi5v59mY!{aTjT(Os#` zOZ1(`2wvKZ4Ta9Vq|+VekgraUYiP8?kz>LHOT4ImQJ`lcI^>N>HYU~k6)%GTDFfw*@22B)5FCY3*sPu+()Q%8n=05EC*=_j+KZK7zLIiWCKKUafJ+=eIqO zxaf%yH>SK>>H)4;@gAsk)lpw$kII;1cb?NOu8McU`^7o55UWLGJ;S!@u1?Cxw_9`t z1*A?Val89NV8imo{cr^tZYX}g!cXJE9Jh^IhPrG7Yj-5>exwiRrc1b=@80tf@$LD` zxcTAKCGIaEBE|%WM!Kx6GFx(4QxB&iD76e%?cAj;LRU{@kot)~Ju>vbkJn5v*R7S6 z{!D=i%CzA~4F*0t%jG~(WM;y`K3fB1WPZRON+jh~y|*(H4gbk?6=`K41Wo?cbmW)G zfR(&2ew3#Ri}05CxAfjC78HI!=%VVWNn}o~FvW-_n|%K`4c`*O`K<(svMYj4`ckCC zibMhA$MUr?*1QFS5j_Qb*tcUObVl=S7VWA=5^f0kJlMK)`{lU&CK2Z)9KA?hX_owxS6ctsQ%5Qu>J`2=_{MC@) z`ILC&wDbewyGkYOcPwd=6@pZH)8ww)2=#Jl4 z)cV{rNY{80a-goB;JD$8xns0MVF}29-c-*9R*wo1R>O0QdT{!OV+Vd%XonzP#UEi| zc^#sEXM0ZdVfgNp={c1agQUMhr2L-Pao{soS96;o{1)oL~$fjv>FHU*5{3VM})F|ZbN}NTK$Lp;_{aUCf{!tO`YBL4Cf#t=shuj3` z4c})BTHtYhEIk97cZ_i~(qDiOp6!qW znjQEOXOE10!}dR@Vnj4n>b-T4uUd=$# ztDp&8Sfr2lmj_1QY1JpYCng4JT>Bya+rn%6wz1Wcsu%~SPQdzIq(HSryv-zblQ^%y zQQUU?|EVC!8%@DacS;H`%9Y9An#cwxYuQfHY_;)t?!F*-p129 z-Y%$yffP-r^WTR)^3m}s7sa@RU|9ps4#?6X9@=hH2uy%x^o5uGexwL5;J-nX#T>%$ z_5nV1{=%7j9X@?w3uhDmjd~!Ik%t2>>idQS#{N*Y;h9a5t6u?S&vz5u@@eMR6gBGc zyoOOfKP8MW5y!)Tuj~i?a^j`5R5NIa{=G895%iQPGX7@v#;tvP|0&~vx&jv4G$=bjOOGq}vn2rJ@CBZ?%yZlG zaDqTHHS{#oUq|#1^T?I(979fCbRqdAq!T6#e~ao#;pzN{Gl5ry;^@L_(lc%`*ogv) z(IH8ct@Y?An8xVIb^AW~U7lzMs_A{ngvuu?Wg zmhO6w93vymwthA}%J50!GDBPup5gIzgt`K%hhuriX@J@GnS_8n_HBhbr0;{}thw?H@^tRevN^VY5I0&m|Uc*BlK*g z0QZwZEK;=g4cd+7raqF>d8mVXd)R=;tww1EO-0STz^WKYZf6$G2CTp0Z>4-sKZ@!r zwU;gF{SHdt)}mE%ef4J9w=1!d^&8ihe>i(H$+JQo)|!c2P4(?4d>F3;M)oK=V1^4Q zmm~IWPX`%|BWWY#(i=GVLW;hnn~lS?4uk%R@RQ$T(biJ@;VtH<|3+LI0b|cff_cs2 zI$*1OXRm^kCr5694^q5vs-#DOpWxnJuD|W*k4Pk;ZDGd+zBG9$&1VpT8hDn2jPkOo zV_>bA*6DIl3k{}M?YtY=eYXDkup3=5eCAcDbtK|mCPdfrS;#UaB>%!%OBh_kK(2@p zOpB3mo`-BayyMU_ zaUUOFDJn2$XqhO|3_3ps=AvVL^etkG16>8xVO>V5qOSA%rzXG-itBfZdY^IvslPtV zu*(8khC4sGm1g;zqJ9_;f~+4yK=14AB0j;iQX;2{Oq-2wOlDe*#{rhSn%~=e>Oevb z;_PD)1YteFRYS9U3b?V6ZA$e-ViFugZI}0)Zmq)gkucezQyh+1THD6dRTxC2k)c9M z{r(w>IJtKg1l<;EyA)??->>9ZR$@sp2IkpA4F= zM*%4dMG!Gml%A9;-F@2f^_da38u?qwG1LDBrBvosSs9OJ#;WWr-e)0MlpA5FA-^|3 zZ+=dMb{v(tWmNALfOY5H808G)K{FFlNh9RS8#rX6`LpNFFs#!Dz8VH z>o;@GtRKS>RfNdDL!EH`vjd(==m&ll>7M8>lZ2Z0f@O#xiyWc`S;jBw{w+(g2%cKy zhi+cXIw$~H_zPn%OVV$^RvC(*Fj+EJ<(aR;Dp$TNv{3ph6{3k|LQui zs%f@Yif4#(|JjHG!FTBCzWZk-J9YHKj1^zC8-9_K4Yj)r7e^+dF?A+;s?k~lPn1pp z6X-O^m4o}lt-Nmm(}EV1j(+qKm?g86U;-*((m)}MZbV`-usR~W){BR}G&SAGo5ERw zcJvf`PDCyGA8b0i*3rFH(-p-xxT^be{eR0YLS&gSxRBjLr%kVBBDs=;@25B+59{o> zt1*7MNMqMK>dPv-;$pTB^M)BXVerCX!UPA&L6-h5#+2cQ`H!=YldCKs0xhL>okG$RrBbzS(qvVCa?5}W87u`H}Ikf>`Kq9$62jOcB* zz9PHMPh9fv)|yX*82v8h$Uc^8#B}e$i(Hdl+W4%yF7zKy5QzqTS{tKbZyNNK1>}g! zNm$bvapSHYac$}IxZMHk992!uZhki9Q(OQ&^Up%7d)h!eB`Jgr-b+R{g|JCT9X~O@ z&7i<$dnLX*>?Aqe@2=mpGd1i@tE&jm$6v*UCjf+jhJTS1Se{6^>k6h|6fn9&VGXA9 zPW9v94Zl~y8_T~@NnQ1fGWg;v7jggPjdH03a=kV<3s^iId{+Er-13Vlo~~#o+Wqj5 zlrtg;LD;}GYP0Kqp=^!p9rEW;!ByD+;iG$l!4tYoB}%>qXQ(VKGvE1g#A8 z%X**k#U_03P3?5rv^&{!SP!{9PMf0i>`sa@v}>mf)xK)+k?p-QotS>$UZlJ!zvJ)y zMfLV9iryt~S?;3R>3eo|qIfD%LF0B_+LpkW;FGAx*yhFoF4rG*fP67`btoC$bgwks z`xP~%7+eZXaiHq;-Zci>!v}8X_|cjYBLp`Y9NeaKxWN4>nx?Hv6KAe-e@Q*_mS~7Q zO7gWIfY*6rj+{7?PZb%7{UkP6d0b}e7DT>ukTi5h=-9i^t8Uk$X}(g#nAJOmBEb%H z$Vh0vI(l23vEv<`uK0NU7Fbw3==;=>Yw{SRj<3lMTS}=U1h`V5UVi>%D|RCr`8$1i za8NnhP*`+*ZH#SN5c!)E>cBMuRAhfBu1R-@A~?ISa}<1sOAIz)Mv}v-cC>vDD3ave z0e4s69{t_){J_B7HrH9=<+v9c{{-Oo`^qDjaMsn;KN<$sy$es6F7LzTjIRPEWBHGKICijMGr&-_*?rUIQG)mn~RC!OMjij-7rAbS92;py)MIJ!E7|6-rd1}|>5$uT+a82;2UZ#(|ZkZjj4*6O| z)og9s-o>Ubo7x!8wLF*4bn5!hUS>URwWzbYTzJ!eP6CqOY9~^dl|7u6;bTZP8|(1b z={@{uN0sl}KFI2Dwg}uMZunk6Eiz1rc011DO{=_X^TZqsXxn~lMI&5p-8R(S_$6Xk zvHHpglDy~a97^&OY`qaL5gLVb>ebYy?Il^{QNP7zEE{aNbPHaBj(R9?0R4jYLLUFx z0l5FB)t7#qQ^Ox$aonW<3hH_3CSd1{lgR&4k+zc z22JN|l1&a}FS9#iyt$R;NKE|2G-we0yx(3{qamcY9gs34#2*`)_w%5;=GSaez|-Gc zuiafRaZz3%FrbbE%_P(($ZVv8x&L4k)7$l3?p0Ro9>M+mkE)o z+tBdC@r|ww&=qu0?6oi_K_~FQT&ScyId}1ZKU?2~2ki+mZRx$V-<a6mPh=n}%Ged>^v>PcG9naqqw5b$=MEg6s0Ebv;muep8hw-_ltDxLn8@ID4;8!B zfUvw;VKbr?+weZ4#0RTcfT;499TLQB zrP~YTFDKD&UeDoat#%zLhj_NHM@arn6G&C=r#FI4(K(9Pn_<}UYd{{{PLwde%q2JD zNo+Uqi0@cNG#%a+x68k1F}ay9kvc*9z2#Po38IHY23;h1u+u1=(S6CzaSL2^_^y0L z8!YaGj^gR7C!7E+^>X90(FBnQ)u!9uo%^(F$fDzMwkJ$dQ>Kkj#OW+kB9Zj&$-Fyk zW?FlpRq{qS%ajRzma=YZdi-te;#njo3}!^TH|)m)`GM<*_dNN;m3@H~gp?Douxf@1 z|25b?nvx&Qv+3_|+<7J&4WH9y_c0y^6zNFxCiBa7BE4kpvTeKJ&=qw9RICW>I4tY4LhRMlJ(2A0in;a#cn<|36&6g~k&Wf}xlIZdR2cnt zVhnLTG1j8hQ8BS3c7PeMDR|lo<&&u_!(XH8j9}wh>MuyXuijdLOhfz(3y;1~UfuM& zK!YmEx8IUT?>#nzcId%b{!qfLD9rE8`X$Ew85EX`-}`rZl!St^^}{hDcOlv46d;5t ziB;(A7lWD7;>4yD#KQYS^8Ot}^7Rn{!-Y5(3I2-2;Ve<=;bV<~#?;xuQw(CE{UHVa zcKU{eo%nAju`eF`-%hB;!0rEZ3hp0v@{z8?eGZ3+yhWQ*;$?;)5F^vlOa9MfMnD5F zTx-hE>>!v4y-Ee~=Kl;g0&dg%yM{>F*B2$=f5bokH#UVDjP?Je5&HjCH}O;2a6N&1 zS6oQBr7~AI_cgSlFIf_Ph0dDxkOps*G3051uQeq}?X-27wKNP_YGqLHEFXZ>PBNfmri%I%O2e=W*|ve~tk>P)US7vh1Cf?6cOZDvKdyGxrw3Itfhp zC_B0zh^M&04flC8KME7JiNhYtcA*bd%4dC{hK4E!)Sctd-cy}f1N>sd! z0x`cRDoQ#@ZC$K?-b;{977pR5{GPI@r|r4~yg$_c6qvk3d>TXVdOI0+DA!74TipMA zF@a~_V_MO;|A6qxY9{4jo&ZF`Owy-IpU6QN`s9~* z`t6x-bI&8VN++(`JBAtIhya5Qof@HDIVdwsmwR^UEy&DJ>#yn{IIP8YGzXy0;x!&W zG~@jrKiqGjp}@zkM%5u6YBRq=QxNJJr50hp8AE7`i;d_nLVJ(R{bmI&qvdK4M6E9( zkaJdcsWgyAb8z>F%)7)DOw5usxB?D~^Q;-wK}CL*0g*Mmvbk?jMX+$>5PG`RDIk~3 zCL*9n`5kb6tdr#cpAssVF9>7Mbi%uTJ6Hen9%(_lhB9-rAgt1?`|f1E ztT@Dcbc<$61LtDUkU99O|K%^+z!rQ4l=Q)FZ)e6U`hD z_|m%sS)QhB+~Lgr5&C*vgN_^0y4YNdaKE)fG>PGwrOU2*II$?Quy%?cZ%uG_&Z{67 zvYmw_Tx9=lfk3oJtg0L!=MsVwe2K15o+V6qy85SfA}|ssooFiQNq(+WqsM3YdA|0% zqR898iM{f@ol`QpU4%Llchri?HxJV_FRdb_fS512Oy|g3ZDYmyH}Rk429TV+xvjx( zGfjd!cC5U!K2j;TQHz<2P;66lZ3_DF>{0J^yVwLTnTww+Dgfrvo}u(+`%&8nu?k#WpaH8Mdm6|to*oinSZO@v zPBd<3e;HMO@!v-!DX0y;39x)>iz3-)s7`|tCg>O>Vh2zZEsWvze#yN)!+6O`CMB%H z$o7_w?@m4jJ}h=8^crU8T#GrpPvr9vHau}&UK+9?{9dhdQL4qMVXZSyw%+VG(`LFnD-lTXd+a;1U3*PQ$557c$y|;IH^*U5c?#RU3BUM}c zL&SHnawPK0fJbFrkB>1Xejzrvoj1*@%zE#>N}!)0#{AF!Bg2X?1j|)IkX`Ijin^C8 z#cF6`XX3)Sv?i;!2U=NKCji}hN@si+;p8f^Y&*LuY*wT)ZD-%(9IBxRnhkQ|Hwc&^ zUG=;N?(AiDhasVkhvMw9(KG-Gp~AZHrqrIyexPt)Fys2-OrB!z{=961Yb=m}?Y9QI z3b9I&AC&Pc%4bEk0;y?T!0A&a@G9xlLV1i1y)iW-#=JZFvX)O0OZgxnMwPLRI}O)c zw~)`)_J8SbuZW>$Bprb-wg=Aar2fZ2Y8($@;&=b2h~4ZLZMZ06nwoxcJ05o5@B7?= zzs@|HMXYZ1DP}{Ff0DK4A_$poIE#RjGFJvAB7ceT0yDu}cnBG2kPJ>Lm!z?wGVqgv zJG}hD`~*EL{XqGfV!VSNtMttAq3krURI4>_!f!OXVu0oYE>r*b?YA}aj{GGdWoJJ@ z%V*R;pGaMem5|J*K3132h5+7w1P{4ff!kE>1W|}z3M$TaEfYOxMxs7&eCp=g{OWgh zTVKHG0%zw7_6GMotsu$edlw|fEySDCGRG9o-3Tep|7amn4QRjioP?}0C=R#7=DiNJ zsQA1|{w7J=jw##E_Nd%p2 zqq;t%oOzkpJG9!kPMoh41%8&JU|6mEe$|#YP<#BbS@xq`f<_UmenYY?<~3lb`NG>d z7`)t_wZ}JeUB+nk1k+vh_xfAfD}fi++e8ShU{?WuMK_~yF>?$A`64O;vdasP@d%lw zKxqp0^Ph!B>;gLmG4y(&nhS*b$y7={n$Pm(`D?M{hs1K6M*pC9b=gg$MUe8DHsv41 zEY06ygyiPztkljp?B~S4yYLuA+F%f$iOp^~|CQ4~TKW>+C<;`wy2gX!pt}w`am1$x zZ!&-k6lPN}eWB~9kK9*fO9k$5OrKeV>rp@7JP(BOXXt zvxr{EB1Pb}7H6};A_zwTyL9zHq|u81iv^akeEjHWH=qV|sr~seAw!Vc@~;8POJBmi(AJqg>G7IBhJy{}&n!uwtZ^by zWD2`K;Z_4^l>b^W^2i>CTCXrQUBMNku*Q9xp@$|7_YSW2vX|1}ZG|W$t;gcjKR-h& zM%oD^{)ch??_WI&WoHyqX@X{3`n~b@tNN zAH$IV_iQhQB!t{>dk)X?1LnI9;AB;<%`tq`R`>xY0isK5j4y4}zDF2`*M@_&_@RuN zO-ar5g+Xmq`&stvh{|S{3va~@E^=aL6oR4Ca@D2fEC0y4LT-UhiU3=#eqe5~dbo`8 zK&XELLvp>R`S1QHKBTD0hA&l`*Q?mbLG!ZnI`40z_BOTGh*(biIXYPyX?W#~0jzRI zYy|Thy3KIxjDAL^$IijcNW+2k{<(9eUzAvj1>2)@VIm_MzkSRHzk{D?HN%`=%6UN1 zy>3rMn55FKGldu$HX0dDDE_c1osvg${8vnyW$28x9liP#^k#FyT21>d_F=Ot+ zO+~_V&;N=}&2$vwhZ*Df&W-5)eJDzDgZVKF!4U98gK`J5Pu|zusVf>Zu!Ht|YK>bo>mFkebjCg9E^S$P-V-2>n93@&f+;)(6Lx*(eUa?&l zrL(Sz~SkUN1b?Gzl2uL)!-Nf`vJJ7i0(-kd#yIb8M`FqfI(#KK% zu;X1IGqYcax%Sr>2uyVE;;rE0*g_2v_aYMGlSY>4iyw6aw_P zR*VmCWu%X!)%zFJ`<;6F?7I)#I*O+0AF*a-OCvvL1Y`F4vT5Q|m!MrQoWjS2V=VIa zeU_L5+?~lR>1ks>^`8@1v=GvH*Kd8+dBWdRerm#%{93F8YK6Ku1GgkWD0a_T)JQNR z<=&?iZ+Rp_`w{G6qDK8E09YcA8k-{{B{zZgzyRXRC!m9GvjSt0k!%IK1@Qg^<6-c7JJn~G zv7hSyYdVXtTKE^lrWG^xzc> z&R5&z7ETSEoW(@7H>3&_I9q=++v789%iJUcs>mEy(IlrsUgUNhYUHhEIp^D-eS+=7 zmZ0w@h|ugNyjf&GrIcKbHYWM8lU$5K=MxElzNKJcMmv~*H#Rp(AO{CrEsVZRSn-*d zOliTsBWovFFU{YgXXiFc#rbu86#h>>O}f&0o0a&3233+wC8YY;=}t0r@ILUb;=%7_5|or|Q3Z z4DWeDFsTvrQ2)L|nq}3MwM)Z!xBZY3Z_C{*pUpB<5gFVK=Yp^W-n(U2bwFcECh98n zXTS&5JEGyz8x;e{o}m#cIx3O-RDuLYUGK1a>Z;ZfA%CDar}P4OyYe>u(|Q>{5hBmC z2&kpey-0UMn4^wjN+k$BAljc|=#E@$l4>4Qi}YkN?2B=A;HSz=YFXBo49Q2>j3b3} zO32tanw8;GQ4Kw{(~H3?VW|6QU&eWSVuPj_6fr1ZmUcX|@L(J(o2q9Iab8lRJ(vCa zo3`GXN}d%Ih?3$>X;H9K zXQ<-`fo;1ozqF=K4;FmT9p+m9@T@zwAQj{lx%F?)w#VK?dO@#Gcx9mN+#^vpst0b$ z%|pA46B|XozS~Sa>dosJ1A2-UAjBuTVJ20&R@hI!?DFd$78srF?SK`$a~TM;M6~F1QF2~%@U!$3=tjSGXmV~dfw1HDI(PR2{}K-96*OU-Wr2kDkF~>TN3{aQ8%%kR&P#_5&gvw z4Y>7h0^h&TS8yDA$L1Q7kBcE?_ei%lY7DBdFd-&khUiR5ojhI<-r9)G{9=S-5LVv^ zOIO7@68~XY zsMbX9bvM(=@vv4ae*7i+#{!A-6b}M9_pEy)4%timBq(SBhU*CbN6iHJhp_}jy(8Cy zV{q6AlBaPnM)jV#NASFAt4_G!M_%fU9I{ctC*{!JTNNlI#r#}wGS|CiRZ8BJzoQ;} znmPCp*Vu?~g9QsP%Nc>F&uNkV|`^=9X-=$Ey}^tW%|di7f$KVIAGDCNKpLW zg1q3aon(Ixd%aVVbWpLNUTNB0HhGvsA8g;rVMs!k)^6ZN(}B(q!=bZui46lr7T&_K z{7<`fh=9(YkORYzSk18M@|C^UImm~cFsGuch#x}%`f4afQWg?cHcsosn5w$_CCgn~ zLq#6Qo2d?ko)UQ?BFTZ8JAAYAU%I~b!=vrI;Bx=m3mBTk-MgYUg^65~xDMoI#IWFR zPhYuEGOerwh--iIIcrxZcz=DIvE{$dq2nWu}Abx_q*o<-(lp4 zQPrM#@!NK9+3u!hyC%27{7a{P@e0Uo>9&ho*rQjCZLNPIZtUy^r2vz$qEnJci)3 zW&hhEI#RX|)@c?L@&FI2Zkc>=a8g;50S5rUr{HxjtQurqI8Y%OAd^$D&xR*&I@Un zUWYu$vO^_5F?D&JQcPxSApoy|&OixN5Xef4M|aL1j|Bc@U|&*()h?&1E-IfMI2N0P z#H^jQ-H#+lV%n{@#I?mvcV&{`1$Hm-ufsY=5eSn1fl6Ax#Wy1WiA*@O;f$IL5ctwL zhIXdtQz^o_5nWkp=1~fbJ{kLO_F}F#_>F`c+=AA<_MRQ}1p98KdUbj=9ve3JwdzCL zaI`#l19k7*XkCded=@ycmX;|?KN`%N1N5)VcQth{Bc4|&i9Xuy&mR8zKwti>o#eGy zpNsjtY*qo@WfgJ0=T08SDe7fi6836#MwZf?Y?gJxV);CK>>B2U5eL28V68@PW3IP) z%zQ5t`E}fT$v8-PmeO|LLA8{8e?IQ>(YQ2!f;9Av1o|8AUo)J>4f4~O~H!2W{qMGI@K40Q2C`IC>`U*GZV@W*Y%SUQmTYB{lH z#_9J(#HHip%QmOb>=S;WY+{<>X=eS^nSABjp0Bq@WlMlAKMh>U67xBT_;5p=dV>$2 zy*?4*t9(f`tto%SLA7Ldu6xbCCG&WD#EHt-md`7cw}{b>48C!(ZZ31eJ4rYDY>D9y zH-;qx2Fx9)$&mZjnLqFY5o3BXh1(YA+dDDZ0~ic(mox<;zhL9t38oC)1Oi?kO5~5) zq#oaKDf@`;DhiHIqAx5d7eY@tiwGsxTfj?dW3RIbv?jrxw)lXab;?#aV|_3=LEj3@ zSIT_E!2bJaRO)-PIPy4lPHW;iJ$Ebl37)$fNs~TFwNZ7r^V<5A90(|h8q6OT5PI+G zB>8`;IP-5P*glMpeT!^k%hKx2JA*Km ztXawugY2F%_IK*(J@0w{fcxA(e9!m3&$+J8b#Z!OOMrF0>6w7s*Hq$~Wpr_6$+b>* zVA3v;N~-lN^XP!C*vr&vjxXn4_Vbd8z2uWkewr(A+s=WwZfu|@TN~_|1Kr7b+pk`I z3JhWm$0pa?va&_2VVVw3WHwX`4GnYREqBfFcQt>nxs}D$3+i(Vyz4ucZ3c5uqwv*G zd&at zFz&qg?`2Z@vKK2eJ=$C>NBTHdn*0bkk%;>G6VAyCQuFuN3pVVK+r`m5T~Bvn4vTHK zVmt1$1_Z(d_LgK3u;uur$M@SWo|$|tU+ht-Ofo)5=IqHHjn)p|{&e|}Wx4Lejm>t2 zXXM>t@XQpF9{8*RX}f<=U9wm;fB#9@D3h4`$9?i_2Jm=4W`0L-Z=*vm=jky5)Wg1B zh5sk!*lHkPbplgYSCR5yUrz_Bmpckz$=+ZpjSF()K>vb0sY$2x*gvr<2)l|31=-2- zNnd_B=cea{c*K9`g}tMDO*VfA3$}C&*O$?Hx>0VPaNhM2lLjkPCjonrE4EY%7-IHf zv#!$pAIPgr|8ITVN7QS>FKn8(xQYz!ch&`PH(;5gH%_aXQM&4cMTgo*ie zE@|9#@BYKu<+8HgO%vlrzVT78$8(fC>nTYcng1{aPTZ}@NlvDOwFtdixSj78Na|ya zQ4v!O=hr43J4Y}duL;3f9o=i9jHZUw^uiRnjv*Giuq5CFAtx4RQj_1CM(e@xFMZR< z%oD4Zz|yIb&U_ke&|b5wzSf!Hqhv{&*dkY~k2U$u?p*;AvttpPam->z)E_*I7lf^B zB!7ya*I5ltH>z6J7;Tu*u6aISO^89A+HRG-Rz2TYyVf*imBvZrCrMFaroOMs-+NIn z3uGhVLR#0n8i zZHAS6K5h4pU&tOb$H=d@Ghq3L4223gaX(_=O2Ls@#%%SxSI^TH?V1Ml>zxgiO6W3w zs5hYZmx~tterXd~u_Fe+ApJ(o^R(PqHVLSs7nG&M{?rID*L^t`k;k-V*LYp%0L+Oj zvb&-()3nfGyS&w5MexL5*|V22$gap&R(y^H8)!g=oO_LDK9LFK5o`k5TpKxA=u`ZL zFWXPt`(qdRq1*t!QuKT3k$)EdKM(tgCis|%;*u0 zmev_>xYvKH4{1&66EwKgybv z&A2)jsc}-iHuQVLeh6e;6(}{Wi|pU;RB!TD94u7+gsH(sHb%rEA4rgEMoJo3Ci*A# zrmTR1{9nk>!(m0+3Vfy`QM;&jVj42J{%=j{;LK}^sW%@B=K0r-xt-n$6d1Uq8-Y!e zRzDCOebd#IQ4(X3+VK8!R`_CRhYZwM?HqNe;Yk81z>KAHh1)jIP(ZPE7d-H;CGeC% z@GWX0V)+| z#3a&J5Dtq$O-{9J;r0=1vMro$j7qK5AqAgB%^eU5}s#o#Da=Gck33; zT6M7*?Vhd{O`ohCSl#zXp{)xl&-So~z>6oix~TeoGW_=Nb*yygb??Gntd3N}Oa6fi z59-&vDy+D5ycSJ#+aMgdtlpD3l(c=hB%^u2irCXP*zH!vB#kmiZa_e5HJzxOS_Xdx zztqfb2db>kpy#5ZZQy7e6YkzNU7uz%8Qw!wSuBt|$ZFB7<;g$UzS~IuUusALsF4lD z+qPE`_agB#fe!-qsGjMQ#!;X><3v&>G)c!ELi_TWTRjyXk`;QEX3BnRvr2e!bNK56_mm{8BM@F`W+$mh@bUmAGmVV|AeWj(C#TTG}81&KD z1<_U&4pAD=XVvm)oLcbSw6m<5v`*Z7#en8N32f5>qZlO*49ZW%3pT(NY%m5<0uhhX z0DqXMPt+qly%Ir){oLKDluJx2%aM2)h;_*gj~@z5O{QlexZiNaviEn4eLlxVJ{EKF zq7wzHjUR-GPiVVICe8^*vf2AO-xCerDFRl>SbudT&a>d{*VQY%P({*;NQ;n!dRL>gI^D3taQtz!wpd-cx`!}s9U<5oBKcLA^{P$6 zFDq*Y)wh)w6d3Os`o#29mV~BeUrxgAE}-qaY^pN@lXdQi(A^YFpWeDN`l#|gIY8j9 z__pz79`GCymPVN!^faW+@R4p7PX=XKci0P6Q(qE(#ZnHLns`LMLfh7n#jslXjrbwV zi20z@@?EW$_qJo>cLJTCDAQ>=$Jfh=^4clt*j#1*%`~9_>+0sd2q<4G)Iwg7v3tV8 zyn-on2JLj?`_Bb2sDOu6KG@1zavrd_Y+0RIAyJ<^N&O|w%c0i|)1sQg zSR(8tQ^?g(v4Nzu_HRq1oLuDvb#;(jX(zPYRh3dhRN~~)Vz2_RJ`&_}!Y~)$cN%xvzruY(v9w&ZgKDn><=t~Mtqu4=iKE1jhB$Wsv_9BwM;evbnNbBQRqbpgHcfoHjq! zDsOobhthnrA=wHwW0{0}TU=q;miR4FXt=N}!D!IS0((`TPYU(s*j$>>lkH8dR8sh^z4)Det-K(V}& zWyk|W8LwXEW$l`S(ANwah5BQfq(8dhE>Bl4qQJBwwP=H>jfTp3dbm>W+x=3v1-+!Q zC>8GIcXnh%lTXQa=%HiZFB@IQX?K`RWrcoY6X>, setMp(150)) + +<>void heal() + +void superHeal() +} + +class Wizard { + -String name + -int hp + -int mp = 100 + -Wand wand + + +Wizard(String:name, int:hp, int:mp, Wand:wand) + +Wizard(String:name, int:hp, int:mp) + +void heal() +} + + +class PoisonSlime extends Slime { + -int poisonCount = 5 + + +PoisonSlime(String:suffix<>) + +<>void attack() +} + +class Slime { + -final String suffix + -int hp = 100 + + +Slime(String:suffix) + +void attack(Hero hero) +} + +@enduml \ No newline at end of file diff --git a/game/src/main/java/com/survivalcoding/GreatWizard.java b/game/src/main/java/com/survivalcoding/GreatWizard.java new file mode 100644 index 0000000..f391b33 --- /dev/null +++ b/game/src/main/java/com/survivalcoding/GreatWizard.java @@ -0,0 +1,31 @@ +package com.survivalcoding; + +public class GreatWizard extends Wizard { + private int maxHp = 300; + + GreatWizard(String name, int hp, int mp) { + super(name, hp, mp); + setMp(150); + } + + @Override + void heal() { + if (getMp() < 5) { + System.out.println("마나가 부족합니다."); + } else { + setMp(getMp() - 5); + setHp(getHp() + 25); + System.out.println("힐을 시전했습니다. " + getName() + " HP : " + getHp()); + } + } + + void superHeal() { + if (getMp() < 50) { + System.out.println("마나가 부족합니다."); + } else { + setMp(getMp() - 50); + setHp(maxHp); + System.out.println("슈퍼 힐을 시전했습니다. " + getName() + " HP : " + getHp()); + } + } +} diff --git a/game/src/main/java/com/survivalcoding/PoisonSlime.java b/game/src/main/java/com/survivalcoding/PoisonSlime.java new file mode 100644 index 0000000..b190f04 --- /dev/null +++ b/game/src/main/java/com/survivalcoding/PoisonSlime.java @@ -0,0 +1,29 @@ +package com.survivalcoding; + +public class PoisonSlime extends Slime { + private int poisonCount = 5; + + public PoisonSlime(String suffix) { + super(suffix); + } + + public int getPoisonCount() { + return poisonCount; + } + + @Override + void attack(Hero hero) { + if (poisonCount > 0) { + super.attack(hero); + System.out.println("추가로, 독 포자를 살포했다!"); + int poisonDamage = hero.getHp() / 5; + hero.setHp(hero.getHp() - poisonDamage); + System.out.println(poisonDamage + "포인트 데미지"); + poisonCount--; + } + if (poisonCount <= 0) { + super.attack(hero); + } + } + +} diff --git a/game/src/main/java/com/survivalcoding/Slime.java b/game/src/main/java/com/survivalcoding/Slime.java new file mode 100644 index 0000000..5e7f594 --- /dev/null +++ b/game/src/main/java/com/survivalcoding/Slime.java @@ -0,0 +1,28 @@ +package com.survivalcoding; + +public class Slime { + private final String suffix; + private int hp = 100; + + public Slime(String suffix) { + this.suffix = suffix; + } + + public String getSuffix() { + return suffix; + } + + public int getHp() { + return hp; + } + + public void setHp(int hp) { + this.hp = hp; + } + + void attack(Hero hero) { + System.out.println("슬라임 " + suffix + "이/가 공격했다"); + System.out.println("10의 데미지"); + hero.setHp(hero.getHp() - 10); + } +} diff --git a/game/src/main/java/com/survivalcoding/Wizard.java b/game/src/main/java/com/survivalcoding/Wizard.java index bae80b0..1d267a7 100644 --- a/game/src/main/java/com/survivalcoding/Wizard.java +++ b/game/src/main/java/com/survivalcoding/Wizard.java @@ -2,7 +2,7 @@ public class Wizard { private int hp; - private int mp; + private int mp = 100; private String name; private Wand wand; @@ -21,7 +21,14 @@ public class Wizard { } } + Wizard(String name, int hp, int mp) { + setName(name); + setHp(hp); + setMp(mp); + } + public Wand getWand() { + return wand; } @@ -68,9 +75,20 @@ public void setName(String name) { this.name = name; } - void heal(Hero hero) { - int basePoint = 10; - int recovPoint = (int) (basePoint * this.wand.getPower()); - hero.setHp(hero.getHp() + recovPoint); + void heal() { + if (this.mp < 10) { + System.out.println("마나가 부족합니다."); + } else { + this.mp -= 10; + this.hp += 20; + System.out.println("힐을 시전했습니다. " + this.name + "HP: " + this.hp); + } } } +// 이전 heal 메서드 +// void heal(Hero hero) { +// int basePoint = 10; +// int recovPoint = (int) (basePoint * this.wand.getPower()); +// hero.setHp(hero.getHp() + recovPoint); +// } + diff --git a/game/src/test/java/com/survivalcoding/GreatWizardTest.java b/game/src/test/java/com/survivalcoding/GreatWizardTest.java new file mode 100644 index 0000000..4552b8d --- /dev/null +++ b/game/src/test/java/com/survivalcoding/GreatWizardTest.java @@ -0,0 +1,48 @@ +package com.survivalcoding; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class GreatWizardTest { + private Wizard wizard; + private GreatWizard greatWizard; + private int WHP = 100; + private int WMP = 100; + private int GHP = 200; + private int GMP = 150; + + @BeforeEach + void Every() { + wizard = new Wizard("마법사", WHP, WMP); + greatWizard = new GreatWizard("위대한마법사", GHP, GMP); + } + + @Test + @DisplayName("Wizard heal에 따른 마나 감소와 체력 증가") + void wizradHeal() { + wizard.heal(); + assertEquals(90, wizard.getMp()); + assertEquals(120, wizard.getHp()); + + for (int i = 0; i < 10; i++) { + wizard.heal(); + } + assertEquals(0, wizard.getMp()); + assertEquals(300, wizard.getHp()); + } + + @Test + @DisplayName("GreatWizard Heal 계산") + void greatWizardHeal() { + greatWizard.heal(); + assertEquals(145, greatWizard.getMp()); + assertEquals(225, greatWizard.getHp()); + + greatWizard.superHeal(); + assertEquals(95, greatWizard.getMp()); + assertEquals(300, greatWizard.getHp()); + } +} \ No newline at end of file diff --git a/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java b/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java new file mode 100644 index 0000000..003de9b --- /dev/null +++ b/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java @@ -0,0 +1,38 @@ +package com.survivalcoding; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class PoisonSlimeTest { + private Hero hero; + private PoisonSlime poisonSlime; + private int HP = 200; + + @BeforeEach + void Every() { + hero = new Hero(); + hero.setHp(HP); + poisonSlime = new PoisonSlime("A"); + } + + @Test + @DisplayName("기본 공격 + Poison 1번 공격") + void Attack() { + poisonSlime.attack(hero); + assertEquals(152, hero.getHp()); + } + + + @Test + @DisplayName("poisonCount가 0이 되어야 한다.") + void Count() { + for (int i = 0; i < 5; i++) { + poisonSlime.attack(hero); + } + + assertEquals(0, poisonSlime.getPoisonCount()); + } +} \ No newline at end of file From 9b858b3f0a0906c9ba8282c2a8cd310af707450e Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 16:04:10 +0900 Subject: [PATCH 3/6] =?UTF-8?q?FEAT=202026-06-16=5F=EC=83=81=EC=86=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/survivalcoding/GreatWizard.java | 12 ++++----- .../main/java/com/survivalcoding/Hero.java | 25 ++++++++++++++++++- .../main/java/com/survivalcoding/Wizard.java | 6 ++--- .../com/survivalcoding/GreatWizardTest.java | 18 +++++++------ .../com/survivalcoding/PoisonSlimeTest.java | 3 +-- 5 files changed, 44 insertions(+), 20 deletions(-) diff --git a/game/src/main/java/com/survivalcoding/GreatWizard.java b/game/src/main/java/com/survivalcoding/GreatWizard.java index f391b33..eb286ad 100644 --- a/game/src/main/java/com/survivalcoding/GreatWizard.java +++ b/game/src/main/java/com/survivalcoding/GreatWizard.java @@ -9,23 +9,23 @@ public class GreatWizard extends Wizard { } @Override - void heal() { + void heal(Hero hero) { if (getMp() < 5) { System.out.println("마나가 부족합니다."); } else { setMp(getMp() - 5); - setHp(getHp() + 25); - System.out.println("힐을 시전했습니다. " + getName() + " HP : " + getHp()); + hero.setHp(hero.getHp() + 25); + System.out.println("힐을 시전했습니다. " + hero.getName() + " HP : " + hero.getHp()); } } - void superHeal() { + void superHeal(Hero hero) { if (getMp() < 50) { System.out.println("마나가 부족합니다."); } else { setMp(getMp() - 50); - setHp(maxHp); - System.out.println("슈퍼 힐을 시전했습니다. " + getName() + " HP : " + getHp()); + hero.setHp(hero.getMaxHp()); + System.out.println("슈퍼 힐을 시전했습니다. " + hero.getName() + " HP : " + hero.getHp()); } } } diff --git a/game/src/main/java/com/survivalcoding/Hero.java b/game/src/main/java/com/survivalcoding/Hero.java index 539ecc6..ec223b2 100644 --- a/game/src/main/java/com/survivalcoding/Hero.java +++ b/game/src/main/java/com/survivalcoding/Hero.java @@ -1,10 +1,33 @@ package com.survivalcoding; public class Hero { - String name; + private String name; private int hp; + private int maxHp = 300; + + Hero(String name, int hp) { + setName(name); + setHp(hp); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getMaxHp() { + return maxHp; + } + + public void setMaxHp(int maxHp) { + this.maxHp = maxHp; + } public int getHp() { + return hp; } diff --git a/game/src/main/java/com/survivalcoding/Wizard.java b/game/src/main/java/com/survivalcoding/Wizard.java index 1d267a7..1552629 100644 --- a/game/src/main/java/com/survivalcoding/Wizard.java +++ b/game/src/main/java/com/survivalcoding/Wizard.java @@ -75,13 +75,13 @@ public void setName(String name) { this.name = name; } - void heal() { + void heal(Hero hero) { if (this.mp < 10) { System.out.println("마나가 부족합니다."); } else { this.mp -= 10; - this.hp += 20; - System.out.println("힐을 시전했습니다. " + this.name + "HP: " + this.hp); + hero.setHp(hero.getHp() + 20); + System.out.println("힐을 시전했습니다. " + hero.getName() + " HP : " + hero.getHp()); } } } diff --git a/game/src/test/java/com/survivalcoding/GreatWizardTest.java b/game/src/test/java/com/survivalcoding/GreatWizardTest.java index 4552b8d..349f5dd 100644 --- a/game/src/test/java/com/survivalcoding/GreatWizardTest.java +++ b/game/src/test/java/com/survivalcoding/GreatWizardTest.java @@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class GreatWizardTest { + private Hero hero; private Wizard wizard; private GreatWizard greatWizard; private int WHP = 100; @@ -16,6 +17,7 @@ class GreatWizardTest { @BeforeEach void Every() { + hero = new Hero("유해진", WHP); wizard = new Wizard("마법사", WHP, WMP); greatWizard = new GreatWizard("위대한마법사", GHP, GMP); } @@ -23,26 +25,26 @@ void Every() { @Test @DisplayName("Wizard heal에 따른 마나 감소와 체력 증가") void wizradHeal() { - wizard.heal(); + wizard.heal(hero); assertEquals(90, wizard.getMp()); - assertEquals(120, wizard.getHp()); + assertEquals(120, hero.getHp()); for (int i = 0; i < 10; i++) { - wizard.heal(); + wizard.heal(hero); } assertEquals(0, wizard.getMp()); - assertEquals(300, wizard.getHp()); + assertEquals(300, hero.getHp()); } @Test @DisplayName("GreatWizard Heal 계산") void greatWizardHeal() { - greatWizard.heal(); + greatWizard.heal(hero); assertEquals(145, greatWizard.getMp()); - assertEquals(225, greatWizard.getHp()); + assertEquals(125, hero.getHp()); - greatWizard.superHeal(); + greatWizard.superHeal(hero); assertEquals(95, greatWizard.getMp()); - assertEquals(300, greatWizard.getHp()); + assertEquals(300, hero.getHp()); } } \ No newline at end of file diff --git a/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java b/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java index 003de9b..7ec0e0a 100644 --- a/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java +++ b/game/src/test/java/com/survivalcoding/PoisonSlimeTest.java @@ -13,8 +13,7 @@ class PoisonSlimeTest { @BeforeEach void Every() { - hero = new Hero(); - hero.setHp(HP); + hero = new Hero("유해진", HP); poisonSlime = new PoisonSlime("A"); } From 1b49366277d51d3bf10366537fec54362279199c Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 16:06:24 +0900 Subject: [PATCH 4/6] =?UTF-8?q?FIX=202026-06-16=5F=EC=83=81=EC=86=8D=5FDis?= =?UTF-8?q?playName=20=EB=B0=8F=20heal=20=EB=8C=80=EC=83=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/src/test/java/com/survivalcoding/GreatWizardTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/src/test/java/com/survivalcoding/GreatWizardTest.java b/game/src/test/java/com/survivalcoding/GreatWizardTest.java index 349f5dd..94d587f 100644 --- a/game/src/test/java/com/survivalcoding/GreatWizardTest.java +++ b/game/src/test/java/com/survivalcoding/GreatWizardTest.java @@ -23,7 +23,7 @@ void Every() { } @Test - @DisplayName("Wizard heal에 따른 마나 감소와 체력 증가") + @DisplayName("Wizard heal에 따른 마나 감소와 Hero 체력 증가") void wizradHeal() { wizard.heal(hero); assertEquals(90, wizard.getMp()); @@ -37,7 +37,7 @@ void wizradHeal() { } @Test - @DisplayName("GreatWizard Heal 계산") + @DisplayName("GreatWizard Heal에 따른 마나 감소와 Hero 체력 증가") void greatWizardHeal() { greatWizard.heal(hero); assertEquals(145, greatWizard.getMp()); From 59559682c3c444a424a5afad16b7df811031e73a Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 16:14:50 +0900 Subject: [PATCH 5/6] =?UTF-8?q?FIX=202026-06-16=5F=EC=83=81=EC=86=8D=5F?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=8B=A4=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EA=B7=B8=EB=9E=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.puml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/game/game.puml b/game/game.puml index f184c47..dc8c162 100644 --- a/game/game.puml +++ b/game/game.puml @@ -5,8 +5,8 @@ class GreatWizard extends Wizard { -int maxHp = 300 +GreatWizard(String:name, int:hp, int:mp <>, setMp(150)) - +<>void heal() - +void superHeal() + +<>void heal(Hero hero) + +void superHeal(Hero hero) } class Wizard { @@ -17,7 +17,7 @@ class Wizard { +Wizard(String:name, int:hp, int:mp, Wand:wand) +Wizard(String:name, int:hp, int:mp) - +void heal() + +void heal(Hero hero) } @@ -25,7 +25,7 @@ class PoisonSlime extends Slime { -int poisonCount = 5 +PoisonSlime(String:suffix<>) - +<>void attack() + +<>void attack(Hero hero) } class Slime { @@ -36,4 +36,14 @@ class Slime { +void attack(Hero hero) } +class Hero { + -String name; + -int hp; + -int maxHp = 300; + + +Hero(String name, int hp) + +void attack() +} + + @enduml \ No newline at end of file From 51fc702b6ecde6fac96cba339868de7adad56dfd Mon Sep 17 00:00:00 2001 From: "Jaewon.Moon" Date: Tue, 16 Jun 2026 16:15:59 +0900 Subject: [PATCH 6/6] =?UTF-8?q?FIX=202026-06-16=5F=EC=83=81=EC=86=8D=5F?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=8B=A4=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EA=B7=B8=EB=9E=A8=20=EC=82=AC=EC=A7=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.png | Bin 20579 -> 24718 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/game/game.png b/game/game.png index 0fcfcf761863904bd30f8a84eaf708ec0089ba6a..a58c0095fd79e139b7db1e799de8853b88ff3ef6 100644 GIT binary patch literal 24718 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 literal 20579 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