From 89f2df488e87e2b8fa7b67df83838960e92d85b8 Mon Sep 17 00:00:00 2001 From: alberto brumana Date: Thu, 15 May 2025 18:45:52 +0200 Subject: [PATCH] javadoc --- .DS_Store | Bin 6148 -> 6148 bytes .idea/.gitignore | 8 +++ .idea/misc.xml | 6 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ TamaGolem.iml | 11 ++++ .../it/arnaldo/unibs/tamagolem/Element.class | Bin 1523 -> 0 bytes .../unibs/tamagolem/ElementGraph.class | Bin 3888 -> 0 bytes .../arnaldo/unibs/tamagolem/ElementLink.class | Bin 805 -> 0 bytes .../it/arnaldo/unibs/tamagolem/Game.class | Bin 9169 -> 0 bytes .../unibs/tamagolem/GraphElement.class | Bin 1844 -> 0 bytes .../it/arnaldo/unibs/tamagolem/Player.class | Bin 1562 -> 0 bytes .../arnaldo/unibs/tamagolem/TamaGolem.class | Bin 2422 -> 0 bytes .../unibs/tamagolem/TamaGolemMain.class | Bin 581 -> 0 bytes .../unibs/tamagolem/WorldBuilder.class | Bin 6244 -> 0 bytes src/.DS_Store | Bin 6148 -> 6148 bytes src/Element.java | 6 ++ src/ElementGraph.java | 50 ++++++++++++++- src/ElementLink.java | 30 +++++++++ src/FightEsit.java | 10 ++- src/Game.java | 56 +++++++++++++++++ src/GameLoop.java | 15 +++++ src/GraphElement.java | 39 ++++++++++++ src/LinearSystem.java | 59 ++++++++++++++++++ src/Modes.java | 10 +++ src/Pair.java | 29 +++++++++ src/Player.java | 43 +++++++++++++ src/TamaGolem.java | 53 ++++++++++++++++ src/TamaGolemMain.java | 8 +++ src/WorldBuilder.java | 19 ++++++ 30 files changed, 464 insertions(+), 2 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 TamaGolem.iml delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/GraphElement.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolemMain.class delete mode 100644 out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class diff --git a/.DS_Store b/.DS_Store index 223bc7b7dd0628a0a4417e0b3acf246597119162..a6bbf1b5823dd2649d9e258eea8dfdcce47d9ed5 100644 GIT binary patch delta 21 ccmZoMXffDe!^~l1ZmOeTY+<uiv;Y7A delta 21 ccmZoMXffDe!_1*;YM`TFYHYOGh53L806+8vrT_o{ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eeb80f7 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7646ad8 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TamaGolem.iml b/TamaGolem.iml new file mode 100644 index 0000000..e217c06 --- /dev/null +++ b/TamaGolem.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Element.class deleted file mode 100644 index 9f2bd764275091f0723fa86f9d9aead4b73e7a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1523 zcma)5ZBNrs6n?t5cI6^cDAPaYf?LXv&;e(sjw$jK9Ed{uiBz z5{-t>CjKSkxo0)bXd+v3PoL*L=jEPz?zbPGz5=*~vWkd;F|U<%n}O>;Yh>Gjx3QgV zxpjB5;n(Wf0xh+mm4t$rKpY7L`_}WNrKhV8!bQQj_5T1l89@_B$_TMlyIhb&pMa2r zx?Ct1&7v*2eF6iL>s!q)Sw-7f$(yX*FOXvA_5Av}6dn{fB#GpLZP`nuVu{@k3moB) zD`orPvi(phhXszZ>tfMj(J_HhNyH20y+T<^P6(W2W+88ytT`nxjtQ!5d@XN1C^!lx z9_{6zIwp};F(Ht_6s4&8ji5%=rZd)-`_j$&Zm^lPH@0fkR!+xRoKrC^ki~gA`fouY zXxAzCOV@AL?B@zDr+d6j-`(EM^$?m)-V8DT$G;$O5tkGsX1%~`%_$h{4HbG8 zGiw^+IyK^ghNK3eVL(Gl!yyevG#u41s^O&E&kHQTlx^YKwiQgKGka3+MbxF<`8#hPV9m(vv%@&qwrfki|A0;Lk|AnH_N9jHzv z-k}ax5*_qA6}1Dysc0P>a4H5-gJg&sB17Z|nPdmYoxcyQp@iiy*Y_~jo6nRfbvgPG zSKcGa;A)J4%HUd@fzIH1f^4{jOL84a)i+>BguZp zcQF4RW3qAGdzwZceaFyGcRNfCn}kZ;){v*0D?!I&+TWrZc}0rX)cZ)-P#Y`c7s36X DsE96V diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementGraph.class deleted file mode 100644 index bd899602dab28d44a1421d990bfe7c1a4f3aec43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3888 zcmb7HTXP%b8Gb&U)?RNC+rbWwAyJIavLgbC36^V;ID{BvCq=G46q#QlLkAfb=laI}bBlw4K%vn07k7>@R3?8QETKHE#1CC4n}-E_sV=gVo&ESgJh!78R7 z=ZEEZPn68nWq}4Ocq|L-%WnIo-%Jx)(5hj-fqT#ZD42F+_LPSS5`V91AKtNxzJasJ4OV@V?G@~PhAq~R@j!L|` z?ry>cTQ5}1LRp4>(7-V~Bw#Rf)^=8A%|gXu_WiqwJuumb<2a#V#K0psSx2VadfBsz z1kSAxzP6wPwwu0KvK=qyl`ON!+((hoFlOKjAl*V#q=M}%u>or`p9_l;jytqGbQD-* zT1oO#22SIQz=5Kz8F&Kc1@`+C zsjq=4uF8rE&MmC0dYzRhKWX48WXVc}GE-=&GRL1P$$Smd%Ds+`ufUr`G6QBG%anJhfvGl}lzPl&U%dlX7v$m0qi$X|d!MYfs&~@xpF-Zp~y* z&NCNQrp#3ZY18&jB(h_-PR;+VtCR4^aaqjC^g*csRL${v|9WqHePzPvAiAL{rK z-q!GAxt)I^(CyExzkh6J&0Vq5!4e4;_Bn=hOX~vfhS!Wz44j@foqWM6cV}I9rLvj{ ztsb?FLML^GGeq?c>i>Irg_E2x3xymn7nuh9j1zcSJeU0B+S{CiNyo8D69uzew#piA z2=v@m;GOc;@C$)MJF9Z*21VisZ(I@n#F16<&c*Mme2QQN4U~DI<7a^nuL{5|y4O*BVv zY1@~)QcCM4?D74ytLMOvd{c%;PlCTy73J~Q)QQt-M0&i5c7f^Pn>Z+N1Kkvo0)IyL zXsjc)iQd#E25&&`hz)Hb{r<+*-=pu-G74EoyYHo$m$()T5|v}THy%fupT{7pJB0mM zWAvDer7Dxsi+G8dNNJr?1TRxI5d9By4V}H8@~L+Lm}b^mv93e zA@JfVM9`M6@%`7UO%W+d4b;D0D>+Lj{gT%xB>j@7SYz+>@9^;Ohj{cOUf8jT37$>* z7)d~s$*7cko2k)wM|=|(MicVu;)q7;)|vPp5t)m2Byw}HHtj>q<~DKp(#FJ5XRqVi^d=K~PbGHZW8^tui`m=L>)cK+ z#q@e_Vu`b}vGqwx(kK?<@Cd7Zgh-!cf{)^1-i_r<$`pIppKB_`6Dq|940DFBGo9~H zOHOWZ@&+Y|?Orfx-i~;OBBV*RC*I`Sw`w!^Po}R?cd?dsZ3buVJcA@%jfx~)bzr5G zl=Ph<2NR?s3CoFXl=4Lm?B6!F-V4oamp=yMWZPq$*;Aad(|CqE>v`TYO`PN1?z~_7 zak41OnU;J?P0(MP_yO{TmTE)lqzx_7Qv!-{-g7 Vnm^$GpW+=p>6G5Z&+$ui{1>}d%MAbk diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/ElementLink.class deleted file mode 100644 index 8daf6c4f117f2ac80807e3c2ab43a6783fc9be13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcma)4+iKfD5Irl)R-($bq9(niS183cCHjDrwop6jKT{hMnExnRCv}=;yERKLEVKBOeYL9^3#;v=qVr*q9ssbZiTg z&F!&5du;XW^qu}xd-KQnvY45-iMS6}#=0lV!V?bE;W8aWvJ~DTnJ%LX4jx-PBfdV$ zrWw0~YpB8Q6}-XoE4056a&VJp!~%fdg6x>T4t#7Ad0drY2eG5(ZU5O{j1e_lStc)#CQWU&UMhEZ+U2d_WRW4n_Ghd diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Game.class deleted file mode 100644 index 77c3560065c70cff0c904270889420b4227f0601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9169 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 J0>!3q?Gxokn=k+X diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/Player.class deleted file mode 100644 index 14d839eba615cdb4182903cd8ae268bf4592d675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1562 zcmb7^ZBNrs6vzK}>sD6^RA4ai0T6_3DE0YiJZjLGOf(r{^xfUo%wpG(t|RhM^b7dL z7nlenniyaEp^WF=7FGdqzPY=-J?D4+=YM+l^Viq!02VN(A%?gLMMnZj24kIXa?{~% z&3sl~w<2lKIk;c1LX|4 zY-b>0IHRv>va@g+OYkW~O3??qoektV2tiVj4o}At^{2^ z+VzRc0ftNRbP_7<6PThkOD8W7m+|TR9$0>Q2WtKsx?k;~cL&C2nUa$bh1L`lXtZ`= zfY5n584Qv!jmz`|q-9a+6jv}4mN4m;(Yr+c3)F4e#2}DKdDts4dJqs|7))HHD4{Q! zY#dJRKPEY7^BMuK;|8q)QX-g8kRb)eE(YEs!M4RdzKhHcoD;5 z{7fkBri^7m@h#jA3p}6#!gWnRr+0DTW!pOO-wBM6ZKDy(v;)gD+`(PqFx>kq@8S{O xIPoU_!Mjh51O_ZiK463fe1NKagcAQGn`uvDD$=kKX*hvc&!Ui6poAD^e*;+ALsb9( diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/TamaGolem.class deleted file mode 100644 index 82069e9f02c582d4e06923f3ab6c4ca5ca15d992..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2422 zcma)7TT>iG6#jZI4D8N^J4lcSk;}5gj2dGMOOSiAx+Lf#2=UhJwlHCKW}WG!ihp8R zrLVsD5UpH_SY`R_kFq>HGua&$3Mq=-?lXP9^POw|^Y5#_0DO!}3NgerBy=Rv#?bYI zA92It_P+6G?};c&hPFA=Hsw4+JUhMBfp&CgNa;vJXBao7!CjkM700OC=ALIrUgi6a zC91|I?e41`L&`G07aNXgOOJsSG+bfm^DWh-X&H;I%a2#Y4|S13261JhTSpIi89D_4 z2wQTiBpq9jdUvs@=kh*Vm>6LDUtF!W~w&4_dP>0PBftm93LFleT? zTCK@r-&Oz1TRKKD#*lVJ)j1Mtrt48e`m)n!p)|bBaQ%XKtOlMagA+O?F~!g>osx7- zd%qPkkmh?RN7FiTm|+;K@YXZ4sL2Nbi9lA zPNlkZ>`9fUxKk(h`U5o6F*b;sByGW~`4nYkB83ldTf>Js?%*SaUO&{QFH#t5O3kuc zLjIcA7DGqL+_$-`yMp0PV9hTCKc92O{|{n*KF^TI7N!X-vFua`r?Y6<;$gkIC)`cG zXOX0*=#;s&#a&aKLt#Q5m{diR7a3_(E*a_B7c$ITvj%%#7eJFWUA=o&dTC#}sYFkk zVVKHZL^8acS0PAxsyV0~FQY&$RQE)yu}LC-iMTW9K`T`Jeq_j$BrhMX^I90+48^M$ z>2?|#1xh$cSJY%6k}7SxG*&9%nYwP#GLPs>(k~nu7bU0emZ{rR7Oyn2aZ^Q}H_6u${t}*wL`7n&mMC!Y@p}(@p!xITS`veL?@M@v?MWYV#kXBO$yP zfIi@M#S-3l(Qyvzwfx!sibzf=ZXVafIoBUY?gxW4AMMZ(Vwqc3$&@1Bj;|SpiW{?| z?8ay#Ril2Iy;(+CDA=}emo4sj!qe~_!^9bv&+|mX9>cYZuTpLTw=qUNAEOx*qhU;ZETfr)=3S@<}lwZ06nK?mU4BJh5>PZBVQj@w#OK;H9v4;DE#P9%x5V0O2W)gqL1W`t*3x zsxo=~N7lK8IdeKr4uQqLnTat~WTi?qY3kp7f z4<*jFl_E$n7c{f z&R{fK0}~d*u~05gC67jlJC(wpxQfR-OrjumyF3oOBzdx7!q8#EfuqT}iQ=g;QDSJW zneP*+t4TLpNQUfXG71>Vo{+)qH1>nE&;5uxRWBLxXuwmU>t!>m9>s*A?fuuFLk{uW zsNQ_=R=f99DrDGc4M^u{NX*(FGJ_Q^*JWs|GyS<0^0Rx%G#v(4V!p+%bx-vHaD*bg ziT*O6YeSx5nJSkuqnvBcz+UEZg`$=L1Dh0`#Sf^WMpXe@*rtviz9yK47T;ms&rtAA kUSY2wB?1r`7U3LvG!3gS1}N`PWs$mzJ;E{UQ=P%VH>~f1+yDRo diff --git a/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class b/out/production/TamaGolem/it/arnaldo/unibs/tamagolem/WorldBuilder.class deleted file mode 100644 index 5634304bff35ca98508db645755ac143075e059c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6244 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 diff --git a/src/.DS_Store b/src/.DS_Store index 8c15829406568491287e282816dcdd5f179eb1ca..bacaa7c7014095d8c9cbda250602c86d411b8eb4 100644 GIT binary patch literal 6148 zcmeHKJxc>Y5Pcg{Bt|5$vb1S8m8V`=Hnv$XU#=$qY9 zHy@r>A~FLrZ?m^=X7`2Ly#?S}ll}%!2T-94mX{e8m^>Gsvy%2yiO%O3;0iZr;vCuB zXzMTqOo6|qfV{ga=wOHeF6p1|?=7;O;pn6{9Q8OxHi&I{^VJ($Kx2m2#hCB?HBNO0 zSe)TL%21!lu!}R!;G&TK6!EL*vZBm8>^Tc7y3L5uAme?OKVG$ah%(f$Pqi}KvFf<6 z?sLRi#i5^R#`+^wyI{_xt%$p}fV;l?NQ0Ov<^kD5 Pvkw6;g9TIIR~2{zv(TA0 delta 317 zcmZoMXfc=|#>B)qu~2NHo}wr-0|Nsi1A_oVQcivnkSzejjvEV?Gjf7tm>4n{N+xTt z$k&5eN#(@_P<1Nmj{<5mXsDdB^E`4cp>@u zIY}^fVp3RUYI(eXh;x2kNn&PRY7tmNW=bkhNlbWVUP^wsQ+{b)N-xqpRo1r-iqFo;&CBlsIvWTWft~^bUMLNt zx`7O^XUc+$@^bR?(t&)&&4L_aEE5|ZZf57;=Kux{kpG=|GQWr;2S^*xD3;9;B5Rld DfWJ*N diff --git a/src/Element.java b/src/Element.java index 07a7175..e46c6b9 100644 --- a/src/Element.java +++ b/src/Element.java @@ -1,5 +1,11 @@ package it.arnaldo.unibs.tamagolem; +/** + * Enum che rappresenta gli elementi utilizzabili nel gioco TamaGolem. + * Ogni elemento può interagire con altri generando effetti positivi o negativi nei combattimenti. + * + * Gli elementi vengono selezionati in modo casuale a seconda della difficoltà scelta all'inizio del gioco. + */ public enum Element { ZANG_TUNG_TUNG, TORE, diff --git a/src/ElementGraph.java b/src/ElementGraph.java index f5edef9..25969c6 100644 --- a/src/ElementGraph.java +++ b/src/ElementGraph.java @@ -2,17 +2,39 @@ package it.arnaldo.unibs.tamagolem; import java.util.*; - +/** + * Rappresenta il grafo degli elementi del gioco, dove i nodi sono {@link GraphElement} + * e gli archi rappresentano interazioni (positive o negative) tra elementi. + */ public class ElementGraph { + + /** Insieme degli elementi (nodi) presenti nel grafo */ private final Set elements; + /** + * Costruttore della classe ElementGraph. + * Inizializza un nuovo grafo vuoto. + */ public ElementGraph() { this.elements = new HashSet<>(); } + + /** + * Aggiunge un nuovo elemento al grafo. + * + * @param element L'elemento da aggiungere + */ public void addElement(GraphElement element) { elements.add(element); } + /** + * Restituisce il valore dell'interazione tra due elementi. + * + * @param fromElement L'elemento di partenza + * @param toElement L'elemento di arrivo + * @return Il valore dell'interazione + */ public int getValue(Element fromElement, Element toElement) { for (GraphElement graphElement : elements) { if (graphElement.getElement().equals(fromElement)) { @@ -22,10 +44,18 @@ public class ElementGraph { return 0; } + /** + * Restituisce l'insieme di tutti gli elementi presenti nel grafo. + * + * @return Set di {@link GraphElement} + */ public Set getElements() { return elements; } + /** + * Stampa a schermo la matrice delle interazioni tra tutti gli elementi del grafo. + */ public void printGraph() { System.out.println("From element is the row name, to element is the column name"); List elements = getElementsNames(); // lista ordinata degli elementi @@ -59,6 +89,11 @@ public class ElementGraph { } + /** + * Calcola la forza totale di tutte le interazioni del grafo. + * + * @return La somma dei valori assoluti di tutte le interazioni tra elementi + */ public int getTotalStrength(){ int totalStrength = 0; @@ -69,6 +104,11 @@ public class ElementGraph { return totalStrength; } + /** + * Restituisce una lista ordinata degli elementi contenuti nel grafo. + * + * @return Lista di oggetti {@link Element} + */ public List getElementsNames(){ List elements = new ArrayList<>(); for (GraphElement el : this.elements ){ @@ -77,6 +117,14 @@ public class ElementGraph { return elements; } + /** + * Restituisce il valore di interazione tra due elementi. + * Metodo alternativo a {@link #getValue}, ma lavora direttamente con i link. + * + * @param fromElement L'elemento di partenza + * @param toElement L'elemento di destinazione + * @return Il valore dell'interazione + */ public int getInteractionBetween(Element fromElement, Element toElement) { for (GraphElement el : elements) { if (el.getElement().equals(fromElement)){ diff --git a/src/ElementLink.java b/src/ElementLink.java index f95ff4e..6fdbefb 100644 --- a/src/ElementLink.java +++ b/src/ElementLink.java @@ -1,22 +1,52 @@ package it.arnaldo.unibs.tamagolem; +/** + * Rappresenta un collegamento (arco) tra due elementi nel grafo delle interazioni. + * Ogni collegamento ha un valore numerico che indica la forza (positiva o negativa) dell'interazione. + */ public class ElementLink { + + /** Valore dell'interazione tra elementi */ private final int value; + + /** L'elemento verso cui punta il collegamento */ private final Element element; + /** + * Costruttore della classe ElementLink. + * + * @param value Il valore dell'interazione + * @param element L'elemento collegato + */ public ElementLink(int value, Element element) { this.value = value; this.element = element; } + /** + * Restituisce il valore dell'interazione. + * + * @return Il valore numerico dell'interazione + */ public int getValue() { return value; } + /** + * Restituisce l'elemento collegato. + * + * @return L'elemento di destinazione del collegamento + */ public Element getElement() { return element; } + /** + * Restituisce la forza dell'interazione solo se positiva. + * Le interazioni negative non vengono conteggiate nel calcolo della forza totale. + * + * @return Il valore dell'interazione se positivo, altrimenti 0 + */ public int getTotalStrength() { return value >= 0 ? value : 0; } diff --git a/src/FightEsit.java b/src/FightEsit.java index 77ed26e..fdde69a 100644 --- a/src/FightEsit.java +++ b/src/FightEsit.java @@ -1,5 +1,13 @@ package it.arnaldo.unibs.tamagolem; +/** + * Enum che rappresenta l'esito di un combattimento tra due TamaGolem. + */ public enum FightEsit { - GOLEM1, GOLEM2 + + /** Indica che ha vinto il TamaGolem del primo giocatore */ + GOLEM1, + + /** Indica che ha vinto il TamaGolem del secondo giocatore */ + GOLEM2 } diff --git a/src/Game.java b/src/Game.java index 23bcdc5..de7a925 100644 --- a/src/Game.java +++ b/src/Game.java @@ -8,6 +8,10 @@ import java.util.HashMap; import java.util.List; import java.util.Scanner; +/** + * Rappresenta una partita tra due giocatori nel gioco TamaGolem. + * Si occupa della configurazione, dello svolgimento e della gestione dei combattimenti. + */ public class Game { private final Player player1; private final Player player2; @@ -21,6 +25,13 @@ public class Game { private int lifePoints; private HashMap stonesPerElement; + /** + * Costruisce una nuova istanza di gioco. + * + * @param player1 Il primo giocatore + * @param player2 Il secondo giocatore + * @param worldBalance Il grafo degli elementi e delle loro interazioni + */ public Game(Player player1, Player player2, ElementGraph worldBalance) { this.player1 = player1; this.player2 = player2; @@ -28,18 +39,25 @@ public class Game { this.stonesPerElement = new HashMap<>(); } + /** @return Il primo giocatore */ public Player getPlayer1() { return player1; } + /** @return Il secondo giocatore */ public Player getPlayer2() { return player2; } + /** @return Il grafo degli elementi e delle loro interazioni */ public ElementGraph getWorldBalance() { return worldBalance; } + /** + * Gestisce il ciclo principale del gioco, in cui i golem vengono configurati e combattono tra loro. + * Termina quando uno dei giocatori non ha più golem disponibili o sceglie di uscire. + */ private void loop(){ // setup dei tamagolem boolean golem1Setupped = setupGolem(player1.getNextTamaGolem(), player1); @@ -99,6 +117,13 @@ public class Game { next(); } + /** + * Configura un nuovo TamaGolem per un giocatore, permettendo di assegnare pietre elementali. + * + * @param golem Il TamaGolem da configurare + * @param player Il giocatore proprietario del golem + * @return true se la configurazione è andata a buon fine, false se l’utente ha scelto di uscire + */ private boolean setupGolem(TamaGolem golem, Player player) { System.out.println(PrettyStrings.frame("Setting up " + player.getName() + " TamaGolem", 30, true, true)); System.out.println("You can assign " + numberOfStones + " stones to your tamaGolem"); @@ -133,11 +158,20 @@ public class Game { return true; } + /** + * Rimuove i TamaGolem morti dalla lista di ciascun giocatore. + * + * @param p1 Primo giocatore + * @param p2 Secondo giocatore + */ private void checkDeathsTamagolems(Player p1, Player p2) { p1.getTamaGolems().removeIf(tg -> !tg.isAlive()); p2.getTamaGolems().removeIf(tg -> !tg.isAlive()); } + /** + * Configura i parametri iniziali del gioco: numero di elementi, pietre, golem, punti vita, ecc. + */ private void setup() { // N numberOfElements = worldBalance.getElements().size(); @@ -176,6 +210,9 @@ public class Game { } + /** + * Avvia il gioco: setup iniziale, ciclo di gioco e stampa finale del grafo. + */ public void start() { setup(); loop(); @@ -183,10 +220,20 @@ public class Game { next(); } + /** + * Verifica se uno dei due giocatori ha perso tutti i propri golem. + * + * @return true se uno dei due ha perso, false altrimenti + */ private boolean checkVictory(){ return !(player1.isAlive() && player2.isAlive()); } + /** + * Genera il menu delle pietre elementali disponibili, con conteggio residuo. + * + * @return Array di stringhe da usare nel menu + */ private String[] getMenuOptions() { List elementsNames = worldBalance.getElementsNames(); String[] menuOptions = new String[numberOfElements]; @@ -198,6 +245,12 @@ public class Game { return menuOptions; } + /** + * Esegue il combattimento tra due TamaGolem. + * Ogni turno entrambi usano una pietra, viene calcolato il danno, e si continua finché uno muore. + * + * @return L’esito del combattimento: GOLEM1 o GOLEM2 + */ public FightEsit fight() { TamaGolem golem1 = player1.getNextTamaGolem(); TamaGolem golem2 = player2.getNextTamaGolem(); @@ -225,6 +278,9 @@ public class Game { return FightEsit.GOLEM2; } + /** + * Attende che l'utente prema INVIO per continuare. + */ public void next(){ Scanner reader = new Scanner(System.in); System.out.print("Press ENTER to continue... "); diff --git a/src/GameLoop.java b/src/GameLoop.java index a8e1b55..bc667af 100644 --- a/src/GameLoop.java +++ b/src/GameLoop.java @@ -4,9 +4,19 @@ import it.kibo.fp.lib.InputData; import it.kibo.fp.lib.Menu; import it.kibo.fp.lib.PrettyStrings; +/** + * Classe che gestisce il ciclo principale del gioco e l'interazione iniziale con i giocatori. + * Si occupa della creazione di una nuova partita e dell'avvio del gioco. + */ public class GameLoop { + + /** Riferimento all'istanza corrente del gioco */ private Game game; + /** + * Avvia il menù iniziale e gestisce l'avvio di nuove partite. + * Permette ai giocatori di creare una nuova partita e selezionare la difficoltà. + */ public void start() { String[] firstMenuEntries = {"New game"}; Menu firstMenu = new Menu("TamaGolem", firstMenuEntries, true, true, false); @@ -21,6 +31,11 @@ public class GameLoop { } while (firstmenuChoise == 1); } + /** + * Crea una nuova partita chiedendo i nomi dei due giocatori e la modalità di difficoltà. + * + * @return true se la partita è stata creata con successo, false altrimenti + */ public boolean createNewGame() { String[] diffucultyMenuEntries = {"Easy", "Medium", "Hard"}; Menu difficultyMenu = new Menu("Select Mode", diffucultyMenuEntries, true, true, false); diff --git a/src/GraphElement.java b/src/GraphElement.java index f9444ab..e30855c 100644 --- a/src/GraphElement.java +++ b/src/GraphElement.java @@ -3,27 +3,61 @@ package it.arnaldo.unibs.tamagolem; import java.util.HashSet; import java.util.Set; +/** + * Rappresenta un nodo (elemento) nel grafo degli elementi, con i relativi collegamenti ad altri elementi. + * Ogni collegamento è rappresentato da un oggetto {@link ElementLink}. + */ public class GraphElement { + + /** L'elemento associato a questo nodo del grafo */ private final Element element; + + /** Insieme dei collegamenti ad altri elementi */ private final Set links; + /** + * Costruttore della classe GraphElement. + * + * @param element L'elemento rappresentato da questo nodo + */ public GraphElement(Element element) { this.element = element; this.links = new HashSet<>(); } + /** + * Restituisce l'elemento associato a questo nodo. + * + * @return L'elemento di tipo {@link Element} + */ public Element getElement() { return element; } + /** + * Restituisce l'insieme dei collegamenti a elementi adiacenti. + * + * @return Un insieme di oggetti {@link ElementLink} + */ public Set getLinks() { return links; } + /** + * Aggiunge un collegamento (link) a questo nodo del grafo. + * + * @param link Il collegamento da aggiungere + */ public void addLink(ElementLink link) { links.add(link); } + /** + * Restituisce il valore del collegamento con un altro elemento. + * + * @param element L'elemento adiacente di cui cercare il collegamento + * @return Il valore associato al collegamento + */ public int getLinkValue(Element element) { for (ElementLink link : links) { if (link.getElement().equals(element)) { @@ -33,6 +67,11 @@ public class GraphElement { return 0; } + /** + * Calcola la forza totale di tutti i collegamenti dell'elemento. + * + * @return La somma delle forze di tutti i collegamenti + */ public int getTotalStrength(){ int strength = 0; for (ElementLink link : links) { diff --git a/src/LinearSystem.java b/src/LinearSystem.java index 5f317d5..8f19fb5 100644 --- a/src/LinearSystem.java +++ b/src/LinearSystem.java @@ -4,12 +4,31 @@ import it.kibo.fp.lib.RandomDraws; import java.util.*; +/** + * Rappresenta un sistema lineare di equazioni intere utilizzato per determinare le interazioni tra elementi. + * Risolve il sistema tramite eliminazione di Gauss e genera soluzioni intere positive casuali. + */ public class LinearSystem { + + /** Numero di equazioni */ private final int n; + + /** Numero di incognite (pari a n*(n-1)/2) */ private final int m; + + /** Matrice dei coefficienti (dimensione n x m) */ private final int[][] A; + + /** Vettore dei termini noti */ private final int[] b; + /** + * Costruttore della classe LinearSystem. + * + * @param n Numero di equazioni + * @param A Matrice dei coefficienti + * @param b Vettore dei termini noti + */ public LinearSystem(int n, int[][] A, int[] b) { this.n = n; this.m = (n * (n - 1)) / 2; @@ -17,6 +36,12 @@ public class LinearSystem { this.b = b; } + /** + * Risolve il sistema lineare cercando una soluzione intera positiva non nulla. + * + * @return Un array di interi con la soluzione del sistema + * @throws IllegalStateException Se non esiste una soluzione intera positiva valida + */ public int[] resolve() { int[][] extendedMatrix = new int[n][m + 1]; @@ -46,6 +71,12 @@ public class LinearSystem { throw new IllegalStateException("Impossibile trovare una solutions intera senza zeri"); } + /** + * Verifica che tutti i numeri della soluzione siano maggiori di zero. + * + * @param x Soluzione da verificare + * @return true se tutti i valori sono positivi, false altrimenti + */ private boolean validNumbers(int[] x) { for (int xi : x) { if (xi <= 0) return false; @@ -54,6 +85,14 @@ public class LinearSystem { return true; } + /** + * Costruisce una soluzione completa del sistema a partire da parametri liberi e matrice estesa. + * + * @param extendedMatrix La matrice aumentata del sistema + * @param parameters Valori delle variabili libere + * @param rank Grado del sistema + * @return Un array contenente la soluzione del sistema + */ private int[] constructSolution(int[][] extendedMatrix, int[] parameters, int rank) { int[] x = new int[m]; Arrays.fill(x, 0); @@ -93,6 +132,12 @@ public class LinearSystem { return x; } + /** + * Applica l'eliminazione di Gauss per determinare il rango della matrice. + * + * @param mat Matrice aumentata da trasformare + * @return Il rango della matrice + */ private int gauss(int[][] mat) { int row = 0; for (int col = 0; col < m && row < n; col++) { @@ -130,10 +175,24 @@ public class LinearSystem { return row; } + /** + * Calcola il Massimo Comun Divisore (MCD) tra due numeri. + * + * @param a Primo numero + * @param b Secondo numero + * @return Il MCD + */ private int mcd(int a, int b) { return b == 0 ? a : mcd(b, a % b); } + /** + * Calcola il Minimo Comune Multiplo (MCM) tra due numeri. + * + * @param a Primo numero + * @param b Secondo numero + * @return Il MCM + */ private int mcm(int a, int b) { return a / mcd(a, b) * b; } diff --git a/src/Modes.java b/src/Modes.java index a3d9abd..7b58b15 100644 --- a/src/Modes.java +++ b/src/Modes.java @@ -1,7 +1,17 @@ package it.arnaldo.unibs.tamagolem; +/** + * Enum che rappresenta i livelli di difficoltà disponibili nel gioco TamaGolem. + * Ogni modalità influenza il numero di elementi usati nel grafo delle interazioni. + */ public enum Modes { + + /** Modalità facile: numero ridotto di elementi (3-5) */ EASY, + + /** Modalità media: numero intermedio di elementi (6-8) */ MEDIUM, + + /** Modalità difficile: numero elevato di elementi (9-10) */ HARD } diff --git a/src/Pair.java b/src/Pair.java index a0bc753..31cf88d 100644 --- a/src/Pair.java +++ b/src/Pair.java @@ -1,22 +1,51 @@ package it.arnaldo.unibs.tamagolem; +/** + * Rappresenta una coppia di elementi (ad esempio per descrivere un'interazione tra due elementi). + * È una classe semplice contenente due riferimenti a oggetti di tipo {@link Element}. + */ public class Pair { + + /** Primo elemento della coppia */ private final Element first; + + /** Secondo elemento della coppia */ private final Element second; + /** + * Costruttore della classe Pair. + * + * @param first Il primo elemento della coppia + * @param second Il secondo elemento della coppia + */ Pair(Element first, Element second) { this.first = first; this.second = second; } + /** + * Restituisce il primo elemento della coppia. + * + * @return Il primo elemento + */ public Element getFirst() { return first; } + /** + * Restituisce il secondo elemento della coppia. + * + * @return Il secondo elemento + */ public Element getSecond() { return second; } + /** + * Restituisce una rappresentazione testuale della coppia di elementi. + * + * @return Una stringa nel formato "(elemento1, elemento2)" + */ @Override public String toString(){ return "(" + first.toString() + ", " + second.toString() + ")"; diff --git a/src/Player.java b/src/Player.java index 97b8357..96bb1da 100644 --- a/src/Player.java +++ b/src/Player.java @@ -2,23 +2,51 @@ package it.arnaldo.unibs.tamagolem; import java.util.ArrayList; +/** + * Rappresenta un giocatore nel gioco TamaGolem. + * Ogni giocatore ha un nome e una lista di TamaGolem a disposizione. + */ public class Player { + + /** Nome del giocatore */ private final String name; + + /** Lista dei TamaGolem appartenenti al giocatore */ private final ArrayList tamaGolems; + /** + * Costruttore della classe Player. + * + * @param name Il nome del giocatore + */ public Player(String name) { this.name = name; this.tamaGolems = new ArrayList<>(); } + /** + * Restituisce il nome del giocatore. + * + * @return Il nome del giocatore + */ public String getName() { return name; } + /** + * Restituisce la lista dei TamaGolem del giocatore. + * + * @return Una lista di TamaGolem + */ public ArrayList getTamaGolems() { return tamaGolems; } + /** + * Restituisce il prossimo TamaGolem disponibile (il primo nella lista). + * + * @return Il prossimo TamaGolem, oppure null se la lista è vuota + */ public TamaGolem getNextTamaGolem() { if (tamaGolems.isEmpty()) { return null; @@ -27,14 +55,29 @@ public class Player { } } + /** + * Aggiunge un TamaGolem alla lista del giocatore. + * + * @param t Il TamaGolem da aggiungere + */ public void addTamaGolem(TamaGolem t) { tamaGolems.add(t); } + /** + * Rimuove un TamaGolem dalla lista del giocatore. + * + * @param t Il TamaGolem da rimuovere + */ public void removeTamaGolem(TamaGolem t) { tamaGolems.remove(t); } + /** + * Verifica se il giocatore ha ancora almeno un TamaGolem vivo. + * + * @return true se ha ancora golem disponibili, false altrimenti + */ public boolean isAlive() { return !tamaGolems.isEmpty(); } diff --git a/src/TamaGolem.java b/src/TamaGolem.java index fc09da9..d6c7852 100644 --- a/src/TamaGolem.java +++ b/src/TamaGolem.java @@ -3,23 +3,52 @@ package it.arnaldo.unibs.tamagolem; import java.util.ArrayDeque; import java.util.Deque; +/** + * Rappresenta un TamaGolem, ovvero una creatura che combatte usando pietre elementali. + * Ogni TamaGolem ha dei punti vita e una coda di pietre che utilizza ciclicamente in battaglia. + */ public class TamaGolem { + + /** Coda di pietre elementali che il TamaGolem utilizza nei combattimenti */ private final Deque elementalStones; + + /** Punti vita del TamaGolem */ private int lifePoints; + /** + * Costruttore della classe TamaGolem. + * + * @param lifePoints I punti vita iniziali del TamaGolem + */ public TamaGolem(int lifePoints) { this.lifePoints = lifePoints; this.elementalStones = new ArrayDeque<>(); } + /** + * Restituisce la coda di pietre elementali del TamaGolem. + * + * @return Una Deque contenente le pietre elementali + */ public Deque getElementalStones() { return elementalStones; } + /** + * Aggiunge una pietra elementale alla coda del TamaGolem. + * + * @param stone La pietra da aggiungere + */ public void addElementalStone(Element stone) { elementalStones.add(stone); } + /** + * Utilizza la prima pietra elementale nella coda e la reinserisce in fondo, + * simulando un utilizzo ciclico. + * + * @return La pietra utilizzata, oppure null se la coda è vuota + */ public Element useElementalStone() { if (!elementalStones.isEmpty()) { Element removedStone = elementalStones.removeFirst(); @@ -29,24 +58,48 @@ public class TamaGolem { return null; } + /** + * Restituisce i punti vita attuali del TamaGolem. + * + * @return I punti vita rimanenti + */ public int getLifePoints() { return lifePoints; } + /** + * Applica un danno al TamaGolem, riducendone i punti vita. + * + * @param damage Quantità di danno da applicare + * @return true se il TamaGolem è morto (punti vita ≤ 0), false altrimenti + */ public boolean getDamage(int damage) { lifePoints -= damage; return lifePoints <= 0; } + /** + * Verifica se il TamaGolem è ancora vivo. + * + * @return true se i punti vita sono maggiori di zero, false altrimenti + */ public boolean isAlive() { return lifePoints > 0; } + /** + * Restituisce una rappresentazione testuale dello stato del TamaGolem. + * + * @return Una stringa con i punti vita e le pietre elementali + */ @Override public String toString() { return "LP: " + lifePoints + ", Elemental stones:" + elementalStones.toString(); } + /** + * Stampa a console lo stato corrente del TamaGolem. + */ public void print() { System.out.println(toString()); diff --git a/src/TamaGolemMain.java b/src/TamaGolemMain.java index c7ed769..ead0c0c 100644 --- a/src/TamaGolemMain.java +++ b/src/TamaGolemMain.java @@ -1,6 +1,14 @@ package it.arnaldo.unibs.tamagolem; +/** + * Classe principale del programma TamaGolem. + * Avvia il gioco creando un'istanza del {@link GameLoop} e chiamando il metodo {@code start()}. + */ public class TamaGolemMain { + + /** + * Metodo main del programma. Punto di ingresso dell'applicazione. + */ public static void main(String[] args) { GameLoop gameLoop = new GameLoop(); gameLoop.start(); diff --git a/src/WorldBuilder.java b/src/WorldBuilder.java index 41e9a03..0ebe6d8 100644 --- a/src/WorldBuilder.java +++ b/src/WorldBuilder.java @@ -4,8 +4,20 @@ import it.kibo.fp.lib.RandomDraws; import java.util.*; +/** + * Classe utility per la costruzione del mondo di gioco. + * Si occupa di generare un grafo bilanciato di elementi e delle loro interazioni + * in base alla difficoltà scelta. + */ public class WorldBuilder { + /** + * Costruisce un grafo di elementi e interazioni basato sulla difficoltà scelta. + * Il grafo rispetta determinate condizioni di equilibrio e interazione. + * + * @param difficulty La difficoltà selezionata (EASY, MEDIUM, HARD) + * @return Il grafo degli elementi costruito + */ public static ElementGraph buildWorld(Modes difficulty) { // genero un numero casuale che mi dice quanti elementi prendo Element[] allElements = Element.values(); @@ -81,6 +93,13 @@ public class WorldBuilder { } } + /** + * Genera una mappa direzionale valida delle interazioni tra tutti gli elementi selezionati. + * Garantisce che ogni elemento abbia almeno un arco entrante e uno uscente. + * + * @param elements Lista degli elementi selezionati + * @return Mappa delle direzioni valide tra gli elementi + */ private static Map> generateValidDirections(List elements) { int n = elements.size(); Map> linkDirections = new HashMap<>();