From 933591463a5637ad6c3555280d524a93a217a602 Mon Sep 17 00:00:00 2001 From: Dmitrii Prikhozhaev Date: Sun, 22 Dec 2019 18:35:16 +0400 Subject: [PATCH] finish --- .idea/description.html | 1 + .idea/encodings.xml | 6 ++ .idea/misc.xml | 9 ++ .idea/modules.xml | 8 ++ .idea/project-template.xml | 3 + .idea/vcs.xml | 6 ++ .idea/workspace.xml | 79 ++++++++++++++++++ TwentyMatchsticksGame.iml | 12 +++ .../TwentyMatchsticksGame/Game.class | Bin 0 -> 1773 bytes .../TwentyMatchsticksGame/Main.class | Bin 0 -> 451 bytes .../TwentyMatchsticksGame/MessageOutput.class | Bin 0 -> 1985 bytes src/Game.java | 71 ++++++++++++++++ src/Main.java | 7 ++ src/MessageOutput.java | 39 +++++++++ 14 files changed, 241 insertions(+) create mode 100644 .idea/description.html create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/project-template.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 TwentyMatchsticksGame.iml create mode 100644 out/production/TwentyMatchsticksGame/Game.class create mode 100644 out/production/TwentyMatchsticksGame/Main.class create mode 100644 out/production/TwentyMatchsticksGame/MessageOutput.class create mode 100644 src/Game.java create mode 100644 src/Main.java create mode 100644 src/MessageOutput.java diff --git a/.idea/description.html b/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..89e42c1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..66171d7 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/project-template.xml b/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..163933b --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1576998552975 + + + + + + + \ No newline at end of file diff --git a/TwentyMatchsticksGame.iml b/TwentyMatchsticksGame.iml new file mode 100644 index 0000000..d5c0743 --- /dev/null +++ b/TwentyMatchsticksGame.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/out/production/TwentyMatchsticksGame/Game.class b/out/production/TwentyMatchsticksGame/Game.class new file mode 100644 index 0000000000000000000000000000000000000000..3d2c6d0bdefd458ae04ea0215a6b902746310594 GIT binary patch literal 1773 zcmZuyT~ixn6n@@(HtB}&5oq}kskAf=wpdF)fwmz~NE?z$B1kWEmav8`$tIKCIN~p{ zy>T2bxap0KwHbB%0sa^NK!>qDXR~R8dcnKz^PY2_bIx-P@aNyZ{sCYfPohX*K8))T z+`!E!e7F@s2)DzyBj1H67O^DHcjdSz@V*>rIhLbz$;fR*ZmV)U5V$7J>tSRShO+r= zDVxrHv5_ui){CWV=21~W(GttlE!)v8XG^cP3_r_BC=8U=H&<7CoyFi+h?lkt|9^v?ggceQ9 zbnYtnlb5y>0-5@r!NfV!GV-n3uF)*%yH&mn=IUj=x}`Tw!QNxQ**BRZlv~ql2FYTM zeqcN>o3>MQjD|ua*|E6H75XS>;*vMM_B>)mM=u|2=nao?=y6p)G@24_r!BpDXiEat zCaTunHCC#x7*)d|VMKUy^@>?mh!*RuW|wO+Zo;Z= zRptu2PmQv3;;DFOJ4Q{xXIcuwo#B}ExvbS_QJkis*Qn^(Zk# zOmog$fU=RP*Z4pYsZiN5_D<|WAeoim=)P{t6tWg0Den_*iq*yajizZi+s(RFNxM6x zFxn+A?He3flWWGCNTo2*wQU+To!ewpPGlVFnmePlJF5}vzUJz-Y-g}s8yM|RP^W+@tG_@Z?Pa1lwOQ?d&lc^ZD#7EkT` zjBsd=bfGp*y`$`-0}v-^Kl(7xLl?)aN5@_A=)U#nGAXhJ8_$q%d4s|mB<~Ss#S(5j z_bhKS9$~FCNbnrS5QQ3}(9`VgGG(5pw0ALqWlZ*zmhnov%(x)@ zW1}$&#I^UT{D#O!(==-d{({IejCF3&#qrP&h>i!oM{xW_8>js*=+>!XjDuzfg*Z=b zFEHl}b0#^kSvT_tDF-RkNA76Fv!k}u5P|O)lj^mb_3B%-j!7-*nr&zzOB=D-?b$Z^ zJRqOIcUW#C&e``bO+3f2XX-v3z4^N%?IYwL!zvhA}lFQ;=`vS6ot>EY0}2p)>h;H!d+{@Y}{4c2nsUlqEZl7(-`8ECV`mxUT!QX_y9hX zcqSFPaTfR7zw=#~@1Kt^0H-+g;J|mW?ZJX?!j6kw7kdKEnND?aE>P+9#{%|6_7n-U zq)wyTc`}Ledo`J{(~()IW@D9WQ~x#X;#t3tA#apUhjb@Y0l)Vsr|MM&GnK}{sK|91 z4@PE5)zL(Y y9b>*G%%V0wVLdERk%PfI>=mVn3a2)YRq1s~n!j|QjSbFf>~_#4PhgX^g{@yvX-*UX literal 0 HcmV?d00001 diff --git a/out/production/TwentyMatchsticksGame/MessageOutput.class b/out/production/TwentyMatchsticksGame/MessageOutput.class new file mode 100644 index 0000000000000000000000000000000000000000..cfae9f173a029488b6da9c5cdbbb0f9d3d86ee66 GIT binary patch literal 1985 zcmb7F-%nd*7=At|?V%K5u)(Md4ooK7q^O&l4z>v>8wvwg0$IE;hw`m-Yfqc@bjj|f z#uzi=qVd8kFA-VfpeF6#3K1}^FKvVji`d=$WyAewRBz=&Q)^>o$1HN9Rp z@Uelh0LBIUqX|3VTob4tJi8#^n@BH9ftKlnEpO#hOENoeEhQ;wn@-29|~+TC!{vg5s(8qPSXWGe&ckq{4$BfB&nJ@0x=Qwe6OHrIT~)8#Rrf~?tus$| zPix?-4fnBH*9xr6p8MGSuEgVIl{N9In3z|YkXg*>=?k`FB!t_DvW?4iW|o;!q87_( zXAS!VzG8(L2UGoscifTO9(Ddh?0u&Coth=gb@yBKS1D(k?ho!yrpJFP!befnidEea zeVB7(if=ld=L{O-C)VkYq(McM)cD>c377w z+mUfyk-!5hnU}M71v>bCE9}Y|bm#YgsWDmu_sa^CQg4rxQC_3n;Nj>mL?$EcWr3j@ zc$E~YnukQXs~H}>Hk@=xByfE2b(|6Op@Sb|{R@Cyij$nXcpBy^xHg>If>`IK4q?uI zPblyv_o0#kx^app13d@E1Ju^P#tqc9)feE?0Q{P84tiJhRQGZ8!lYdLdsc>C4FACs zFvg+%`#3If^zIK0+2GrQ|4w~)8-Zv6#^Q7IYjI-%!RP4I+omHLnn1lrpof9#U`;gf zuPB7eXu)-~VjS&QU@{IPTV!(jse78k51-i)Y$xTnYDXEO@1s$6Q9aBta1iATN$9A0 z$#ECWcee0GTT210;R24ewQ*BGdpTXDe3#O7in;BnVAhK>9y0@P*Jg9PM$Y@lq#unK VtZj0lhRFa;&XDj~Qm(_fe*x#Rf?EIp literal 0 HcmV?d00001 diff --git a/src/Game.java b/src/Game.java new file mode 100644 index 0000000..19ea307 --- /dev/null +++ b/src/Game.java @@ -0,0 +1,71 @@ +import java.util.Scanner; + +public class Game { + private static final int INITIAL_MATCHSTICKS = 20; + private static final int THREE_MATCHSTICKS = 3; + private static final int TWO_MATCHSTICKS = 2; + private static final int ONE_MATCHSTICK = 1; + int amountOfMatchsticks; + + Game() { + this.amountOfMatchsticks = INITIAL_MATCHSTICKS; + } + + static void takeFirstStep(Game game) { + game.amountOfMatchsticks -= THREE_MATCHSTICKS; + MessageOutput.announceComputerSelectedMatchsticks(THREE_MATCHSTICKS); + } + + static void takeNextStep(Game game) { + if (game.amountOfMatchsticks % 2 != 0) { + game.amountOfMatchsticks -= TWO_MATCHSTICKS; + MessageOutput.announceComputerSelectedMatchsticks(TWO_MATCHSTICKS); + } else if (game.amountOfMatchsticks % 4 == 0) { + game.amountOfMatchsticks -= THREE_MATCHSTICKS; + MessageOutput.announceComputerSelectedMatchsticks(THREE_MATCHSTICKS); + } else { + game.amountOfMatchsticks--; + MessageOutput.announceComputerSelectedMatchsticks(ONE_MATCHSTICK); + } + } + + private Scanner scanner = new Scanner(System.in); + + private int PlayerStepsAnalysis() { + if (scanner.hasNextInt()) { + int matchsticksToDelete = scanner.nextInt(); + if (matchsticksToDelete <= 3 && matchsticksToDelete >= 1) { + return matchsticksToDelete; + } else { + MessageOutput.printWrongAmount(); + } + } + return 0; + } + + void gameLogic(Game game) { + int matchsticksToDelete; + + MessageOutput.announceTheStartOfTheGame(); + MessageOutput.announceRemainingMatchsticks(amountOfMatchsticks); + game.takeFirstStep(game); + MessageOutput.announceRemainingMatchsticks(amountOfMatchsticks); + + while (amountOfMatchsticks != 1) { + MessageOutput.announcePlayersStep(); + matchsticksToDelete = PlayerStepsAnalysis(); + while (matchsticksToDelete == 0) { + MessageOutput.announceRemainingMatchsticks(amountOfMatchsticks); + MessageOutput.announcePlayersStep(); + matchsticksToDelete = PlayerStepsAnalysis(); + } + amountOfMatchsticks -= matchsticksToDelete; + MessageOutput.announceRemainingMatchsticks(amountOfMatchsticks); + game.takeNextStep(game); + MessageOutput.announceRemainingMatchsticks(amountOfMatchsticks); + } + MessageOutput.announceLoser(); + scanner.close(); + } +} + diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..70e792f --- /dev/null +++ b/src/Main.java @@ -0,0 +1,7 @@ +public class Main { + + public static void main(String[] args) { + Game game = new Game(); + game.gameLogic(game);// write your code here + } +} diff --git a/src/MessageOutput.java b/src/MessageOutput.java new file mode 100644 index 0000000..853d777 --- /dev/null +++ b/src/MessageOutput.java @@ -0,0 +1,39 @@ +public class MessageOutput { + static void announceTheStartOfTheGame() { + System.out.println("Игра началась!"); + } + + static void announceRemainingMatchsticks(int amount) { + switch (amount) { + case 4: + case 3: + case 2: { + System.out.printf("На столе осталось %d спички. \n", amount); + break; + } + case 1: { + System.out.print("Для игрока осталась последняя спичка. "); + break; + } + default: { + System.out.printf("На столе осталось %d спичек. \n", amount); + } + } + } + + static void announcePlayersStep() { + System.out.print("-Ход игрока. Введите количество спичек: "); + } + + static void announceComputerSelectedMatchsticks(int matchsticks) { + System.out.println("-Ход комьпьютера. Количество выбранных компьютером спичек = " + matchsticks + "."); + } + + static void announceLoser() { + System.out.println("Игрок проиграл!"); + } + + public static void printWrongAmount() { + System.out.println("Некорректное количество спичек! Попробуйте ещё раз."); + } +}