From 16dc96bbca084e27b6f0dcc82ff3576e702d1ae2 Mon Sep 17 00:00:00 2001 From: Nikolai Date: Mon, 13 Oct 2025 12:42:00 +0200 Subject: [PATCH] 13.10 end --- .gitignore | 4 + .~itignore | 3 + Chip.class | Bin 1872 -> 1870 bytes Chip.java | 6 +- Chip.~ava | 4 +- Game.class | Bin 6034 -> 8237 bytes Game.java | 270 ++++++++++++++++++++++++++++++------------ Game.~ava | 272 +++++++++++++++++++++++++++++++------------ Muehle.class | Bin 7556 -> 7571 bytes Muehle.java | 53 +++++---- Muehle.~ava | 53 +++++---- Muehle.~fm | 13 ++- MuehleButton$1.class | Bin 1104 -> 1004 bytes MuehleButton.class | Bin 1655 -> 1963 bytes MuehleButton.java | 25 +++- MuehleButton.~ava | 26 ++++- 16 files changed, 521 insertions(+), 208 deletions(-) create mode 100644 .gitignore create mode 100644 .~itignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..501badb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.class +*.~fm +*.~ava +*.~d \ No newline at end of file diff --git a/.~itignore b/.~itignore new file mode 100644 index 0000000..c6143d1 --- /dev/null +++ b/.~itignore @@ -0,0 +1,3 @@ +*.class +*.~fm +*.~ava \ No newline at end of file diff --git a/Chip.class b/Chip.class index 4b6ad44349aab7fcdaaa17ca600d69034d9634c6..e105dd02b8199e4ae448e0677b4d5dba328f8b39 100644 GIT binary patch delta 14 Wcmcb>caCquN@k|al#S~au>k-qp9ReT delta 16 YcmX@dcY$xhN>-Ml%)IoCYZkEq069qpvH$=8 diff --git a/Chip.java b/Chip.java index 2980e82..89a7a27 100644 --- a/Chip.java +++ b/Chip.java @@ -28,10 +28,10 @@ public class Chip { public Circle circle; - public int ring; + public int id; - public Chip(int ring, int relX, int relY,double absX, double absY, Color color, Game game) { - this.ring = ring; + public Chip(int id, int relX, int relY,double absX, double absY, Color color, Game game) { + this.id = id; relativeX = relX; relativeY = relY; diff --git a/Chip.~ava b/Chip.~ava index aaa71a5..689500f 100644 --- a/Chip.~ava +++ b/Chip.~ava @@ -30,7 +30,9 @@ public class Chip { public int ring; - public Chip(int relX, int relY,double absX, double absY, Color color, Game game) { + public Chip(int id, int relX, int relY,double absX, double absY, Color color, Game game) { + this.ring = ring; + relativeX = relX; relativeY = relY; diff --git a/Game.class b/Game.class index 616b376644a3356c568237a838013a09be3e59ae..6c30457666ca8dc78910ff4499ecc76098e2ecb5 100644 GIT binary patch literal 8237 zcmbVR33yc3b^fp3j7BqhLZi`wgd`A)KpGKb1g6-saX=WOTCxeN|XM1!gHj*wvxq^4gP%PufK9x4AFjJu{I+{v3iOj~)RH8Q?+3%zjLS54W^<`4A z#LjkEQe$HlY83)IdG7XfCX(UlN=sF5W41gh-Yff?17%5rjk%gW5RXK6Pt)hySRi!U z<)`$?v@BR?W08K~F3=BrXjUlKGL2?p@z&L;RAhfwES(9U36?BdY~x*6qTm}C&18~^ zv_hrPA)jBXag~jw!t2$r_^?c&M)tmaUu!z*B%IdtP-Mhu?TDqKaShegHdf$w2#XPR zM5APMQK;Ld54!APecUxRuGOoJM!Bm+^6P9|58By)I*^Q{1{G%I@5uv`qnXy;NW#%u zzT3uXtf2#RZA^|(gnaI3GLcCoqh0Vm#GgtgpUo4rA79N?MjY}|zPL_h6hG}lIF zAAPQ}$zY}((Y1T?WI}u5HQGw_>DXY15wXd}W^7TIIUL#TbR-keNM=hcGsF>{ERhjwHgz^% zDqH~lxYdVkHhxdkF&>gH09|54#EBNPK^qQk zCvRjRos5rWoUL^Bwen=hMlA0M`FA7k!?2A6k_y#%?lcnN`K=wvc#@&z-Lk%O`(=PqmR5=Omx)W#m{HTD%^M{+bl3sp6B zUW%a@csKUjxI-lOuIXCcadQ#wlA(mG2=jg$zmI$9MbRNAy1PR{lCU(H^O`pc%Li@z zfn>57DQ7sj$B{#gv)zmPd^l+1emrn7E;(M!#Ie)Ka8-Pexk#b0$yl3F6-~zD%!o1i z0+VCfN$rUY#2pF#_F_DU5Bu;D8-Iw8D$I3Jzw!#ERU_X;zHX9kd-JUlkcVs>#ve^5 z#_egx6@bg9G5)xXKgK7ReW&!L`?`>H2b=aDA%DrnvqBCHrXqV+?}@}{c#}EO^7zX(p3^=z6dQC_$K%;Y zP57#fKgVAX(RAz%D#04sDJQ;Q<3;=>=hW|#oZ>ox;PA4Iui@+TapuR>^u0aY!_#!D zarIYhyo$f#!&tgAvylml{_0_Rx>aQQrj5VBw-icvf{|y<{!S+JGRa?gZV`gQrV#sp zO|tH9ZTy|+Qj}mOmdGi>_Ze_H1l_d#1N_j3f3We7lImvVWthB-&!j=IC8Nv6KbF{i z%}A&t^(Qv|2|vvS+=!9SFY<|pYMZ`k<7fD1g;EpnB&Xf<6=>S#hCS8o$1f!Fz7{|m z{>8?>3S>GGn(SK(WIXIdVF0zCac;N>MzfyWs~Qgj^rS>EA5IU zoLfeR2b|PKNeI%kB%_h|=13|gbC>AJ48@p6y{scCn*5rJJToT+wdZHnJV+VCR7Rq6 zjj7MxxYSlwoG7u`KA@}F_Gmm7-R)>&=c^^FeFzLh8edzGBPE+ z?9K(0T|2Cwdl;u846I-*NOJ4vjWtSUym3Y++UthmMU6yScQz&xSst|XS+P}&u(A&l z+qpUsx~hCw_m50L>)jKHj}rG8vP*hhSn~F8bWG0;bvUeor#2#>WD|uX(#Pd3mI{j=yW+zeX2=e_W#Z*HA(BmW?o)hfKp~J zzJqYY+~(f-I-%!$N6>e^5a>H!0Q8*=zrM4-*LODTT>VRq3-BwB*pz4I|Hcv9V$H{D ztnX}j^_{)AzO$?5y@H&4iQ@I&0qc1baRh63_-UwcF!(Hd{Z`?Z0{xcN)9)$l>GuW; zd-^yMQqWJDPiQu2UPB9!RwT4a(h4=rLsBpxv~tpXhObJ9B|`L(SY(J5LM#>HOcH}; zd9YZhL7~nNs@cFR#4;fk3DImILh>}PS4e)drwD0IFBWRRP(@6N!{rr1E!I@(r}fc0 z+J?~rj~`;3`LqPsPz*Q1kE~EV9tGpK@$vghCpouP;&S+ zLC-~wU_c+Gtu3|?GxisHETq*#!0R>`9oW-Xz0*OnTB z_5p4FpjoW()0XDpg~kWUG_=|Wv}0&RLV5$Om^fOn+~BXF;I0PMV1+q`I*6;0tx^++ zqS%h}svKi#!)sw?nq}H;xoiTZ;ZSG-6=7=v)nVTR>f|y|7(R=p{-+V1K+E*7 zH5~Lmi?#_YpBk)uia}U_|KN26Qvwi#2O+f$Rn~meTFt1lmZ08RhS}CiG+5VTuC)g9 zt!^x^wjyjr(1QQuD%*rD{tL%AQ}}QE53dYqY~$`0?`7eZ3ABe7PvC}dsACd0P9GfN zkw7c+z*WpoZ4_ad-n79ibT{P|IM1BI{J_!M%q9gKU%;=;LF#7sHUFto=xjNSo-^18 zOk!*JG^&r_KHe%qp_5nv=??dwMxAF+&?J9dC^U)8IF?;u z$-b#2b7aXJv*b=L2``?+-Qh`mfSa^W;y}wY_)r11h$Nn4DChm57hntjLoJi|m>^+k z6Re@`Vu(`a#wuKcIsEp}&VM)JI&8qZ`Fgq<`>6Q`u@(nOeGu#LFgkG@H{(%s;VHhR zi#ftXw4M3JIWosc_u2-~D)Au4(x;F0)P7C((97q|qj)i_W4l5yfq{G7F!_-#c8+uSZX z;U;#vx8c3GonH`=*nxWx!68Jc<{*ynOM#%a+^CsF=n+*w`~;szl*L;CcfDI9X>soX zh=SX0DecKlkus9xhYy7MMF*Z7|#vxz|%3aD) zr4{mXHQ(1%AcQ-a74BjmcsJjt?_qZN0B&G5>E!31ZrsNxIY{@rpH_MR z8GMNEo*%&hexA7>A7vyQ#z|fu!^fCKKF)XhF?^NT=LN>kD@^-hO9S?+S+HL zz4{dDa02rfcvHt0ph4Mggv>XB=;Qq;xPSt6o;g*?cL{SoUBRQnWymd;-PWplo?c3{ zKizij1X{%uW>&vs65lw2nTzvDe=Q+>z@mgNF;#u#DCTer8J$4o;(DV5bKOgt-PQ{0Uw&wvh(m>;NK_CqlR4k2xxG@QQAc~ z*His@pG1JS#-ms%v!kdK1m>N=x23?|81_mFqMz%s*?0!uF%Js)U>rUM!*{2Rw~%!j z_#y-J8B{V6&BIy#&EOoR{W5FTbIjP!^YiwLT4&u>V114m3*nhjU29P`esFPRJ>|;U zOCjoxFi1~h&JomxJtCJxldiYHuwt|kZ__flK^Y2%z9%|_?qoAHp6#l#9g3;TZNw0G znKFNkY4q!ip>MDjyuu{?P1e?LGpBurvGiTa{yoOh_tAqN9w=bAWu|>< z3F|KKQ(oU-EWOD;PW=p9@N?|IFIaWnV%Ga5?&Y%w$#aO!sU!=Dr!D+LQc#sKB1`ao z71BktfS*()fk;6(oCW%@DZ4s)YEUSte~&dDR!lc;c~UNiN2zF_emk2lU&rQtu%vWzPqrcFKr8$%*HPqiy(x~K! zqx>jg?wrFS+QRWt<{80MYIy-#v-mB`3brfQUW*a0m%XPe z-W26Z;+0Xn5XCE}cx4o?>i;bsKNh><9dyxa&P7j(MLv2opT_Km7n@MkP^eiHsupuO zUZiH{2-TRy?2=Yb`<#o}Y=as9JY)TjU-_n8f26^Pks`}dF`48V2f9I`ntj*hFWp{7mhJqn&x>-RWNayYB&e}3tV^}vo65L tTLn7>sfbfkSgMi`7pN*FpU5gWpUoJn*4J73T1SPz@~l*&T0|vkehW%kW)}be literal 6034 zcmai2349dQ8UN27*=#Zz*l;aLG$>$pIpTqc38JuE(SVf1aH(Ok8Of5(PP#h@LRIR4 zR;@>cR-{!?TH@7KZL$`uM=#sjV(lbIU#`fk^&Mrd~e&MRoaT-q75bEf&Z7Y-0FwxPdm|iJ0O~)BR8&rFSFkM4bWM6Y_ zeJ*Kc%=%oH(QDQxQrTo$K`>LtS*W9tj;g)NW=As()tl5tV=}Al;yPw2ZpWZPZqa;> zj=88GhN#0bvYi^H7R%&@R-awJ#>kjTsa+>H21)!%R1p z;(Q8M?yMD$m2uAtbS%Jy8uXlLE2>uWT86>IItMcq8?F~)ZDBNGVF(xLSR{VYSM`}) zX>*CfnJS2{h2#<)i)B5WHPeQj>NnTRY(mGl0Sm%1X?xY-(M00(b>9jbeO@j#ga3P%%0? z6O1|yXVo<|H7#9QjA9{MtXT*Z_c|TxvB7~(CKFa)hR{u_YZ@E7RoJBCO3^&HqUqgS`^qpz+(Dhrnmk6C!hBSIY$mp=d@lGxklM|6%VNNqd-i~YtIUP3oMnhf@ zi%i}vrcD&mova5MX4J)oF-%(NG)qg0smLmmGqe3hN7|H>C5nyMrsG;{*HB9S7RfdS z@d$Ha7OK_8a=ZiAg>b!&8?aNuG&cxNz6)zw*6gwRDYz)Aor>2O+bH1QsN*K7h@}~Z zzvM6Ri=)f13-6K=db@_Y{}(XLQYjl_ZBn1^)bVan+Ru0s zA=_l@dvx53_i$@Yx&YKT**B_?IQGZd1c5ulWWPjQ`Cjqk`>0u6lN9W|3?LO!Zier} z`$PDEjt9lpQ;RaDs5sE&tN@byA~_+Cg`(Xf5|xhVrBygo7F;(_<^GY-$IK zjFC>Ht(+<7u;5Nr#7-8Bs=6ZcF&&TN3A%#<+RUt-N*1$6$?k+t{TSR&>G&`{LgzRE z*Slo<8jE|DDJD^XVHL&GI-bF^MAf#O@}*&d8&*!kbBkJpjd4)N5b`vr$LKZ_RwilK z>r!?XM{H9Wo5E*~RSr+ga@qLfIu7A5eN6Qv;)X3L=&~%_yYLAeFQ{6;$hEQ&Xn0A~ zc=-e#Pf;HRWrI)a_zXTvhv!l|7}M<2O%eFUJtCRayG^aA= z>b{;1GutXvKu!x5z29bJQ}XRj2JEgBQ7>_FhlPuN$P N99F90ctE(z9_bteKcRr z9ZQ^^8ca(+WbI2bT-u#;LVGfuN_Ly8#rIXi3gt}^W|t20-Mf6$s13F=b(i^Q!)mO0c=%g>|y zT&wg{pT{)#)@v0dc&iM@S-CWgsiXNcOc&Wsey1}1R<~L2WRH{7%Z;RMW!Y=?7N)aH z=xDLh$aJR7-1KJ4>h9}xf~u%qI7y(Axrniqh>k(-oCph#*o|&wD-@A1(&-i+eF?DM zl*yRcMB2#Z%v?wdvX!1-(^#s8w2+3={x>Pz;@E|0tinE4zH*iwp65AY*h6X|%a8l! z(OZ4 z5$1Co0@S<=m8if3S~C$D*{0w>(P;t#ue(p%j5{6C5#gJibF%d>nrl-*Yz7 zE~2`!(Lj6<75lJ*StKK=Jh~~1GrhC&=s$!VKCFx9@lMezu%E7p z-0Yg~S2!;svOpXm%%qp#e9D;8maSZh#?5a4538!$LXLkomo=3{* z2q5-6c5SGtu9*^;QW7m?aNX7rrWLi(a2|K8i_7b-JnoK$pC+*rG>$KqGF+CS2FvNq z6-vRiC>4R8GBLUHa66g%F-MX7j%4Zp&#U7-nAsQ8sZvpbJH zqXn)eP-_YVmU{xrm6jrqM`2gs?Gz|BFQAr{`;@Yi_MtQ$kYsh^H4=~9&-jQ(u3{Pw zaNfyhFK3*fIYZ&Omgck&kv3Fg9ZSi2UWhj_F|TB}T&=Wn5_5s8mAF0#f8}JURJ^FV zYAtr{6z87JpnYJpl^xtISzu+@voeg=RWZ`!w&jXjM$d^anDPXTzlZpHIFJ2LancDB z0R%7$M2`1Fj`x7$QP~lxbx>r890%eI$2<-+1USfJpdqN zWI!eMT&5Aw#Yj!DVs-PdnPz17Fnu#b)1vuVY-4Ia%-i5297!Qv>6qz(aX@8z zMk3972pQN>G!Ysk(N4E(Gz5rm&0+8lU&OX*A5Mz~;sJW#NvQ-J2ZzT4XsinCSL^=a zx#IOIeiklyVn$r}N!Nu^R~#(QWs3nzU>Mi21zk@&Z@>)fWO=-iVSE#-&CM)ew_-DH zBg(gv>JEkHJjVAgPBJG9nGx&+u`>9NVIJW+eX`rY-yjX| zUJhvVMS%Z+O)hAwtM{RLPP~dSq+sGO=ne;PK{Zj5RfgJ$tI^^GPr?WwaaE!3Vq)G+ zRqtW#zn6gA$3C)~{bCQh$NgB%KCyv8B7r3xf~t8yZ1RBEgf8S$=!$Xii&}P*{5&uYXipzG{L|rf>Tvvc#xs|5PRjrtnB+)0v}}QJK)*uV=?@b z+g3Jv)^GN#-|Sj17V6?)pY|rMILffml|?mGj}$K+A2|NT0MBiOGGd;L*eDsY;>qw9MTQh? z2b1M224EiR?EDct#zc9XP523%&G&qID?xv);=2ulxQaLAtxRZ}?;X5n--g3%sD~Ii zFL}kNiswBCzeP+uXVmV^-Q>-IvF4oqWb``smZG&6e`b5|srWe^;bW-Mj$-OD-Z6OS x@EzkH#7919z+cGX!(Z_?zNa#n{zD;uSI>W{=fBnSO-;@SWze*MR>JE{^uN^otiu2R diff --git a/Game.java b/Game.java index fe0908b..9348392 100644 --- a/Game.java +++ b/Game.java @@ -15,12 +15,24 @@ import javafx.scene.shape.Circle; public class Game { + public int[][] win_comb = {{0,3,6},{9,4,12} + ,{18,5,21},{1,10,19},{22,13,7},{20,15,23},{11,16,14},{2,17,8} + ,{0,1,2},{9,10,11},{18,19,20},{3,4,5},{12,13,14},{6,7,8},{21,22,23},{15,16,17} + }; + public int[][] close_chips = {{1,3},{0,2,10},{1,17},{0,6},{3,5,9,12},{18,21} + ,{3,7},{6,8},{7,17},{4,10},{9,11,19,1},{10,16},{4,13},{7,12,14,22},{13,16} + ,{20,23},{15,17,11,14},{2,16,8},{3,19},{18,20,10},{19,15},{5,22},{21,13,23} + ,{22,15} + }; public String currentTurnPlayer = "White"; - public int game_state = 0; // 0 == players placing their chips; 1 = players moving their chips; 2 = player can remove chip - public int white_chips = 9; - public int black_chips = 9; + public int game_state = 0; // 0 == players placing their chips; 1 = players moving their chips; 2,3 = player can remove chip + public int white_chips = 4; + public int black_chips = 4; - public ArrayList buttons = new ArrayList(); + public int white_combos = 0; + public int black_combos = 0; + + public ArrayList buttons = new ArrayList(); public ArrayList chips = new ArrayList(); public Pane game_board; public Chip current_selection; @@ -39,49 +51,164 @@ public class Game { } public void chip_button_clicked(MuehleButton button) { + System.out.println("id" + button.id); if (game_state == 0) { Chip newChip; if (currentTurnPlayer == "White") { - newChip = addChip(button.ring,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.WHITE); + newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.WHITE); white_chips--; setChipCount(white_chips,"White"); } else { - newChip = addChip(button.ring,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.BLACK); + newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.BLACK); black_chips--; setChipCount(white_chips,"Black"); } - if (checkCombo(newChip)) { - System.out.println("Comb!"); - } // end of if(newChip); - game_board.getChildren().remove(button.getShape()); - nextTurn(); + checkCombo(newChip); + removeChipTurn(); + game_board.getChildren().remove(button); + } if(game_state == 1) { // second state of game - setLabelText("Second State"); + if(current_selection != null) { + moveChip(current_selection, button); + + + } + //setLabelText("Second State"); } } - public Chip addChip(int ring,int relX, int relY,double absX, double absY, Color color) { - Chip chip = new Chip(ring,relX,relY,absX,absY,color,this); + public void moveChip(Chip chip,MuehleButton target) { + Chip newChip = new Chip(target.id,0,0,target.absoluteX,target.absoluteY,chip.color,chip.game); + MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX, chip.absoluteY,chip.game); + + buttons.add(newButton); + chips.add(newChip); + + addShape(newButton.getShape()); + addShape(newChip.getShape()); + + buttons.remove(target); + chips.remove(chip); + game_board.getChildren().remove(target.getShape()); + game_board.getChildren().remove(chip.getShape()); + + checkCombo(newChip); + removeChipTurn(); + } + public Chip addChip(int id,int relX, int relY,double absX, double absY, Color color) { + Chip chip = new Chip(id,relX,relY,absX,absY,color,this); chips.add(chip); addShape(chip.getShape()); return chip; + } + public void removeChip(Chip chip) { + MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX,chip.absoluteY,chip.game); + buttons.add(newButton); + game_board.getChildren().add(newButton.getShape()); + + chips.remove(chip); + game_board.getChildren().remove(chip.getShape()); } public void addShape(Shape newShape) { game_board.getChildren().add(newShape); } public void chip_clicked(Chip chip) { - System.out.println(chip.relativeX); + + if(game_state == 2 && chip.color == Color.BLACK) { + removeChip(chip); + white_combos--; + removeChipTurn(); + + } + else if (game_state == 3 && chip.color == Color.WHITE) { + removeChip(chip); + black_combos--; + removeChipTurn(); + } + + if (game_state == 1) { + if(currentTurnPlayer == "White" && chip.color == Color.WHITE) { + if(current_selection == null) { + current_selection = chip; + drawAvaibleButtons(current_selection); + } + else { + current_selection = chip; + hideAllButtons(); + drawAvaibleButtons(current_selection); + } // end of if-else + } + else if (currentTurnPlayer == "Black" && chip.color == Color.BLACK){ + if(current_selection == null) { + current_selection = chip; + drawAvaibleButtons(current_selection); + } + else { + current_selection = chip; + hideAllButtons(); + drawAvaibleButtons(current_selection); + } + } // end of if-else + + } } + public void hideAllButtons() { + for (int i = 0; i < buttons.size(); i++) { + buttons.get(i).setActive(false); + } + } + public void drawAvaibleButtons(Chip chip) { + ArrayList avaible_buttons = new ArrayList(); + for (int i = 0; i < close_chips[chip.id].length ;i++ ) { + if (!isItTaken(close_chips[chip.id][i])) { + avaible_buttons.add(getButtonById(close_chips[chip.id][i])); + } // end of if + + } // end of for + if(avaible_buttons.size() > 0) { + for (int i = 0; i < avaible_buttons.size(); i++) { + avaible_buttons.get(i).setActive(true); + } // end of for + } + + + } + + public void removeChipTurn() { + if (white_combos > 0 || black_combos > 0) { + if (white_combos > 0) { + setLabelText("White, You can remove "+ white_combos + " Black Pieces"); + game_state = 2; + + } + if (black_combos > 0) { + setLabelText("Black, You can remove "+ black_combos + " White Pieces"); + game_state = 3; + } + + } + else { + nextTurn(); + } // end of if-else + } public void nextTurn() { + if (white_chips == 0 && black_chips == 0) { game_state = 1; + hideAllButtons(); + if (current_selection != null) { + current_selection = null; + } // end of if } + else { + game_state = 0; + } if (currentTurnPlayer == "White") { setLabelText("Black Turn"); @@ -97,71 +224,68 @@ public class Game { public void setLabelText(String value) { LTop.setText(value); } - public boolean checkCombo(Chip chip) { - return checkCombo(chip.relativeX, chip.relativeY, chip.ring); + public void checkCombo(Chip chip) { + checkCombo(chip.id); } - public boolean checkCombo(int relX, int relY, int ring) { - ArrayList hChips = getHorizontalCloseChips(relX,relY,ring); - ArrayList vChips = getVerticalCloseChips(relX,relY); + public void checkCombo(int id) { + for (int i = 0; i < win_comb.length ;i++ ) { + for (int j = 0; j < win_comb[i].length; j++) { + if (win_comb[i][j] == id) { + Chip[] chips_to_check = {getChipById(win_comb[i][0]),getChipById(win_comb[i][1]),getChipById(win_comb[i][2])}; + //System.out.println("ID: " +id + " 0:"+win_comb[i][0]+" 1:"+win_comb[i][1]+" 2:"+win_comb[i][2]); + if (checkChipsColor(chips_to_check)) { + if (getChipById(id).color == Color.WHITE) { + white_combos++; + } + else { + black_combos++; + } // end of if-else + } // end of if + } + } + } - Chip start_chip = getChipByPos(relX,relY); - System.out.println("Size" + hChips.toString()); - if (hChips.get(0) != null && hChips.get(1) != null ) { - if (start_chip.color == hChips.get(0).color && start_chip.color == hChips.get(1).color) { + } + public boolean checkChipsColor(Chip[] chips) { + if (chips[0] != null && chips[1] != null && chips[2] != null) { + if (chips[0].color == chips[1].color && chips[0].color == chips[2].color) { return true; } - } - if(vChips.get(0) != null && vChips.get(1) != null) { - if (start_chip.color == vChips.get(0).color && start_chip.color == vChips.get(1).color) { - return true; - } - } - return false; - } - - public ArrayList getHorizontalCloseChips(int relX, int relY, int ring) { - ArrayList result = new ArrayList(); - System.out.println("Target: " + ring); - if (relX == 0) { - result.add(getChipByPos(1,relY)); - result.add(getChipByPos(2,relY)); - } - else if ( relX == 1) { - result.add(getChipByPos(0,relY)); - result.add(getChipByPos(2,relY)); - } - else { - result.add(getChipByPos(0,relY)); - result.add(getChipByPos(1,relY)); - } // end of if-else - System.out.println("Result: " + result.toString()); - return result; - } - public ArrayList getVerticalCloseChips(int relX, int relY) { - ArrayList result = new ArrayList(); - if (relY == 0) { - result.add(getChipByPos(relX,1)); - result.add(getChipByPos(relX,2)); - } - else if ( relY == 1) { - result.add(getChipByPos(relX,0)); - result.add(getChipByPos(relX,2)); - } - else { - result.add(getChipByPos(relX,0)); - result.add(getChipByPos(relX,1)); - } // end of if-else - return result; - } - public Chip getChipByPos(int relX, int relY) { - for (int i = 0; i <= chips.size() - 1; i++) { - if (chips.get(i).relativeX == relX && chips.get(i).relativeY == relY ) { - System.out.println("X" + chips.get(i).relativeX); - return chips.get(i); - } // end of if + else { + + return false; + } } + else { + return false; + } // end of if-else + } + + public Chip getChipById(int id) { + for (int i = 0; i < chips.size(); i++) { + if (chips.get(i).id == id) { + return chips.get(i); + } // end of if + } // end of for + return null; + } + public MuehleButton getButtonById(int id) { + for (int i = 0; i < buttons.size(); i++) { + if (buttons.get(i).id == id) { + return buttons.get(i); + } // end of if + } // end of for return null; } + public boolean isItTaken(int id) { + for (int i = 0; i < chips.size(); i++) { + if (chips.get(i).id == id) { + return true; + } // end of if + } // end of for + return false; + } + public void setChipCount(int value, String player) { System.out.println(white_chips-1); if (player == "White") { diff --git a/Game.~ava b/Game.~ava index f778dd4..6f0f505 100644 --- a/Game.~ava +++ b/Game.~ava @@ -4,7 +4,7 @@ import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.control.Label; import javafx.scene.shape.Circle; -import java.util.AbstractList; + /** * * Beschreibung @@ -15,12 +15,24 @@ import java.util.AbstractList; public class Game { + public int[][] win_comb = {{0,3,6},{9,4,12} + ,{18,5,21},{1,10,19},{22,13,7},{20,15,23},{11,16,14},{2,17,8} + ,{0,1,2},{9,10,11},{18,19,20},{3,4,5},{12,13,14},{6,7,8},{21,22,23},{15,16,17} + }; + public int[][] close_chips = {{1,3},{0,2,10},{1,17},{0,6},{3,5,9,12},{18,21} + ,{3,7},{6,8},{7,17},{4,10},{9,11,19,1},{10,16},{4,13},{7,12,14,22},{13,16} + ,{20,23},{15,17,11,14},{2,16,8},{3,19},{18,20,10},{19,15},{5,22},{21,13,23} + ,{22,15} + }; public String currentTurnPlayer = "White"; - public int game_state = 0; // 0 == players placing their chips; 1 = players moving their chips; 2 = player can remove chip - public int white_chips = 9; - public int black_chips = 9; + public int game_state = 0; // 0 == players placing their chips; 1 = players moving their chips; 2,3 = player can remove chip + public int white_chips = 4; + public int black_chips = 4; - public ArrayList buttons = new ArrayList(); + public int white_combos = 0; + public int black_combos = 0; + + public ArrayList buttons = new ArrayList(); public ArrayList chips = new ArrayList(); public Pane game_board; public Chip current_selection; @@ -39,49 +51,164 @@ public class Game { } public void chip_button_clicked(MuehleButton button) { + System.out.println("id" + button.id); if (game_state == 0) { Chip newChip; if (currentTurnPlayer == "White") { - newChip = addChip(button.ring,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.WHITE); + newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.WHITE); white_chips--; setChipCount(white_chips,"White"); } else { - newChip = addChip(button.ring,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.BLACK); + newChip = addChip(button.id,button.relativeX,button.relativeY,button.absoluteX,button.absoluteY,Color.BLACK); black_chips--; setChipCount(white_chips,"Black"); } - if (checkCombo(newChip)) { - System.out.println("Comb!"); - } // end of if(newChip); - game_board.getChildren().remove(button.getShape()); - nextTurn(); + checkCombo(newChip); + removeChipTurn(); + game_board.getChildren().remove(button); + } if(game_state == 1) { // second state of game - setLabelText("Second State"); + if(current_selection != null) { + moveChip(current_selection, button); + + + } + //setLabelText("Second State"); } } - public Chip addChip(int ring,int relX, int relY,double absX, double absY, Color color) { - Chip chip = new Chip(ring,relX,relY,absX,absY,color,this); + public void moveChip(Chip chip,MuehleButton target) { + Chip newChip = new Chip(target.id,0,0,target.absoluteX,target.absoluteY,chip.color,chip.game); + MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX, chip.absoluteY,chip.game); + + buttons.add(newButton); + chips.add(newChip); + + addShape(newButton.getShape()); + addShape(newChip.getShape()); + + buttons.remove(target); + chips.remove(chip); + game_board.getChildren().remove(target.getShape()); + game_board.getChildren().remove(chip.getShape()); + + checkCombo(newChip); + removeChipTurn(); + } + public Chip addChip(int id,int relX, int relY,double absX, double absY, Color color) { + Chip chip = new Chip(id,relX,relY,absX,absY,color,this); chips.add(chip); addShape(chip.getShape()); return chip; + } + public void removeChip(Chip chip) { + MuehleButton newButton = new MuehleButton(chip.id,0,0,chip.absoluteX,chip.absoluteY,chip.game); + buttons.add(newButton); + game_board.getChildren().add(newButton.getShape()); + + chips.remove(chip); + game_board.getChildren().remove(chip.getShape()); } public void addShape(Shape newShape) { game_board.getChildren().add(newShape); } public void chip_clicked(Chip chip) { - System.out.println(chip.relativeX); + + if(game_state == 2 && chip.color == Color.BLACK) { + removeChip(chip); + white_combos--; + removeChipTurn(); + + } + else if (game_state == 3 && chip.color == Color.WHITE) { + removeChip(chip); + black_combos--; + removeChipTurn(); + } + + if (game_state == 1) { + if(currentTurnPlayer == "White" && chip.color == Color.WHITE) { + if(current_selection == null) { + current_selection = chip; + drawAvaibleButtons(current_selection); + } + else { + current_selection = chip; + hideAllButtons(); + drawAvaibleButtons(current_selection); + } // end of if-else + } + else if (currentTurnPlayer == "Black" && chip.color == Color.BLACK){ + if(current_selection == null) { + current_selection = chip; + drawAvaibleButtons(current_selection); + } + else { + current_selection = chip; + hideAllButtons(); + drawAvaibleButtons(current_selection); + } + } // end of if-else + + } } + public void hideAllButtons() { + for (int i = 0; i < buttons.size(); i++) { + buttons.get(i).setActive(false); + } + } + public void drawAvaibleButtons(Chip chip) { + ArrayList avaible_buttons = new ArrayList(); + for (int i = 0; i < close_chips[chip.id].length ;i++ ) { + if (!isItTaken(close_chips[chip.id][i])) { + avaible_buttons.add(getButtonById(close_chips[chip.id][i])); + } // end of if + + } // end of for + if(avaible_buttons.size() > 0) { + for (int i = 0; i < avaible_buttons.size(); i++) { + avaible_buttons.get(i).setActive(true); + } // end of for + } + + + } + + public void removeChipTurn() { + if (white_combos > 0 || black_combos > 0) { + if (white_combos > 0) { + setLabelText("White, You can remove "+ white_combos + " Black Pieces"); + game_state = 2; + + } + if (black_combos > 0) { + setLabelText("Black, You can remove "+ black_combos + " White Pieces"); + game_state = 3; + } + + } + else { + nextTurn(); + } // end of if-else + } public void nextTurn() { + if (white_chips == 0 && black_chips == 0) { game_state = 1; + hideAllButtons(); + if (current_selection != null) { + current_selection = null; + } // end of if } + else { + game_state = 0; + } if (currentTurnPlayer == "White") { setLabelText("Black Turn"); @@ -97,71 +224,68 @@ public class Game { public void setLabelText(String value) { LTop.setText(value); } - public boolean checkCombo(Chip chip) { - return checkCombo(chip.relativeX, chip.relativeY, chip.ring); + public void checkCombo(Chip chip) { + checkCombo(chip.id); } - public boolean checkCombo(int relX, int relY, int ring) { - ArrayList hChips = getHorizontalCloseChips(relX,relY,ring); - ArrayList vChips = getVerticalCloseChips(relX,relY); + public void checkCombo(int id) { + for (int i = 0; i < win_comb.length ;i++ ) { + for (int j = 0; j < win_comb[i].length; j++) { + if (win_comb[i][j] == id) { + Chip[] chips_to_check = {getChipById(win_comb[i][0]),getChipById(win_comb[i][1]),getChipById(win_comb[i][2])}; + //System.out.println("ID: " +id + " 0:"+win_comb[i][0]+" 1:"+win_comb[i][1]+" 2:"+win_comb[i][2]); + if (checkChipsColor(chips_to_check)) { + if (getChipById(id).color == Color.WHITE) { + white_combos++; + } + else { + black_combos++; + } // end of if-else + } // end of if + } + } + } - Chip start_chip = getChipByPos(relX,relY); - System.out.println("Size" + hChips.toString()); - if (hChips.get(0) != null && hChips.get(1) != null ) { - if (start_chip.color == hChips.get(0).color && start_chip.color == hChips.get(1).color) { + } + public boolean checkChipsColor(Chip[] chips) { + if (chips[0] != null && chips[1] != null && chips[2] != null) { + if (chips[0].color == chips[1].color && chips[0].color == chips[2].color) { return true; } - } - if(vChips.get(0) != null && vChips.get(1) != null) { - if (start_chip.color == vChips.get(0).color && start_chip.color == vChips.get(1).color) { - return true; - } - } - return false; - } - - public ArrayList getHorizontalCloseChips(int relX, int relY, int ring) { - ArrayList result = new ArrayList(); - System.out.println("Target: " + ring); - if (relX == 0) { - result.add(getChipByPos(1,relY)); - result.add(getChipByPos(2,relY)); - } - else if ( relX == 1) { - result.add(getChipByPos(0,relY)); - result.add(getChipByPos(2,relY)); - } - else { - result.add(getChipByPos(0,relY)); - result.add(getChipByPos(1,relY)); - } // end of if-else - System.out.println("Result: " + result.toString()); - return result; - } - public ArrayList getVerticalCloseChips(int relX, int relY) { - ArrayList result = new ArrayList(); - if (relY == 0) { - result.add(getChipByPos(relX,1)); - result.add(getChipByPos(relX,2)); - } - else if ( relY == 1) { - result.add(getChipByPos(relX,0)); - result.add(getChipByPos(relX,2)); - } - else { - result.add(getChipByPos(relX,0)); - result.add(getChipByPos(relX,1)); - } // end of if-else - return result; - } - public Chip getChipByPos(int relX, int relY) { - for (int i = 0; i <= chips.size() - 1; i++) { - if (chips.get(i).relativeX == relX && chips.get(i).relativeY == relY ) { - System.out.println("X" + chips.get(i).relativeX); - return chips.get(i); - } // end of if + else { + + return false; + } } + else { + return false; + } // end of if-else + } + + public Chip getChipById(int id) { + for (int i = 0; i < chips.size(); i++) { + if (chips.get(i).id == id) { + return chips.get(i); + } // end of if + } // end of for + return null; + } + public MuehleButton getButtonById(int id) { + for (int i = 0; i < buttons.size(); i++) { + if (buttons.get(i).id == id) { + return buttons.get(i); + } // end of if + } // end of for return null; } + public boolean isItTaken(int id) { + for (int i = 0; i < chips.size(); i++) { + if (chips.get(i).id == id) { + return true; + } // end of if + } // end of for + return false; + } + public void setChipCount(int value, String player) { System.out.println(white_chips-1); if (player == "White") { diff --git a/Muehle.class b/Muehle.class index 8bd33b45935efddf3427dab6ea7a87937b437ed7..6083b66f61f5664f45204743f31dc5807a0d4baf 100644 GIT binary patch delta 2612 zcma)8X>3$g6#l+9(^=lUw$pZ|c2HJX2HJv@Qd*`UrDds1Sp>nNSW2n1woq)RE-`Uj zApFuqC*l%UPz)#uv@iuKt4k51f=Jv5u0%vd#4R9#=f0UKASODQy!+kr?sv|)=bm%! zTNa1}^nK^H?Ep~11sipzGuMvK38SL5wyv>ud}}Dwv_!`dd}$yFUlA$(^78Vsvf!lZ z#kGOKvm?(rGi}EVe23$aPUpa!9}G;xkA%-3ysi3<>S3*+`o>|UO^uDUHKF>ZC4s?n zm9n1D9Gw?eeB9g`jOG>BM#^sAg^3!n&XO!tb37fyHtZeXX zC2CWT4kwo5yg`_}Ig`t0O;F->I$X3Ev@$7jk6vhV8r12EY}E_>$p%yCBGMN$R@XFC zEp4p6ySBNirmlWzi%vJw>`XV9K~KBSwO$K4>K9hkG_@`X5d$vTO-XZe_1(exmQZo< z;vfaa1|)1Pq2{KB+NwM27l!J@CmV>zu_}d+LThYDqlhitc|Zy=t^EC zs~vcOJ=qHy2I4{XW*=B^2S%_j`-ugj0kchQOz$!Bg7t~Qn`Bzg6ei&8*6ZZe>@Pf` z1mhL6eR_IG6Gz_kbcK~8yO5#fVgLtlAVi^76Q{bg8#xFM2{BchMZX{onOX%0bBMUq zTPtHWj*ClvEx;U1lCQmIA|T*j8b9CyrElT^6t5&$4=rG)|~n zQ8Q!{GCT0a=;UQC`gC7%6zk_KGx+lP_Y<^{F`6*4Y#w~QNO9c@FQbMp;=YsM7R0zo zG49hf|HJOS1h?pdyB<6oqvEjGRkO?84#)lOO7KTtVtd4YDv0ynO7P?MFW~|J@8_6%QE>k%^vRCmL!a(7 zqByh*N1`~f6`yE`(GG8vtg=$o*bWSnX9P|>CVBQaym$h6coHM=6voKB6we@tXR#R1 zVJV)+T{6EHtHW4<7qJ#E;Z>}`CalIbti$Vg1;<44J=WtFnV-f6YS<_h)+QCzE{VT^ zMcB;oh;k7+cpJ8`S>|`4llNmg*I)+#I z#>8cd60)!qW@6!*gpl`i%Z_%-wk2em4TIw5q+}CKOpxj@(pCkj4kIm2km@j26R8ek zGm+{r4mh;|axsRFOWQHDek_sJ=IZVe=1U2$&ao1e2}nPOR6ACZXE5R{G#N(4hQino zhz-S;%;G{BQiU*3e7jXVkoGDaf2Wvrit6w|w{tsA1N{g3cUMr?t{UTjY@|z2Va{MPe#Zqp3szaY-pruv>{Lmh8=Rs4-_V4OIme zvkK;_>jC>^n+K!{4oau~P%7aNdf+4U$Hx-MPf&qR<$n4M^Klq;B42{fr5eItNU?m0 z7x0zj``1zl-{3WQu?OE`pVYz!IBq8B^>T7OF~dB62X601z`=MX*d&$ZlR~0xpi6yG zNG7-?_touW5odO=)Xa$<*vc}M6Xp^3%YpU0XtvwovU7s^W4Xm5>2wCuW2ZV@j!r&X z%$s%pRei!2Zq^@=f)f|rtf`5ll!KqhNuXO-9}=;nmp-9xS|G`?g{dlZa?{FFGDDu@ rOf|93gCt(ZDI&8lXs)W@R2k(RZxESx8fS18Zx)d*qIs-hHGF>qmPZ)( delta 2510 zcma)8dr(wm6#t#O&wKYS?85HKBECgefm9Sw9tH>^35rkD%okEPppa=((=u;5qioZQp+n~LAHcG;bM1AmIlw+UunK|z5?bpws!(ag+9Qpq5gnaal$ zPc9VZEedR8R>?wEtxOqiR#mc7l(t$K?sKT*q$onnyqdWc)wAnr=00Azcy>kAg1Sc( ziY1qY+$wpfOVbr)n`Bq#>5H3PQCm~HSUX{l=PZ})TTBxPU3}UQQ*0tHEZR(y#e`E- zx{t;>Xe=A1DKwpCSm=J0X3_&qC!=D?IERp^IUL=Uz9qG_)l2IvG*7cT$|+8(bo5H{ za=jHu{Ok@RdQm(h6~s>mb)^Iz3G=8Mi2WNJd&sNRILD3>Ucq}VONl%Kp&C>5Y;Df?w9eT_b6k-=yGLguhx5wRkNR^QArJW? zvZ**`iNr+qx{mk-k^P93QjkbK8UPOLC@- zJ-E)4d{Pz-!f0Mjij+=+X$Z_nm4;9%BP%kbWE#pyLAKPNhA~o6DtRc4(h)TSHFT3Q z7)GOscF=G}4z$q%8o|g(d$}+zC%JE@s-jiq{^%w*hP`U#`;T_LCiP86wWDa!j1rg&!Ug(T@3%!T!6Wk3~cq zOu^vw75{7MaB!xW+9)WyusRrvFL`G1FM_&1lKbI~*|YQnq1lK2SBA(0@0mo=)`q+q zDgpdduGd4rQ}yVU6u`$`#jOVL$$lj4##sr$EpKh$?lO`%Yp(sK*{`;B&SK$FLb!@fzB&i8W#?$#{bXV;eW| zR?5S6D#i|~Ljyg*_$ln9=MbPBXr>m%2e6xtV-HW<+cRO?)v)a#a)N$LG8D_AJu+mg3)>39 zemlap<;d}e9Iu6qhdLZ3C;Emc@X_oLD@H;|xHKUpVPRz?l*Fhbp(JJ<2_>;YmQr*T zQV=EisDL%f78V0p^7Bhp1BFWq6d~p|oEEIH@a5BnVYeXhFd|~e4*tst4xxXYLo^5U zVRjEP2NqJ+_I<2tGABRdkl(?L68%})h@0bFI55Jv(1o@UW<$EwZFR`?C{1!(TX18# z5R3!W{I0^0>b6!nadghgICC>@O=5@ClmObr7-tL+1ZX4*ka3`Z0WvMOvI;eJ=1dOe zbdjuW=<4?0n#2Y@hZyx70x%_!L%?tjaTJnvk*;;gyC_<;xj}F98Q^;WM|hP-Syqp; zB)<kfByEv)=RN&&5`8MBM#+`8aS;zlID61{+uRdq5>2I9Y*N@Xo90plyng`;jr^bh diff --git a/Muehle.java b/Muehle.java index fb7467e..4ae2873 100644 --- a/Muehle.java +++ b/Muehle.java @@ -144,52 +144,61 @@ public class Muehle extends Application { } public void drawMuehleButtons(Pane board, double topLeftX,double topLeftY,double topRightX,double topRightY) { - ArrayList shapes = new ArrayList(); - Color button_color = Color.BLUE; + ArrayList buttons = new ArrayList(); + + int id_count = 0; for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,0,i,topLeftX,topLeftY+ i*325,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX,topLeftY+ i*325,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(i,1,i,topRightX -230,topLeftY+ i*100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,2,i,topRightX + 140,topLeftY+ i*325,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topRightX + 140,topLeftY+ i*325,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(1,0,i,topLeftX + 100,topLeftY+ i*220 +100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX + 100,topLeftY+ i*220 +100,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(1,2,i,topRightX +40,topLeftY+ i*220 +100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topRightX +40,topLeftY+ i*220 +100,game); + id_count++; + buttons.add(button); } - for (int i = 2; i >=0; i--) { - MuehleButton button = new MuehleButton(i,1,i,topRightX -230,topLeftY+ i*100 + 360,button_color,game); - shapes.add(button.getShape()); + for (int i = 0; i < 3; i++) { + MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100 + 360,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(2,0,i,topLeftX +200,topLeftY+ i*130 +200,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX +200,topLeftY+ i*130 +200,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,2,i,topLeftX +540,topLeftY+ i*130 +200,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topLeftX +540,topLeftY+ i*130 +200,game); + id_count++; + buttons.add(button); } - game.buttons.addAll(shapes); - for (int i = 0; i < shapes.size() ;i++ ) { - board.getChildren().add(shapes.get(i)); + game.buttons.addAll(buttons); + for (int i = 0; i < buttons.size() ;i++ ) { + board.getChildren().add(buttons.get(i).getShape()); } diff --git a/Muehle.~ava b/Muehle.~ava index fb7467e..4ae2873 100644 --- a/Muehle.~ava +++ b/Muehle.~ava @@ -144,52 +144,61 @@ public class Muehle extends Application { } public void drawMuehleButtons(Pane board, double topLeftX,double topLeftY,double topRightX,double topRightY) { - ArrayList shapes = new ArrayList(); - Color button_color = Color.BLUE; + ArrayList buttons = new ArrayList(); + + int id_count = 0; for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,0,i,topLeftX,topLeftY+ i*325,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX,topLeftY+ i*325,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(i,1,i,topRightX -230,topLeftY+ i*100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,2,i,topRightX + 140,topLeftY+ i*325,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topRightX + 140,topLeftY+ i*325,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(1,0,i,topLeftX + 100,topLeftY+ i*220 +100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX + 100,topLeftY+ i*220 +100,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(1,2,i,topRightX +40,topLeftY+ i*220 +100,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topRightX +40,topLeftY+ i*220 +100,game); + id_count++; + buttons.add(button); } - for (int i = 2; i >=0; i--) { - MuehleButton button = new MuehleButton(i,1,i,topRightX -230,topLeftY+ i*100 + 360,button_color,game); - shapes.add(button.getShape()); + for (int i = 0; i < 3; i++) { + MuehleButton button = new MuehleButton(id_count,1,i,topRightX -230,topLeftY+ i*100 + 360,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(2,0,i,topLeftX +200,topLeftY+ i*130 +200,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,0,i,topLeftX +200,topLeftY+ i*130 +200,game); + id_count++; + buttons.add(button); } for (int i = 0; i < 3; i++) { - MuehleButton button = new MuehleButton(0,2,i,topLeftX +540,topLeftY+ i*130 +200,button_color,game); - shapes.add(button.getShape()); + MuehleButton button = new MuehleButton(id_count,2,i,topLeftX +540,topLeftY+ i*130 +200,game); + id_count++; + buttons.add(button); } - game.buttons.addAll(shapes); - for (int i = 0; i < shapes.size() ;i++ ) { - board.getChildren().add(shapes.get(i)); + game.buttons.addAll(buttons); + for (int i = 0; i < buttons.size() ;i++ ) { + board.getChildren().add(buttons.get(i).getShape()); } diff --git a/Muehle.~fm b/Muehle.~fm index 67ab3c9..7d49f8c 100644 --- a/Muehle.~fm +++ b/Muehle.~fm @@ -2,14 +2,18 @@ object FGUIForm: TFXGUIForm Tag = 180 Left = 240 Top = 154 + Margins.Left = 6 + Margins.Top = 6 + Margins.Right = 6 + Margins.Bottom = 6 BorderIcons = [biSystemMenu] Caption = 'Muehle' - ClientHeight = 227 - ClientWidth = 270 + ClientHeight = 454 + ClientWidth = 540 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText - Font.Height = -12 + Font.Height = -24 Font.Name = 'Segoe UI' Font.Style = [] FormStyle = fsStayOnTop @@ -40,7 +44,8 @@ object FGUIForm: TFXGUIForm MinHeight = 0 MinWidth = 0 showing = '' - TextHeight = 15 + PixelsPerInch = 192 + TextHeight = 32 object GNUgettextMarker: TGnuGettextComponentMarker end end diff --git a/MuehleButton$1.class b/MuehleButton$1.class index 50ecccdd3d04ac6fc6bb83dec930ea7410a2429e..5cc4dbd0c567ccbfda157923a3ef74f3a73dd14a 100644 GIT binary patch delta 430 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 YNlZM{XFbAWVt`#NJRwt0!y@wg3psm+_W%F@ diff --git a/MuehleButton.java b/MuehleButton.java index 8ae4a27..ae57030 100644 --- a/MuehleButton.java +++ b/MuehleButton.java @@ -14,16 +14,18 @@ public class MuehleButton { public double absoluteX; public double absoluteY; - public Color color; + public Color color = Color.BLUE; public double radius; public Circle circle; - public int ring; + public int id; - public MuehleButton(int ring,int relX, int relY, double absX, double absY, Color color, Game game) { - this.ring = ring; + public boolean isActive = true; + + public MuehleButton(int id,int relX, int relY, double absX, double absY, Game game) { + this.id = id; relativeX = relX; relativeY = relY; @@ -39,17 +41,30 @@ public class MuehleButton { this.game = game; circle.addEventHandler(MouseEvent.MOUSE_RELEASED, mouse_click_target); + + setActive(true); } public Shape getShape() { return circle; } + public void setActive(boolean value) { + isActive = value; + if(value == true) { + circle.setFill(this.color); + } + else { + //circle.setFill(Color.rgb(0,0,0,0)); + circle.setFill(Color.rgb(0,255,0)); + } + } EventHandler mouse_click_target = new EventHandler() { public void handle(MouseEvent event) { - System.out.println("Button Clicked!"); + if (isActive) { MouseClick(); + } // end of if } }; diff --git a/MuehleButton.~ava b/MuehleButton.~ava index c61c5ae..3f3a2f0 100644 --- a/MuehleButton.~ava +++ b/MuehleButton.~ava @@ -14,13 +14,19 @@ public class MuehleButton { public double absoluteX; public double absoluteY; - public Color color; + public Color color = Color.BLUE; public double radius; public Circle circle; - public MuehleButton(int ring,int relX, int relY, double absX, double absY, Color color, Game game) { + public int id; + + public boolean isActive = true; + + public MuehleButton(int id,int relX, int relY, double absX, double absY, Game game) { + this.id = id; + relativeX = relX; relativeY = relY; @@ -35,17 +41,29 @@ public class MuehleButton { this.game = game; circle.addEventHandler(MouseEvent.MOUSE_RELEASED, mouse_click_target); + + setActive(true); } public Shape getShape() { return circle; } + public void setActive(boolean value) { + isActive = value; + if(value == true) { + circle.setFill(this.color); + } + else { + //circle.setFill(Color.rgb(0,0,0,0)); + circle.setFill(Color.rgb(0,255,0)); + } + } EventHandler mouse_click_target = new EventHandler() { public void handle(MouseEvent event) { - System.out.println("Button Clicked!"); - MouseClick(); + System.out.println("Button Clicked!"); + MouseClick(); } };