From 9a24645cab8e65b1a0fc8f75c347c39ef90786c9 Mon Sep 17 00:00:00 2001 From: L3o15 Date: Wed, 14 May 2025 18:38:51 +0200 Subject: [PATCH] GameLoop setup --- Lib/kibofplib-1.0.jar | Bin 0 -> 15011 bytes .../it/arnaldo/unibs/tamagolem/Element.class | Bin 1568 -> 1523 bytes .../unibs/tamagolem/ElementGraph.class | Bin 3157 -> 3608 bytes .../arnaldo/unibs/tamagolem/ElementLink.class | Bin 805 -> 805 bytes .../it/arnaldo/unibs/tamagolem/Game.class | Bin 2960 -> 2741 bytes .../unibs/tamagolem/GraphElement.class | Bin 1844 -> 1844 bytes .../it/arnaldo/unibs/tamagolem/Player.class | Bin 845 -> 845 bytes .../arnaldo/unibs/tamagolem/TamaGolem.class | Bin 1391 -> 1391 bytes .../unibs/tamagolem/TamaGolemMain.class | Bin 1408 -> 581 bytes .../unibs/tamagolem/WorldBuilder.class | Bin 5972 -> 6244 bytes src/ElementGraph.java | 8 +++ src/Game.java | 33 +++++++------ src/GameLoop.java | 46 ++++++++++++++++++ src/LinearSystem.java | 5 +- src/Modes.java | 7 +++ src/TamaGolemMain.java | 32 +----------- src/WorldBuilder.java | 26 +++++----- 17 files changed, 96 insertions(+), 61 deletions(-) create mode 100644 Lib/kibofplib-1.0.jar create mode 100644 src/GameLoop.java create mode 100644 src/Modes.java diff --git a/Lib/kibofplib-1.0.jar b/Lib/kibofplib-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..8929bd57e055264e6e8b03ead4f59463afd2e1bb GIT binary patch literal 15011 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 fK6|wPf3M8zxjS>p|y literal 0 HcmV?d00001 diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class index 3ef3bf396e26fb210a8b241c1806f096da6b5049..9f2bd764275091f0723fa86f9d9aead4b73e7a98 100644 GIT binary patch delta 93 zcmZ3$^O;-V)W2Q(7#JAr8G_gum>3z9CI%{PG`hmHS&~_Zk&$t-4vRHA6N52>2?NvQ mN){ttZw5A?Y9AnGV(^`OoF$*x4@g_G-r$Fb`7;E73z9CI%{PG`hkhDBzn~l98VhkXV$Mn_7}uRJ@sm zS%i_1X|g1XwU9SZ2P-23LjwZ?6N52>2?O)wXci+G9|ks{1W1yTiGe`?NCUAikYZx+ Yn>>pppV=Qs^RV9Fhlm9*1cK#)0FP)H&;S4c diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class index 6cedb9ad96adf256039aae4857a49020c1f8d925..7e9db6fce3608a310400c703209264ba53e95e22 100644 GIT binary patch delta 952 zcmZWoOHUI~6#ni^=}f1!R7fU50S97{homORLs1Md#270JLNvsfILZLUX~9mZ7St9W z;9Fr7@e$+Bm}sKWV8Fx}m#*Bna>vggik>^2MA5~}J@=gNeD^!wo%yzDp+fnxw)_#m zUOaiDy!5n5Fc?Zl^o$-IPshz@S1P4vV{t33U;v^Y!zhsuX9)g*@ao$|&!jLM8Zy$| zrjam`X{$$17#2fGU43jlw1Yt~Ooq_^c{MhAQa2ClsknZ^H2Sh*MjsCtTGwOkXWpvW zyrgz?5?TAdC%9FSs&-V`v9Z{TI|}Y%R>E8WU9jyb>2r;Y`wY@ic1&BDo?{3cNG6Tc zK2x_W!;-MT5V2oL5mCY;J1_4k9U+edoPq>~B6#U-+F#}BXoB)Vi1e1>fe*z{kfdFJ z5I_i{7^9WpG*V8F=BsSsJqodLlph-$yz1@?cwVuPrVfT)j60nv-+q>`mwn-boWFri zt3oL_ydZBaP2B(7$y;;)wDH5b!Olb0cC$_FLD_R zlb@sdd3SC@Ss*2AN^>_?(n;BVR6A#RaUA8ifE@YMi#p^nMQ+tVcQlEp#2_w`Vm|wf z%Rgaf{9Bo6KlSe>*6;psj1JZ#E^v1nU9^CDTq1tvP9^+AfYDg1sG!_sT;Wp@ z{spbvmzED0=zovFSi?IgOHdgOZCgS)!$X8A&=@{pOHX6dB5Ic~B;d&NU%8dW*VO3& zzbBRSb0=lAA%b>n$4)e3m*W%H7@-@Sb~U!R8f7%mH!(wcu2L`m5(=4X6!E(Vf>hIQ mH0Aw8^v;hqBa^1bnzWFV_Q}8v5h! z;g0xqA!zLzsnsUuX9AuZO6jz>_boi9lc3ji*^d#H!TxJ)G+#t{?`&nXH z#_nY_QJG=4G~Cn;-m2Af!Cbr)?K745O>|7GKceC#&)O~f_lU(C(I)W2Q(7#JArH*&}_0{}dA1-AeI delta 17 ZcmZ3=wv>(I)W2Q(7#J9wH*&}_0{}dU1-k$M diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class index c01d743b7f267ae69f28ab239c63fafc42a17151..50c6d8baab3eec1a7c1471a395b09c5ec4d16a42 100644 GIT binary patch literal 2741 zcmbtWTUQfT6#j;UB!m$$AQiP0QEL*=C~fT}mU=^KO^^kM6|HpwLl~K4=*&cm)z)5V zU;5I&(TBFH(Oy>j(zpJou73N>013^?OJOm4W}m&kecy+_|M~4t0B_-&Bsvg@BdVhl zF%7-^wbDIv(bo_=YgH|OTtg(CneRdZU2!CJbVJv0$ntZBTQ%$@Cs(Ul zB`@b26{GCfW+gXiR7?$V*YteDC62Zr$~`)EqnG?O+gLZ<(;AKx+JH2^`jdIF4xOqrp|H7t6vKAH=q*Pgq#4)Pl1Wq=4vF`b1 zg#~qLtjpd&-*R%(bj~NLX;ktFoYIhx8WtR9Er~I_6vxXtUcni9t-@^9kdlhNT_t1- zH#75+>(_L=jyE)PH>6L)o~F#rntr|;XYpnn<2rlvoQ7T7dF82wsAoN7o!OCBqzx|U zxQI)Pv0AH?O!wOIW@XrQS7PT9Y<2!5@iwl+@s5tGC}`-}ZuO$!uMl+6v}}^}rOYKk zozihlP2X?2?W}#kQ?wbJ}5D zyd>GCj%6A1PS5mftZD))IxOKtZB^z$tm?3ZkyO=GQ^M1Vv&4K4x0|aXMZCNQH{DJu z9O(Zk(m0Fx%sd^us2to~u&QQ|<~gHe)8$mbSv2fY+R}q`A98R+=nTaY_k!-EL7W;!nmo3-xMNk$*izUU>3^b>9eQh(nXLi^=+b(Hg zwE1x&c7|6)a@MK2i{@oZD%d5JI4Q%5!)(|NPM?mH+#-BS$(^7m?*Y;dxtA2JpsFYr zgQ6T|MLDjDaxN9+{3*&QQj}vu+68(8htD;B)rcD<9n3z1mW|XA&yLiwD?3`pp6rP_ z`hQfaAMm*!F+TTFyqh2c=%HJE*vH>NxID=QK=9!6i;yZ1UI%=WP$axTxzrG$@fz-j zF62l>sx$jDcKyJY4v4v!Vjfh`dLR%&Yk1I7dCyMep_a-YVx4dje52+5oytdBDnG3575aNNwdbrkX$_m#Zzr`i}Q) zC$%!nU;k6=D@6am3pXRFq1oc^7`~Z0IvR~ep5eu*pO8uAp5nBai>MqAD8*Ckz0>Ts zF%0n%Oyi6)9h5T@n&!ohkMRjjrdYry_>?XTu?;@M=fwJgh*G0K>Px+vwdoiUD&;jyjiCcs9+~;>N0ysADD@aAr1E z1HLHMab47|i;`W(yP=_5b=;BHJ9QY_IUc5)K%N~rj$=5F368~WOfsWa*||kL;@v3y z95mhIt)}~GE1=5^M*`~2KE)FM%Cy1E-`lp4QnN6_=Pa$waT2aKVD@fdZV;sdU;hg> CVqpIO literal 2960 zcmbtWTT>iG6#g2P9oP&BERcji%wQ6;EHP`Mxh}y7NdP5)0f{DFGVC_&gkff#odt=P zs8P|f%IEw6-}0a-6BVoUQOh4?`E}23SduM#a2`%~pFZdG>F->6{{Cm!I)Mf> z8i<)_LR_Hjmc3$UT-#gBOwHetxlkZJ=y*;zB+!`ZpKC!gS_~vi?0_k7zzH*U;Ms28 z&y+o9zLW{=WqZ+g<#J}!UX}tzAWNYg(2lsSly{ogg*NhwuDvFM;{pdKwlOlTrLsyh zX`-V>^MvAcnb?gz0_Lh8xcOn5j^}u2|8^!X(K+dbqk&y4WE1GdJ_9`_da+;N$TqIj z>Iv*vlwpNa5@=8LPiW-Iq2p#|WSHH71F#JAnRpfl1zNZ43dBmzZ8}Ow$Kw~8847+0 z96`!Jzlk&k1a@wQ;))#>sFRb9%OQ2K|6=@tR#8gb$e4IR9nwahX8q81XTm^wi(#P! zC-9cQITKk73iNG*O%x_Z zl^#s$xOY|&(YZv6j<=Xi(&-@+FXMv1o@IMUj`&{A4zD?3fivcb7ZS`fsmPsL&8ImP zz-xsP7{-W!izY7NvOtFhaOy8v@cm#tw1HZLSGdNoTk!lON;Qo&Fgj-S`kjdf*{i(?=hoJ^lPcbpEJS zXG!<5(*Z3MH%JrMNrN3UxfiW?gFETS5aw`=E1J}f2t8A-DEGS6tIY-~@Fw1>xRBwf zq?*z{q4ft&8laAgYi64^ZAJnW(*oD)Dz`tW+*w!o2HvJQb@|$pJD*hETUYrVyjw@v zxc`LPy>*q}!_A8F5HG3lh^Ko9`6kBdrwp(dpgwJ3cO>-~)3^?z!pqhG@fPA1X9l(Y zB7U8Zu=iIyBQV$#ySd(pL;f##?z`B{^F6VAPgA}?*3sVeCCwe;eE<3qmrCYTtSi>z zo>D=ekz=Rg4{%%sqj^S~p#!j0Yyj8^A88+f%k-@k#^s`IYc1|}Xanl^Cd z@glx~$=bzKb&;H={Y^B6bpjt|ex>-AHo$+KW9$mY`N*H7fzw#ze@Y2waR=w{E&o;S zVG!Tb%Lf?3AC&x)zXd8Y$0B?xD7NA^%p*q(dvPCm&KhX>9wcXt)cOVsoW*#`U7nC* zEGBUq1;>m*gzfQb}Ueh!dEhAE0H xa(vO_Az>OCyTTfu5goNpaQ=`u0VKmFPI~;krsY2idV$GiT||jIfikm!$_r4_AV&ZI literal 1408 zcmbtUTTc@~6#k~P-F8_OC?FSsB1(75Wd-p@5tLg+%OxqPAwEspOW&Y3gw>-YB`0Je~m5kilIu!0Dp41H((GuJI{SMqHCsYdg}~5s#cH?W9avt8lGwC`4YEn!;M2muLMQG9o+58l0UC|MwKCC+6+TE zKhkvcJ-gQM@}6t(YDR{HK7rrQFrwb-q7?)}Lct)0h=|i5UN^~(T+_Zz7Q=mp_%W~Y ztYaBf8KW4JFs|SMCKwXe_#Gh(QcWbV1i?1E-vFX#+Leq}h+&FhLO!zix#1?4R^_cz z$Eh31bEn}ZZC*8GS;92KwCU;GwYgPx^oDH~>$*ogDuRdJ3Kpf#D0qa&3^CjI;^j=+ zU>H=jR@t4nGLlG%woJsJb>J`Gjz7mR6@Z@=G_in13A%zOSYk*8xPNq9tGwATt+L@V z$VIX9bqsSvHXw3`sx@pc>+;$u9c>yQClBUAn-vf`EUn;Dwm%NZsSE zC*c)?8bJT=7XjQ z05XJ7^?`=fPydd9Rv+jASI;1pDfnGqegbDX~VY z(%!$uI{n45fj6WP!9U3(Lh|qm(#ZwlO*)ke3=9lkVnoPEl2=Hc%w6JP6SMn5r*`WO zu8=;NU-*XkCYD#jqv1hayB>;*;vKDFvcD(q5I+0?UPoz; diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class index 0c5c0c5c8a2e3c948c59a7c28d470bbe526789eb..5634304bff35ca98508db645755ac143075e059c 100644 GIT binary patch literal 6244 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 literal 5972 zcmbVQdvqLC9scgVW_Nb-D&5v0)RscqO-LFjG}28dO&_75X$uXcgaCGuOp|RlyJ2@z zQlvZ!hzJr9utij;62U4(Z62gnP*FrgLGghi0{)@LbJTM@a!OCl`rX;t-ASowYEE|N z?w#M``~B|yefRP5#B+xMtipRLTyQJ!Xz;=(P`b_7VbsKocz4alj%{XVTEJHyjYreV z1>E6^Ruz5(6sQ`4&;;g3(=|piZp6A0HU05uN2(@m^cvlXnAuyihF@k}8rWgP`puNU zqHslf^T{>pR1~8`L8*o^%n&FpU|MgaduT9e#Jdu`7NXU@74sMg{}jv;IL(snPe)@l z4auajvpJedtM~|X1*dB$#~Ha03nB#OGg4AeU_rROx!^6Efx3!pm!%=ah%bbX%7o1o z(8G?ms}ivoa~4g+>tw3V#C!#3X*e4T1VRO51u^k z8Y*#4E){tsQoFw+3w>s|sp$krtFc%?jfQh^9tU8GbCDKNX+jGIX# zZMGV*XxHj!G8-20p7~*vjts0f`sx&%FHlwpcde1?VZVwcaLagVHGB*ga`d`QraTnR z!FJ5Lx*#H;p?VD$fm5%jV68+2`R3r_`}GX`nBS;Km45b&g;H*#vQ z^qLf0#zuR4lg!~J4K27rz#mP^VM-A7tgv(Vo9upKZN+8tj8;(;&CcjfdmkiAxji))g`b`DQ z^i)%`IT|;OWXsM}+U!+fqDR(VR3H#;VmjKJWUZOlt|11Jf|4{-iP#Qi%|pIn+7eS+ zw|VN4q|w)-A}-mG*_;ZGC2FgwxE^VVr=L3E>9AWxtAZPtu_@;Ff@byK_u!O^!7Koo1h8O%>I+N5iLZFXcNV7g?+%p;t^Ja?3a;{30|fxPKDU zZ?aYl75Bj{*_&hhS%JAz48dhaG^t_`pOd+NNMPNRaog#sn+8axMIwAe!{@Pw1;^w{ z5asD>}d^m#jDtO1GWiyFR!FSC9~pN-L^T(%ZYD?OyXK|G;hpVSUeyT$BG z#JgltzN+C#$qqqT?kf{qzl}KSXH}w$WmF>TZ$p1?hnc*>=#VSbjOIkA5o1e#WA=$|x)wta@$+GrOKgV3|!1+eVYL>fZS-XWGvaCouUg?r@UKUT3LTepD zr4Mhk(a}Y97AipBqd)eEc5buNpoDpWez5h-cYw;cNVsui1&G_^sLP zr}1_E3dj|cJyiBQMu{1Km>7k!ZWKi`aoYC#eOv0s5o)U(#q1HxSzk4Zc~$Q6F)VaL z{;1k8jwNj)xFF(j*LvNxzL2l{39JtJJX>m&kizy7-BT6vjbW(^&%<98QgY2vEDL#e zd&MX&9>W?pHt$x%Q0CR$K7Jo6*F9rcC-5RRx+1>vLuy2E*ZM<#8hoHCiN1Z+79 zs8wUQTp$wEgJZZ-U=Lbkt6fOH5ls*1+LQ1NW!|gS17rBOgwv>Nc5B5jI%AsL(S6g%?ivX{$Xs31jZ3(PWny& z=^-biaa`Y~Ya>WSifrt~da;eYL$++}CAy}U(NU_Fffcy3}yD}s$MjVTZS^-x;l(IboD^QKZ;Lo76%|imH4-KA9ulH&7NUS zHaSx~P*KA9Q;s6cMJd9V$u~M`aXOZyz@hVn`chDgIjFsYVSS9|BHR4}rBSs;!WT?ILOHN;6Y2*PybbxZYfcmhGFWK z5!+>!ZV8bNP>bb5+;>=3G)8j>V|WgJ#&i(l`~(=;e)fJBD)D-77~kXdh({ddtbBpE zOT<6$eOeYM7w_Q*_#rE~TD-=3_z_FKR=k8Cv*lriUc^h3^I}l+;wMDm!^8CaGJPoc zDJ{*TeAdP*c^f~=+jx~Weom>!QIcVL6a~K!3Kl77J zq`No-yog{3lBy0d%p$T|N97nkEkKI8j|KOc^)?x8V7H_Kk7Ngn3g*j}T~6L=-D?YG ziDxMDrsTL0JYca{$V--45%QA4vUIjs_l#q(tuo}z@lIud(MIs#7#?`gcxNyNDRDN^ z;vC)uoQEBvmdE_{7!Y09DQ@TaeIITT&tVq{;ARrTEv_Qm<|@T**J9l1+Jw7YSK@Bh zRk+91j(c5Ocqo(9x1U#_OG(p*Nn~DZVeLo~^bz?gi^#l0Q)Rsk(Dz?0s#1yIU5m(q z#PJ8x-0Qrnor8bkm-rO|^jDeHz&@_qZ;*m~*e{;Juh~*$J>oZ{Dqg4($!{(CDsi>o zcZ}JE*{*dqeO>McO2K~A getElementsNames(){ + List elements = new ArrayList<>(); + for (GraphElement el : this.elements ){ + elements.add(el.getElement()); + } + return elements; + } + } diff --git a/src/Game.java b/src/Game.java index ccb7058..4b00357 100644 --- a/src/Game.java +++ b/src/Game.java @@ -1,5 +1,9 @@ package it.arnaldo.unibs.tamagolem; +import it.kibo.fp.lib.Menu; + +import java.util.List; + public class Game { private final Player player1; private final Player player2; @@ -34,35 +38,32 @@ public class Game { public void start() { // N - int numberOfElements = worldBalance.getElements().size(); + numberOfElements = worldBalance.getElements().size(); // P - int numberOfStones = (int) Math.ceil((numberOfElements + 1) / 3.0) + 1; + numberOfStones = (int) Math.ceil((numberOfElements + 1) / 3.0) + 1; // G - int numberOfTamaGolems = (int) Math.ceil(((numberOfElements - 1) * (numberOfElements - 2)) / (2.0 * numberOfStones)); + numberOfTamaGolems = (int) Math.ceil(((numberOfElements - 1) * (numberOfElements - 2)) / (2.0 * numberOfStones)); // S - int totalNumberOfStones = (int) Math.ceil((2.0 * numberOfTamaGolems * numberOfStones)); + totalNumberOfStones = (int) Math.ceil((2.0 * numberOfTamaGolems * numberOfStones)); // Stones for each element - int numberOfStonesPerElement = totalNumberOfStones / numberOfElements; + numberOfStonesPerElement = totalNumberOfStones / numberOfElements; // deve essere uguale alla somma della potenza di tutti gli elementi - int totalPower = worldBalance.getTotalStrength(); - - System.out.println("Game started between " + player1.getName() + " and " + player2.getName()); - System.out.println("Number of stones: " + numberOfStones); - System.out.println("Number of elements: " + numberOfElements); - System.out.println("Number of TamaGolems for every player: " + numberOfTamaGolems); - System.out.println("Total number of stones: " + totalNumberOfStones); - System.out.println("Total number of stones for each element: " + numberOfStonesPerElement); - System.out.println("Total power: " + totalPower); - System.out.println("Life points: " + totalPower); - System.out.println("Press R to create a new game"); + totalPower = worldBalance.getTotalStrength(); + lifePoints = totalPower; } + public void start() { + setup(); + loop(); + worldBalance.printGraph(); + } + } diff --git a/src/GameLoop.java b/src/GameLoop.java new file mode 100644 index 0000000..0619953 --- /dev/null +++ b/src/GameLoop.java @@ -0,0 +1,46 @@ +package it.arnaldo.unibs.tamagolem; + +import it.kibo.fp.lib.InputData; +import it.kibo.fp.lib.Menu; + +public class GameLoop { + private Game game; + + public void start() { + String[] firstMenuEntries = {"New game"}; + Menu firstMenu = new Menu("TamaGolem", firstMenuEntries, true, true, false); + int firstmenuChoise; + + do { + createNewGame(); + game.start(); + firstmenuChoise = firstMenu.choose(); + } while (firstmenuChoise == 1); + } + + public void createNewGame() { + String[] diffucultyMenuEntries = {"Easy", "Medium", "Hard"}; + Menu difficultyMenu = new Menu("Select Mode", diffucultyMenuEntries, true, true, false); + + Player p1 = new Player(InputData.readNonEmptyString(""" + \s + Player 1: + \tChoose your name:\s""", true)); + + Player p2 = new Player(InputData.readNonEmptyString(""" + \s + Player 1: + \tChoose your name:\s""", true)); + + int difficultyChoise = difficultyMenu.choose(); + Modes difficulty = null; + + switch (difficultyChoise){ + case 1 -> difficulty = Modes.EASY; + case 2 -> difficulty = Modes.MEDIUM; + case 3 -> difficulty = Modes.HARD; + } + + game = new Game(p1, p2, WorldBuilder.buildWorld(difficulty)); + } +} diff --git a/src/LinearSystem.java b/src/LinearSystem.java index 750e34a..5f317d5 100644 --- a/src/LinearSystem.java +++ b/src/LinearSystem.java @@ -1,5 +1,7 @@ package it.arnaldo.unibs.tamagolem; +import it.kibo.fp.lib.RandomDraws; + import java.util.*; public class LinearSystem { @@ -30,12 +32,11 @@ public class LinearSystem { } int[] solutions; - Random rand = new Random(); int tries = 1000000; while (tries-- > 0) { int[] lambdaValues = new int[indipendentVariables]; for (int i = 0; i < indipendentVariables; i++) { - lambdaValues[i] = (rand.nextInt(m) + 1); // valori tra 1 e m + lambdaValues[i] = RandomDraws.drawInteger(1, m); } solutions = constructSolution(extendedMatrix, lambdaValues, rank); diff --git a/src/Modes.java b/src/Modes.java new file mode 100644 index 0000000..a3d9abd --- /dev/null +++ b/src/Modes.java @@ -0,0 +1,7 @@ +package it.arnaldo.unibs.tamagolem; + +public enum Modes { + EASY, + MEDIUM, + HARD +} diff --git a/src/TamaGolemMain.java b/src/TamaGolemMain.java index ee6e4d0..c7ed769 100644 --- a/src/TamaGolemMain.java +++ b/src/TamaGolemMain.java @@ -1,36 +1,8 @@ package it.arnaldo.unibs.tamagolem; -import java.util.*; - public class TamaGolemMain { public static void main(String[] args) { - Scanner sc = new Scanner(System.in); - - Game game; - - do { - System.out.println("TamaGolem"); - System.out.println(""" - - Player 1: - Choose your name - - """); - - Player p1 = new Player(sc.nextLine()); - - System.out.println(""" - - Player 2: - Choose your name - - """); - - Player p2 = new Player(sc.nextLine()); - - game = new Game(p1, p2, WorldBuilder.buildWorld()); - - game.start(); - } while (game.isRestart()); + GameLoop gameLoop = new GameLoop(); + gameLoop.start(); } } \ No newline at end of file diff --git a/src/WorldBuilder.java b/src/WorldBuilder.java index abb58e0..19a62d8 100644 --- a/src/WorldBuilder.java +++ b/src/WorldBuilder.java @@ -1,13 +1,21 @@ package it.arnaldo.unibs.tamagolem; +import it.kibo.fp.lib.RandomDraws; + import java.util.*; public class WorldBuilder { - public static ElementGraph buildWorld() { + public static ElementGraph buildWorld(Modes difficulty) { // genero un numero casuale che mi dice quanti elementi prendo Element[] allElements = Element.values(); - int numElements = (int)(Math.random() * 8) + 3; + int numElements = 0; + + switch (difficulty) { + case EASY -> numElements = RandomDraws.drawInteger(3, 5); + case MEDIUM -> numElements = RandomDraws.drawInteger(6, 8); + case HARD -> numElements = RandomDraws.drawInteger(9, 10); + } List selectedElements = new ArrayList<>(Arrays.asList(allElements)); Collections.shuffle(selectedElements); @@ -20,7 +28,6 @@ public class WorldBuilder { Map> linkDirections = generateValidDirections(selectedElements); - // Mappa indice per ogni coppia (non ordinata) di elementi Map, Integer> pairIndex = new HashMap<>(); int index = 0; @@ -48,7 +55,6 @@ public class WorldBuilder { } // sistema lineare per trovare le soluzioni che verificano l'equilibrio - try { LinearSystem system = new LinearSystem(numElements, A, b); int[] solution = system.resolve(); @@ -66,21 +72,15 @@ public class WorldBuilder { world.addElement(graphElement); } - world.printGraph(); return world; - }catch (Exception e){ - buildWorld(); + } catch (Exception e){ + return buildWorld(difficulty); } - - - return null; - } private static Map> generateValidDirections(List elements) { int n = elements.size(); - Random rand = new Random(); Map> linkDirections = new HashMap<>(); for (Element e : elements) { @@ -114,7 +114,7 @@ public class WorldBuilder { for (Pair pair : pairs) { Element e1 = pair.getFirst(); Element e2 = pair.getSecond(); - boolean dir = rand.nextBoolean(); + boolean dir = RandomDraws.estraiBoolean(); if (dir) { linkDirections.get(e1).put(e2, 1); linkDirections.get(e2).put(e1, -1);