From 74ef472dd4b07360e3753d543a060f7d1ee45c30 Mon Sep 17 00:00:00 2001 From: bMorgan17 <27574085+bMorgan17@users.noreply.github.com> Date: Thu, 8 Aug 2019 10:06:28 -0500 Subject: [PATCH] init commit --- App.jar | Bin 0 -> 23759 bytes GameRunner$1.class | Bin 0 -> 412 bytes GameRunner.class | Bin 0 -> 539 bytes GameRunner.java | 15 ++ GridDialog$1$1$1.class | Bin 0 -> 1452 bytes GridDialog$1$1$2.class | Bin 0 -> 1452 bytes GridDialog$1$1$3.class | Bin 0 -> 851 bytes GridDialog$1$1$4.class | Bin 0 -> 1452 bytes GridDialog$1$1$5.class | Bin 0 -> 851 bytes GridDialog$1$1$6.class | Bin 0 -> 1406 bytes GridDialog$1$1$7.class | Bin 0 -> 731 bytes GridDialog$1$1.class | Bin 0 -> 2585 bytes GridDialog$1$2.class | Bin 0 -> 658 bytes GridDialog$1$3.class | Bin 0 -> 775 bytes GridDialog$1$4.class | Bin 0 -> 1312 bytes GridDialog$1$5.class | Bin 0 -> 658 bytes GridDialog$1.class | Bin 0 -> 2554 bytes GridDialog$2.class | Bin 0 -> 604 bytes GridDialog.class | Bin 0 -> 3583 bytes GridDialog.java | 243 ++++++++++++++++++++++++ Main$1.class | Bin 0 -> 468 bytes Main$2.class | Bin 0 -> 1203 bytes Main$3.class | Bin 0 -> 1460 bytes Main$4.class | Bin 0 -> 394 bytes Main.class | Bin 0 -> 11731 bytes Main.java | 400 +++++++++++++++++++++++++++++++++++++++ card.png | Bin 0 -> 22742 bytes cardFront.png | Bin 0 -> 465 bytes compilerRunner.bat | 4 + compilerRunnerSchool.bat | 6 + icons/baby.png | Bin 0 -> 5936 bytes icons/banana.png | Bin 0 -> 7994 bytes icons/bed.png | Bin 0 -> 2370 bytes icons/boat.png | Bin 0 -> 5079 bytes icons/book.png | Bin 0 -> 7216 bytes icons/bottle.png | Bin 0 -> 1653 bytes icons/bow.png | Bin 0 -> 5843 bytes icons/bowl.png | Bin 0 -> 1618 bytes icons/bread.png | Bin 0 -> 2398 bytes icons/brush.png | Bin 0 -> 5095 bytes icons/camera.png | Bin 0 -> 4287 bytes icons/candy.png | Bin 0 -> 4090 bytes icons/car.png | Bin 0 -> 5955 bytes icons/cat.png | Bin 0 -> 5914 bytes icons/chain.png | Bin 0 -> 5844 bytes icons/chalk.png | Bin 0 -> 5064 bytes icons/clock.png | Bin 0 -> 6212 bytes icons/computer.png | Bin 0 -> 2693 bytes icons/cord.png | Bin 0 -> 1766 bytes icons/cork.png | Bin 0 -> 4826 bytes icons/desk.png | Bin 0 -> 1641 bytes icons/door.png | Bin 0 -> 6702 bytes icons/dot.png | Bin 0 -> 2539 bytes icons/elephant.png | Bin 0 -> 2174 bytes icons/eraser.png | Bin 0 -> 2933 bytes icons/fan.png | Bin 0 -> 8211 bytes icons/fork.png | Bin 0 -> 1795 bytes icons/gameServer.java | 131 +++++++++++++ icons/glasses.png | Bin 0 -> 2978 bytes icons/hammer.png | Bin 0 -> 2285 bytes icons/key.png | Bin 0 -> 2171 bytes icons/keyboard.png | Bin 0 -> 1844 bytes icons/mirror.png | Bin 0 -> 4080 bytes icons/money.png | Bin 0 -> 6755 bytes icons/nail.png | Bin 0 -> 4498 bytes icons/paper.png | Bin 0 -> 2797 bytes icons/pencil.png | Bin 0 -> 2341 bytes icons/person.png | Bin 0 -> 4385 bytes icons/phone.png | Bin 0 -> 7125 bytes icons/purse.png | Bin 0 -> 2184 bytes icons/ring.png | Bin 0 -> 5197 bytes icons/screw.png | Bin 0 -> 1796 bytes icons/sign.png | Bin 0 -> 4401 bytes icons/sock.png | Bin 0 -> 4568 bytes icons/sponge.png | Bin 0 -> 3682 bytes icons/spoon.png | Bin 0 -> 5080 bytes icons/table.png | Bin 0 -> 1991 bytes icons/thread.png | Bin 0 -> 8671 bytes icons/tomato.png | Bin 0 -> 3554 bytes icons/towel.png | Bin 0 -> 1979 bytes icons/toy.png | Bin 0 -> 8290 bytes icons/tree.png | Bin 0 -> 8367 bytes manifest.txt | 1 + 83 files changed, 800 insertions(+) create mode 100644 App.jar create mode 100644 GameRunner$1.class create mode 100644 GameRunner.class create mode 100644 GameRunner.java create mode 100644 GridDialog$1$1$1.class create mode 100644 GridDialog$1$1$2.class create mode 100644 GridDialog$1$1$3.class create mode 100644 GridDialog$1$1$4.class create mode 100644 GridDialog$1$1$5.class create mode 100644 GridDialog$1$1$6.class create mode 100644 GridDialog$1$1$7.class create mode 100644 GridDialog$1$1.class create mode 100644 GridDialog$1$2.class create mode 100644 GridDialog$1$3.class create mode 100644 GridDialog$1$4.class create mode 100644 GridDialog$1$5.class create mode 100644 GridDialog$1.class create mode 100644 GridDialog$2.class create mode 100644 GridDialog.class create mode 100644 GridDialog.java create mode 100644 Main$1.class create mode 100644 Main$2.class create mode 100644 Main$3.class create mode 100644 Main$4.class create mode 100644 Main.class create mode 100644 Main.java create mode 100644 card.png create mode 100644 cardFront.png create mode 100644 compilerRunner.bat create mode 100644 compilerRunnerSchool.bat create mode 100644 icons/baby.png create mode 100644 icons/banana.png create mode 100644 icons/bed.png create mode 100644 icons/boat.png create mode 100644 icons/book.png create mode 100644 icons/bottle.png create mode 100644 icons/bow.png create mode 100644 icons/bowl.png create mode 100644 icons/bread.png create mode 100644 icons/brush.png create mode 100644 icons/camera.png create mode 100644 icons/candy.png create mode 100644 icons/car.png create mode 100644 icons/cat.png create mode 100644 icons/chain.png create mode 100644 icons/chalk.png create mode 100644 icons/clock.png create mode 100644 icons/computer.png create mode 100644 icons/cord.png create mode 100644 icons/cork.png create mode 100644 icons/desk.png create mode 100644 icons/door.png create mode 100644 icons/dot.png create mode 100644 icons/elephant.png create mode 100644 icons/eraser.png create mode 100644 icons/fan.png create mode 100644 icons/fork.png create mode 100644 icons/gameServer.java create mode 100644 icons/glasses.png create mode 100644 icons/hammer.png create mode 100644 icons/key.png create mode 100644 icons/keyboard.png create mode 100644 icons/mirror.png create mode 100644 icons/money.png create mode 100644 icons/nail.png create mode 100644 icons/paper.png create mode 100644 icons/pencil.png create mode 100644 icons/person.png create mode 100644 icons/phone.png create mode 100644 icons/purse.png create mode 100644 icons/ring.png create mode 100644 icons/screw.png create mode 100644 icons/sign.png create mode 100644 icons/sock.png create mode 100644 icons/sponge.png create mode 100644 icons/spoon.png create mode 100644 icons/table.png create mode 100644 icons/thread.png create mode 100644 icons/tomato.png create mode 100644 icons/towel.png create mode 100644 icons/toy.png create mode 100644 icons/tree.png create mode 100644 manifest.txt diff --git a/App.jar b/App.jar new file mode 100644 index 0000000000000000000000000000000000000000..b8a4ab6d8d0729a59cf74e8fe4bb1a1bd0017979 GIT binary patch literal 23759 zcmbTdWprF!k_0Hm5;I%O%*@Qp%*@PGVrFJ$W?9V4Xp1an3oTn-xxen7>7JdPnXNkS zSG_v*>gJ7zjLf`BvfvQtATTg6AYD=46hQvd3l;
=qfo)0aAH+cUGSo9XZoIH4he ze0oDtUe*^(7;41SigwdiTt7^q%&~dbBl(dZB{b3DAsO=NSD$AjDkFQ>>FWDsqi*97 z1_@#__yS?k%1_N~P4?1e)H9eO&b)Gv5TE~(_3{BvBP7obonS9(U%cW!%RIPC8U$Op zsu_MglV?LT0IVCY748Wr>5tjMxEXxAsx>gN)%@Z|{ks3SW&x|6v%q&Fcsb>MdYJr{ z5#nJCGi0)gAV%xtvj_;@ad~)|ftda^3abn68H*A(}6-FDTM_geP zG}uKUO&vO}pgHQ_s?8$EbI|j)qwt3{JBDHsduITnmG;fnqk+88+zLv9oso+rNs+}I zg0Qk22JDK~=4j3E=9ai%YN7S{iv%z;L8Et&Z+Fu=rInRWKomCzvzq9ZnH +v5yJ`Lf4jQIDLsf9liW;os9{Pveh=b{=^@{}kx( zp8nwfBXOKYACE3PO8WUz6Nk#w$ykE_+EY$*98YmO$-#1HeL2PP+gWj%<9LwQNsjA> z8qFz=-)i(}j^lYoCpn%RifE@eeyeH6IgV^O$0Kb{a`Z6#jpO%#(`k<5@gFBS=norw z>N 1Xd|cZ;iR@JTjr@mxA8Fsmh1-)zgTpQL-!{2_==0Hi9^c}R fgxxs9+=_o+il WcbRwCiDix^Nf$d0|N&9{{RijLxUQqVYKU+aD zh302c(`2Lh(krz6ETNyX)&TqPxCDNg8*zB)iB*N!9#IfWM{|gGCiKc!UXVWH^1t+u ntyWt3g!4Ry`&7v7YO#=pa1k hhbn5=U>301Bl7$L5ZX {{{(P=iUkuz10@R?6fG=aIS&J6RaOkF8dzg+n!Yc>hR35w zL=4u0$Dc)5yAFH?)|>$Q36QHxU&coaT6O1&L2m?if}zlozBnBYIwHK_9gh%wz$NjE z)!SB|kGSh`zvs5&Q2M=tNu~Y6gqs1`=S26pcTi C0%9Zp literal 0 HcmV?d00001 diff --git a/GameRunner.java b/GameRunner.java new file mode 100644 index 0000000..7747907 --- /dev/null +++ b/GameRunner.java @@ -0,0 +1,15 @@ +import javax.swing.*; + +public class GameRunner { + public static int player1Won = 0, player2Won = 0; + + public static void main(String args[]) { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + new GridDialog(); + } + }); + } +} diff --git a/GridDialog$1$1$1.class b/GridDialog$1$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b6fdac10fd4ee7bb667d85f0515b208de422a8be GIT binary patch literal 1452 zcmaJ>>r&G|6#kYXfv}WTP!YuoR&0w>3W%3_LoOOEf`U}MhjuMtLc$~g yGlGEH#C&NRE{oNvE#_FVS&pKsp*jN*L@I?<=%7%nMDx1bxD7IY!2q92!4 zT)}|c<>Y5jMIJ*6hE=p;L~5=|{HTf;u1WE_f*UH5xT&ImTMBL~xTD}MLzA~`xG6e% zkAZ8JC7f|ncU|Es7-L8jA2>#3!q82-n#!m01v+rcung}GLr40sF|)wXIBr)2LwnJ% z#FO>aCE?8LOQzK5WzVp!S>b%JomEj`IGZl6=o@-Y-}G`~Ls(vJ%!f?MeL<3`bN0GZ z7E^{#P!DB5o+HXht8Ch?VO6Jvw`^B9&fz@A37q0Mjr$bLv~E}& #FT;u91o!> zc*OA-MUH7`98WN#V3y-4o-ri-kWAgG<}}L_RpD^VVV>hT7C1_HA*mNRUg8x)_o4Vp zhE=gQ{rDy9wSqSsZ}E;2Sr1<3F_kA(-P6p{iYR*wJ%{*$d=w4W6I2)~P?&`w9u_5K zEG@GZl$6AHq(HKEez6CMC}bhMS|=hwFPDYurt*UX> n=;k{0Uet4tZ93R&SO*BooL2WfBE2Ug-nGmt0<>=EW@^pUw}j&|Fw$geO&q>c z(AHs%rfGgZ*RDD!`7cEH52ZF3Ig0UEXh?$gD)>|#kxK_~hPH~~uIXNR+3!KBO6c@h zY5ricXihrmSs^=EA|VHc9-IdHpGFU9&(N-yWT{cJ{a?YdyJ+}A5)CbVn`i}A=u7if z!~cZh<3H~swwT=p+eYIyj_jdn2TE9Oj>ut4%MR2ZXx#zdLtAX1ZmRG05CJvTK=EC) zm%^yTK9Z3r5=s2p#nByf)UOez#}Qb?7A$;%O;Rt(4Y+_5t&Q}4Uc^b-b(5uwR{84= J7D}K0`wK<*T+ILg literal 0 HcmV?d00001 diff --git a/GridDialog$1$1$2.class b/GridDialog$1$1$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1277ba3aed62256e6770a0805ad5b02660b83294 GIT binary patch literal 1452 zcmaJ>c~jFs6#p$Cfv`X;poriZu`Nm|ARfg75j0v3rGki8Xx9=Zq)ZYnKaG9_XAl^j zar969P>yetGEH#Cbh^9m`n|XB*x!G?eg`muca3OAuZj*_R*+~!7m|(WL`p>;uBf<* zetAmEWk5v+g9?UJG+|hBu1Wn76}7l7$r}o8s)*y3iY!JI+*WW$!Ci)WZ^d*qGQG#Z zb=wxsxMjGma21R(#BvWEv-rR?ta3@qXqhY-jGDIT-C<};92F+#8S2K%MZwUTGi@=w zv9>Inys>Oaj#2Q;vOO!D_hn~I6dBGYa;wIskv6uxwAd83mmc#~CgeFQ!PL3(hEoue zrVmgJrC-_+aLggk@f`CU3wR-+7dc*HiJ|LA{0pXC zEN}VoOSM-DUUR&`TS{a#c$r6SkXThuGs~-@;4$ c16o!^Csbv^y z6EbT-Nr`NU6iC+2FZKWdg(SpRt3X5;g@SNhEi*uhz2PEflYYUr)9x1KJpDK?w!KMH zSVe+3Aw&OH!l0CdClwjm6M=o&&+eS(5QubM@i!>_9TG#5(EjIqZrzmKN&xK<*A+fP z138{ItPSeDsOKQtWY}QZhZ>YQz3P2fdXGoE>&YcjXxcO^ZQU| wZ61t~wy`FGlc>q&65iim@X!Btd&+eW ??I|c$a-uc ze>hn*C++mCkQ^))lLJE!P7VFL(L>xbbh<#a
FJP&C)O;q2hL+ZP+JOyPY2GUO zKcV>gpT41XF|`Y}i@IGLJ3##&lrY^8p~I5KJ*Yp>v +9r}I52cj+zU4x6zXs@I9^Ab+csf#3?w9Bt6 J*eHGe_ZM75T>1b2 literal 0 HcmV?d00001 diff --git a/GridDialog$1$1$3.class b/GridDialog$1$1$3.class new file mode 100644 index 0000000000000000000000000000000000000000..4ff64ad687750cdfbd748182b88ef8323e34a59a GIT binary patch literal 851 zcmZ8gO>fgc5Ph4ZF)_{;p#=h^r8U$^p-w3D5` r78-v5)~Ck$6k`HQXAQB!;u60 zAf!MMNZjE^A!gU0xLL_NJG1lN?z~z5{`37OfDLREP{2(cI&KwE#(V)q+}5#xMGbd! z r9$JZs~%gQf<|q77?X(D6UV4$Z=ekN0HfTQQ~sC zEuDsv_`MyCNG1Du(n-S4rnFBq= &t z9SoPjDizrWdXyRZs<=YY8m*Sdml3_W`UR|cj?8EB7_QQsCkuR_ncDa-e;YF@-)fG* z#>kG5`-Yhx$iKM|sN&Z-w6C}{Vbc}vBUbPUSzIIL46fq_*&O{Db(CmTr=22MIm(Hl H3e@-uV=}#y literal 0 HcmV?d00001 diff --git a/GridDialog$1$1$4.class b/GridDialog$1$1$4.class new file mode 100644 index 0000000000000000000000000000000000000000..93275557a56f396f27a46400f5fdb1c2b29bad33 GIT binary patch literal 1452 zcmaJ>>r&G|6#f>FKv 5eESYy7;oy)igPO3a9%;89v$eZM>~=# zdT~L;MfAyCN`CrPq%ojiP(=fVq~?;u538ugWhq`!a8*Sd*HmP1UBL|nHx=AssP&di zSEHl18MtoS!Wp#;*A=dU5r$ayu4CrMOv5S`w6vDa(1GiwZF)BuS`r71J+lloqs6>n zXwI6pc(AszD4ZE%(UKY?=b1(Ok#OD?ofVO1IGM;U8|y~O*zi(fUD#e~#D|Q_eMXY0 z)5SF>Cnijvpb|=-JV%t{cFrogrd^m4-cm8oaSEq7j^a2+C+<)%Q-*1CjAD#q91{xe za@>QiV3OlLvK&*;IUeAlf=3*W@q{7nhh!OcA*I`%C zIu67?XWIGVh9AF#y-@Iy;}u?0A}hhmJZeLvs(5<1xGZuWL)QVmARk%N^#m1$3KV8x zXbOv3nxQ%&vlf(;#HL7rWbOQ7_Y+abLVC4AM1qma3D?!q{RBK0E^?;FFW6?v-JqPO zCTGN^H(?4ZPZURF=>J+6l!EXikfAjZoKN}Lo%S3ek +nzCDo zpf%#UtY@er$FqjDM!gsH9Aujg)|vJ`f- >xQMRTE>=eTn0v( zWVwmMcM94%tkHGd@8|MW`z8OG2>*f91|vr?wuOcyXs?V<)e^aM0B2~-o9?RN<(B*& zq^g8YkIc>NPZrHdD?KY@2aCnzz|ezJMgLB8k@f`bx=EHAHQD (zljY z;2nKw-pcr&P<;I7Jyg#px52hivyDT$s4YPW%XJYsY^g6n{egxO_%0f&`zof&ZWj?y zO&Qd*gXXy~Dz=AsB#KxZzjkoAgqF%Rn&@!^-eU_N@ChGD>L$4gXQ0tqL+|HV9HU(a PS=wopzm8y`^!dNPh}>ON literal 0 HcmV?d00001 diff --git a/GridDialog$1$1$5.class b/GridDialog$1$1$5.class new file mode 100644 index 0000000000000000000000000000000000000000..82f2a482fcc911b4b64a307ed96057783b6c9f92 GIT binary patch literal 851 zcmZ8g+iuf95IviuF)_}K&;o(d(i-ZdP$yja5` 1r>#hL`B8p#$J-GTpQVL! ??2yv0@%c62_; s(tB;=f_6_5$^MWry|^mW#GRQ;oBfQ5-!7%)j#AX+~(uh z7AL}w?X4tbSFL-BOn(&|hmLqG6N2egHWZF1cYVhTBIysGiFg#a2IjF~z(CDF9c=^a zxNYDLHZ<4 &BFgMgT%Qt=!yQLNk=f}`;%c@n zy;dUedpjDFO7_#VlZ2noXrF4(+fz4bsCs778OpAV-tpKOB| TTc@~6#j qR$i%Lri9i$08b(Tk7_FTxTc zGCUZUaR+xLM1?XYBaVbvO^9Jq#uV;Jn3mCn`$F?T3=btdl8}@z!{9MXnh~6k@R&hK z={m2@l~u#whJ+^!zVuR6E6i(Zxl#-!f{7#r%xJo1lC3+`Y7B2OxaTSb&d` YJGc$=S_yemhIKMk=6{86D>rKJqtspT?{4|Tp`i3I-w+X zI_MG1Syaa S1=>uH1N6UzK`L@nhzx;H zy^@$kQ^u@PIkw6t1m1ZYCWR2Z2t2c=iHkxB0uJbgo}rz9H`Ve!9eXEoooWhf*YtA_ zqD`E*M(I-m-S0q8h2N1wsL?cg1@-%5*ANRBrWYdsA_>gr6SsjLk~aDWaGkV+w7NyI z(8!VT?_iM=w0$Fq;RcN!nt@L=(q(G+pFy(xKSqwhj^R3n`xKYX;MsC0{P=wWsfPA5 zcpVnGhRb$O#Ua}*9W`|RLRSsGQ}|ucrm49)g~Q1mEuG*>u311QTvWhkjNuDD;44Wt eNp7Q}M`(7_BO1gtTJ@8qmuB(x)hBA4_5A~$j8a|z literal 0 HcmV?d00001 diff --git a/GridDialog$1$1$7.class b/GridDialog$1$1$7.class new file mode 100644 index 0000000000000000000000000000000000000000..b3651c3952b2be1f61cc56a3b20bfa2d22627f86 GIT binary patch literal 731 zcmZuvTTc@~6#k~I9l8u{v0hOw!isGXw)H_DYD^5G!PH9v@qM~GmLbcm*;&AUWz>3! z5B>mul<~~gq=hia&bfbk&Nt`J-(SB0JVd7gj+-84uu#DqZdEXg+a4CN >8ue?O0l?EXQ4jdjCbLqi0&i$ QT$ zfq8q$aT==UItQ4vvgPUsa>s;mVzn8*QrSTg2{dp;z(ZA_hIN5^XbQB@=GYLpk4=s( zfdK0?*aXbY k4FB@Tj@<9DL^hU@#Bn}J8#en_ms z3N6PB7%E`(x}%GBra)f}b@I-Wwo111c 6gkq|D0`zR)keqKK=MT);J4Ct0Emy#Ybm0!3y?x-&Nx)M|eI0l3wh AX#fBK literal 0 HcmV?d00001 diff --git a/GridDialog$1$1.class b/GridDialog$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b0c2bbd2b46e715f66f50e6137a2c0e4dd5ef991 GIT binary patch literal 2585 zcmaJ@Yfltc7=8}y?kvLy2;NYsi*766BH* &2?Ay=rS~nlx=pWU+2y(y#r{r0Iu#^AGq3+L)TY@65WFV!DL$p38II>vPVTUmx7Q z17IDlmS8QqxY;h#@VOE^iEbHD^vLK%pN!}6f`on 1gh3fK7~+8*#IS^eGHNjtgdt%> zMwq*%1WU$p?v6@0B%^`5wuGdNM(#Qi#$+_JnqG`^Gr`Sa36m0zNO)DkQ30jPG&Q@^ zP?Je5DNs7D8sSkxoz!d^i7tVFGo&ZOEdpiTTWvkDNmmVPFx=8gD;srFciIFh>k5~; z>URqGI<15zP~NSZTF= >P|VRc+>QYV}yZCo>* zrgj&ynftA*Y*xRc#t%l-(Tonc-x{;y+7{hanDc8T>md`H&A4GDb#pMPIYU-LK?gb& zY{b(FHlS5O8;&V>4aX&%P;e5jOL#-Un|MpY+X~*nF@Z%{k63$$I@oEMNyk=o(@83L zmzA92<}@f1 jY!F6iy$=@>*zKUY$H4Q4~|KnB@sro5cL-VZ9)U<{I z?Q=O68ebXe?2XQZtR(_ 2 z^bQPbaYvvgoAiA0b?Zq-qoYC5
qiJcDW;oe{-f-8hUk!ahUn_aI_TPA?~Bz0 z-758YOP$upsAckP;=%Lk@7^zSA7P3$Rpr-=kBp0+P5QkXDo2u~dDb39BX^^0YjnTr z3Duz>C0iTi>x9xjN=!$Ho|| !0V*a2%IE}I?l&4V uFsS6{QIXdKZON3 z<&BXPs%co{yM}YDQBGrFta8yb7H{xX`_ib1k<*W*uq3yq+Q*yN2M-)#u)o@$MlFMv z7J~gQIPeg>jKP8GKpJ5NKVAq9F!(z5<~(^K>&bG)*A?Rb<4JwilLiK_C OCj!|;cP)y<&v4g>ioeP zrbm%Wj}(0%0DI`uV=oq9AAM@<$5N=os{vwQoG=Mm(O_T@4u&uZogT+wdWa6;Dw6n) zW^Z5&cW@NH(KGr7j^i#);2u4l_vvkXfK#Fvr$rggh($OrR^WnY#zoPJOJW;6HoI{} z4B@I6!PmmZH{v9&iL>}tT*eRLd;Cbj{3L$Cl=vOf;x2B9d-z%Wh1=LfURS{P4<1Me zN~pMxSh 5K%$l$#(MrE6cv{qS$djEB%<5yZH>Co@?i2Fhtoo_JAwEj-DKQL4_(^xS~ z_q9 ;WKa{63lxKOUPL;{Smjz|Z**(`x?58JL zq_%a@U_8dUtD}}%CQ4GP&G4Pd57OAf3}!vl;CYxr)598kjz=CI;|WL0LmN%nXWYl{ z`p*~|#T1D&!*F+SsG^)<`M-npwapbtLlRB)U?{iTv?C2Wl%0@;^b%t-IWmfrwSK2V z#I;EQd+kDwPoX`djl#Dh#i@SI4f9W!fyde&r&eK=u9t)1CRn54mZw`U(L04YMW@MX zlJ6oSczOvId_n1)JX)O2Dk1QVPSWlVKOl7cdT;@Df$~>WKI6u?Mikla^o1WNV~&_5 X%wvJDLO TNiY)8t~^a}IeGC?t# z_+9@f<8!U1b4_~B%l)3W-#x#6fBOO8F}hV$aKlCwt5rC-Y2y~wEZnv+hjklwuwkKT zVbg-kP)^2DyFCkc8Jq*9M7$Srt%YV-7(9<<@Ko|J8o9kbVV_7PlO2Xe>;J3vJBHF; z6bOdeKq~R->~tvNLp}_Rhx>_))Ef~WNAal$7}i^Z6MoJ;K1n=rE>z;}rjUK3_f0bU zZFCm<;+aen YflqF6g@)=Th^tNR}~Zys91{j0rgpYAQUW?hqi$jKP~OpE-AZYcX@o)pW-ht zK_HSCzv_=N-q|hemKd6JX6~JP@40i%%>McN<0pVD%AM%NxQsr;IuXTP86iwaxF@3> zaT$|HNSG4N`!XINDOM>lq-A6 #Vv+#amm!G3!2(6YOzd?VrMm7vtKau#9Ox}HyDERMwK&k7d4%)?(J-Gv#f44 zgh#E|nxU_A^OIrj@G8Sdytu9It10!sPVs%N+o?GxBrn!EQA{owduD|%YEA*Kjikt< zl6k$-Ff2{4t#G?;R22;4wt@lNP%wy`f>}IQ@B%LxhAts(YI@Z;aF9goD+zN7USpmx zJs1TG$V*sMu!J`X3dk#1##;$R1uIx30-UN1Rj;KAy3K3cRIrA11@G`)lr0f^Ub$E% zmSu=|Icr !p{Q9lCm~1>e+`B}TyWzmmZn{w2&9gzRw~@GV(B#Pjr$eK zO*(uZrmO>^EVb-PN+| @Y|*ZVQv4Kkl9+ zwNbB+j|M7xF9(T>$SBvTd8@LIX?CPyhV@qeP@c$8p5~!CQ6>+c7nB`m_gpjaE oN#$!Bob<}dlL`iD38Sbn6AdNlDV$MSio`-2PJ#50~xbNWs9&)riw9%w}#(n&* z|CFIoOp!=44Bre6Rg^QV{&%pxwz(o{NTSIe4CR)acBEm4vJ *Zj$0oG`^<>}T-^iHEr(HXLu z _gdbp(F^12&97 literal 0 HcmV?d00001 diff --git a/GridDialog$1.class b/GridDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d027f884f37129174d10ef7c26808488f2f7dd8c GIT binary patch literal 2554 zcmaJ@>r)d~6#rdF*sv~75sPA_5)}}PVATR@3lS)afTC#nWJxYzCE2B$<)O82`m!x; z?MvI*r+xQJJ0)~V$NHf&9c`!oME?fAb)25F2_aa |or7#}wEq>XBe04wDHclM1F3Oe;7opmm$3w1Y7{k&p?2!bv^mHz(r#G5xf( zX`{U7ls>6X2NF|;84Vm97&lnHRUpq9H4^?EWTB_aHX;WMJ!VCDf3IO0&VGT-HQ5I% zo2eZX@C2=h6e#L3OxZgTAC~qpeK^KDde|{6vtQaHmK~Q7fsHk;nSeg!1mvVNoj{u_ z(!tNIY^-3w(Zgeh_3^X~b- WRx?wsA4KL%IhF6%p%H%c7YIq&96jes8+e}CnZN?iK-o$x F^a0)((OpqfN@4v^&8 QbuBxuGMyi73C_!7F;xmEO%Ytd2a2(4N$mttn)1MQX zmJ04~^f&VEWes28OATM)9APD>n_*61xnL6uey!mfZp61tzT;|Y+13P#-Q3((^bMbq zVMky?Cf#gw^cV?85@-d~B@1LOY)jpdDc}m^)-Zm`mSvPiyMQk$ok2Y|L8vUNsZD_} z%QL~=M?FnTkfm<&rH8{ZK@+lrW~6%AETjx%nwS}#<>g!qtdM*YZYTw(UpFa&^2G=k zSbRcwa!1m|hC3XYU4eXC#;r-&7NatIMhspAh3AbDB5D5fd7UyM&L}l}N*d8oXPP7q zWH^#hYP#vi<;gQ#Koa7X1~G+EDnWUAI^DtyI5tgHtE;6@28=&a%MP8lNR3Y!c(;}| zZ6PJV&=y#`l82NFnv;}^(yTke^}uoG>Jhp=YO{`lR(#wt`P%q@H(6t`eU03{Ew^jm zF*)sY8Zs84To$#OSZk5l$&CMYCYEm1H7jJu;ZRmf*!4H2>RLisr7plFh;Pcuait+} zZ%McL)aH^~th$NYlHLJEghqo(Z_9DMtq3~fbg!a{-h)jL*omCtV!j>$TIsH&cV!O! zH=~74Tj^;l@wv1X)oq)DsH>ktPTf3mf1oXay+re91sM|9hy5v~oIWV@2XV3PC*&mI zxe9L*dHaYHKSN2vmqh*o)X+Ru^)`6spf%*qp`gJ#hr))UITSG|ZdgD`$m=Usee)=t z!|DZ;g-X}t&ZE4=Q{h>_+E9fji93?0Al7|Y=N+2I`XnmTjw(D2No-&T1xyOl7QJbM zX(`w4oeJ4y>GWo5*~mMUp34YuYz5g0RVymo k+A&3+D>LYzmtH4k(S=L& z9rYu+@jDLT8cF?4-zEQ`7dLPO|Kg}9!GNg7aZ!gsu?r_e5Wk9kToK3dn;61X5yv0m z46cb8To<$WQ(VAb z610eien3A8b-YD{A}p $+wF9`olM1>N+xM%mGL#Dm3=QT*mxXRI1ngpq%m=zr8Ip$J84t4FWZSjWMoyU zcPTqevlEI1s*TpMJeQ%oupyn3w&8l7vgQ0$N9OOPXIVtsDktc+@XpmS<(7_;)F|Eg zMD{3+Jxm9vq86YReF1#u&0yBUT!1=iETc ^q6KR!%%*j@Sr z7Vu(aPE$ju@tc*w07RwYl=4#+`18@vXu#eqpL3+Scn#6~g~AU;1zzy(DuHjj4`A>< v|1DdW-`~7~xIytJO5FlK4_z|-cN9_Kv;v0kl5L59nOB%(&u4-jw!HoVl#heS literal 0 HcmV?d00001 diff --git a/GridDialog.class b/GridDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..3a399bd6955ae56a43536a999dae5c1610cab61d GIT binary patch literal 3583 zcmb_eYjj*y75?tL?&NaYq$v%VhJ?_jWs)|{qXKP$wKTDqnsg#5ty6q(Gjo&NWO8qq zxoKKdKvBy>i*E{o4^Zm6pv_Dmh^Y9g_(B%Cmb!F_`h&Inp+Eg${r0^x$xNBWFYk}@ z*ylTYe|z73_BrSO`}DH_uE9$h_99ioCM}IA&4e_Q8m`Bb3QL13{d5#F8fuV s#O+yS*HEiA^&3mPJpNiWxw1~18 z?oe@O6z|t?B|f0yF6lq0p$#9B=EKsQ6xrRP@17{`l}Sd$eNlWwL#GTss-YXFWO9EL zA5-yhfqp`oPfGJC4WGtmq 6hNq2V#__J)f@M#39T@b){R+aiF>CfHXsld6WFB|-TV^I*g7gxa zGO}sv+*kn}o3q5?h?6!m1V`=p*#RHdP=Py81QHXu&ay3ckAisIgLGvKavF29q}Kmh z$x!=Y1)%{NP*6K;+2+Cd*>N*_$QaL15{%2Tp30hrYx-`{!i14>oh&)WhuUu*Qm|&s zHBvJp#+ 4&t>Xluk$xfNHy`GBI@RjzwLH4Yx*yB5^jXCq#l)2xM_|&dCvO`ip$Bh`% zaR6`CaRc`2c(XJE7}PP0Q3dO( gq96RS`4a;_OI=+RoI-Zc`Nt|VfR=`7c&J@76@f`*A6{LoZaWlh2 zD*8KWrDn{mP&`NBih}))O$v+1>nLDJ$5VJ(Fv~ig!FP2$i|-M=xz(9y_4VZXE{^!V zdDnGp1%bp2(|YyiwRsVKPRIB0119)@VW)(T=V<9zAF=GTv*5XEc#i%M&+GURMs@rc zKT+{h9Y4c)9Y4nlDt@8kmlA@f@PdwC$>`Vkjfxj_{1!)a9L5o*=c;`Lb)J{rSxt;j zn< apCSxek+EctFB>szgT_2$c#;WqLV-fxYGk}%rQInO ziU}*jh(|0hNyycwB1-(cA(4hEvG78mPMWSHhn(1=53*52+$O6BS%`TON~`5H(FcrK zxB2ysye_L|$2UYjeM9wSUV3&U3_&BER?uFyG~mq6Ikrh2WuYw#+?I+8Q&|d2MM*TT zqvq>VuI1RnR?anfCn(rdX2(268(ozMFW!x0JZMfB^BH#_ 00r5QA#bzwjnMa2xYLe!1p9fXY A8!zKO_?^;@-}6}T#ZpY5m-%OFX!)kvp{A3& zBjIPXWH6XWhJuN{XuRp<684;a1iP9}#+}`v#?TVp)EIi;A+*LDL#f8d>4#aLIochG zMT7BEiCC1FQ;B$OYUs>`=VQ?)s5s!|cQ11rBox3Onc;t8Lj9S}{)KM-l@7duUHBXJ z;O{)O|KQ1dl?4BZL)>vKf)@x@RqR!QKu~1>aDn28Ckd7Wk&7VoiT7>M$5#3npt9)J z+L`;c*?Z4&>>s-bd*EMnQM?_=BD$HqNW=02#e;Han9!rRxe7E?4f>9%&|o#_JMpe6 nS_9Rf@5U`fXbb%k&mtX71t_n 1) { + c.gridy = 2; + dialog.add(new JLabel("Name 2:", JLabel.RIGHT), c); + dialog.add(name2, c); + } + + c.gridy = players + 1; + dialog.add(new JLabel("# of Cards:", JLabel.RIGHT), c); + dialog.add(numCards, c); + + c.gridy = players + 2; + JButton okButton = new JButton("Ok"); + okButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + dialog.getContentPane().removeAll(); + + GridBagConstraints gbc = new GridBagConstraints(); + + gbc.gridy = 0; + gbc.gridwidth = 2; + gbc.fill = GridBagConstraints.BOTH; + gbc.insets = new Insets(2, 5, 2, 5); + JLabel playerTitle = new JLabel("Game Mode Picker", JLabel.CENTER); + playerTitle.setFont(new Font(playerTitle.getFont().getName(), Font.BOLD, playerTitle.getFont().getSize() + 2)); + dialog.add(playerTitle, gbc); + + if (players > 1) { + gbc.gridy = 1; + JButton localMultiplayerButton = new JButton("Local Multiplayer"); + localMultiplayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Main(name1.getText(), name2.getText(), factor((Integer)numCards.getValue())[0], factor((Integer)numCards.getValue())[1], players); + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + } + }); + dialog.add(localMultiplayerButton, gbc); + + gbc.gridy = 2; + JButton LANMultiplayerButton = new JButton("LAN Multiplayer"); + LANMultiplayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Main(name1.getText(), name2.getText(), factor((Integer)numCards.getValue())[0], factor((Integer)numCards.getValue())[1], players); + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + } + }); + dialog.add(LANMultiplayerButton, gbc); + + gbc.gridy = 3; + JButton onlineMultiplayerButton = new JButton("Online Multiplayer"); + onlineMultiplayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + } + }); + dialog.add(onlineMultiplayerButton, gbc); + } else { + gbc.gridy = 1; + JButton singleplayerButton = new JButton("Singleplayer"); + singleplayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + new Main(name1.getText(), name2.getText(), factor((Integer)numCards.getValue())[0], factor((Integer)numCards.getValue())[1], players); + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + } + }); + dialog.add(singleplayerButton, gbc); + + gbc.gridy = 2; + JButton comButton = new JButton("Player v. COM"); + comButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + } + }); + dialog.add(comButton, gbc); + } + + if (players > 1) gbc.gridy = 4; + else gbc.gridy = 3; + gbc.gridwidth = 1; + gbc.insets = new Insets(5, 5, 2, 5); + JButton backPlayerButton = new JButton("Back"); + backPlayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING)); + new GridDialog(name1.getText(), name2.getText(), factor((Integer)numCards.getValue())[0] * factor((Integer)numCards.getValue())[1]); + } + }); + dialog.add(backPlayerButton, gbc); + + JButton cancelPlayerButton = new JButton("Cancel"); + cancelPlayerButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + dialog.dispose(); + } + }); + dialog.add(cancelPlayerButton, gbc); + + dialog.revalidate(); + dialog.repaint(); + dialog.pack(); + } + }); + dialog.add(okButton, c); + + c.gridx = 1; + JButton cancelButton = new JButton("Cancel"); + cancelButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + dialog.dispose(); + } + }); + dialog.add(cancelButton, c); + + dialog.revalidate(); + dialog.repaint(); + dialog.pack(); + } + }); + + dialog.add(playersOk, mainGBC); + dialog.add(new JButton("Cancel"), mainGBC); + + dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + dialog.pack(); + dialog.setVisible(true); + + Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); + dialog.setLocation(dim.width/2-dialog.getSize().width/2, dim.height/2-dialog.getSize().height/2); + } + + private int[] factor(int num) { + double fac1 = 1, fac2; + double lowest = num; + int ans[] = {0, 0}; + + while(fac1 <= Math.sqrt(num)) { + fac2 = num/fac1; + + if (trunc(fac2) == fac2) { + if ((fac1 + fac2) < lowest) { + lowest = fac1 + fac2; + ans[0] = (int)fac1; + ans[1] = (int)fac2; + } + } + + fac1++; + } + + return ans; + } + + public static double trunc(double d) { + return ((long)(d * 1)) / 1; + } +} diff --git a/Main$1.class b/Main$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b6d83b5d2896428e38cb89fabdf78bbe0c9c0d3e GIT binary patch literal 468 zcmZuuT}#6-6g}BGyVmOJ_s1NH>|st>^~INoAY+2isi63tb#cwyQfRaJy97VL2Y-M+ zO1znZF9ve&&Eed8PLj{B_YVNas5r2& Dk!yV58{4LD|C=%4E;* zt49ppg;FAI4SAM{jKQCZ4!P VMMlnuXFe+GL+ f{*UcW@dl{`$fHD@9DFQLw&<&XHQGkiqD<=>_ {C`M(PX#tiPm86)4ZwY}~kTXu77P#u#vOBZ8sQsiqHe `X&OI;BdG4Oye}DV}uz(LiL@*^|2oGdTV u@FovvxQACBd zEa8=c6|5?Fjhuuv1?$*QuqixSLVF{$ZK36bR=`_^!I}AVed$s#gj|5SY8<6@t0%nX zNGK{OVMoHQf<3&G@LoX~6=Flcn@%$*dBfn=x~|$bw;9H7oUy3c4yQ08Oyn^nyJWb% z%8o^&Wjplrdh+?a;KdUcvIkuGGnH#F4A+{LMeJ3y1}|y4t`PtVE)XihL+;uqamB#M z6?Tz1WT!TomMUI{Az&W TV-L5Tm(6x(?WMcR(RFwP#^z3ipHu148%ihkX_q3jg)|*lC?q~f z+Oa al5(Dh0QMR-ZcF) zeD+D6nDNb-Hq7|o`0NA!0B`u>gTjN3j*cUqvzuWyo$kz@d(Y4No$uV;pZ@#)2LSW9 zna2p;U{Pc-Yhe_nJdR+F#Ze1~@TQ4l7Aa*G$636^zKVqtc-z8B%(MEAg?Dj^z3-V= zFmcAjS%JZI+nWi4P9z|zJ=F<3QVqT4Ml;80Q>)vqzd)PQuJ39}8Y(8HYIXLyKyE2$ zDuLme>#NJ{)~X6u>{X8~wxiv^zpBF9LD*7Ff$3uHuDx!T?T#+1b>-{wxj1B*_X}KX zS3}#*y}Erru3_SR0jm+TLq}b3xn`cR9OEKXf7y4uAaeaXb*0yWril+ECU8z-ANEU( zVO-)B786*MSi*UUWmYfXLxEAQu~CjXlwQ8H*w#AmB`%^WaS0zu)L7JU*~ArztN7T& zHHijRBtF4)6Q4?a##L`%k%(bXGbaRO)%R7n khKg2YjBT(wG7#D8nkUCgMcuiZX$#k+srgbn<9-YrK7{3+AZfl*#d*5~L zaYX)((h27RdyBKF(n%K-n-5hhSXYah;OtA_Y%j>i%G<8rtolv0aV_Xjb2~>8P`Y}< zFJqSiuic`;hG(xTzKY|wwqdTZgJ6vG4KcO~m;`@CZ4lZ0;CoE UK%}0%; zx$U((dsARQyDgs2XdihiY$P0e(l}xxWklKz354aWDZbI#S;Im4f=5BXkS!GWfSC z9gSDIwe-nn=$*i;6g5e^qon6(-CLU5f+$UHAyb;#Lbmh>x$nqMH;SY|EAR`+1DH-S zMV;~tvi@A!gxJJDvKVt+m_K5$!D_#!(nX#vH#TA9zSx4%%NY0u4^q+D3Mm =OkjFqKF;GMnuaV5)FlK1Y(Qov1oTi;cbdS(V&;Mh`Sa|>d literal 0 HcmV?d00001 diff --git a/Main$4.class b/Main$4.class new file mode 100644 index 0000000000000000000000000000000000000000..6723250cc860dcfac827989ca04deb88d8d8cc21 GIT binary patch literal 394 zcmYLF%Sr=55UknVWRrC@F=~8(H-*H5@sOM1B|Z=m1tSshG)aayVKWQ+5cID+1r+=M zKT51oFo)^tDXONc=j;3Z6F?g~0SZ|4Q48Q$T=TKvqb^W9(MD&d0&b%@5b!$jSP4|R z+NkS%HdM)-97bf^BsT& 0i1}tCf~N l;5^LX-Y?|#BOzY6-78##6ggPN3eiIaRjjiMX!eLe=?AI8M~naf literal 0 HcmV?d00001 diff --git a/Main.class b/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..74bbbf80fa693a044efee04baf4b70ff26572ed0 GIT binary patch literal 11731 zcmb7K31C#!)jsFW^4`2WlJLj?5rTjqAuNHYQG+NXY=H!jL@ by|rMLO5%T(9$DotNmmROi!mUZ!({&W$>sq4RQ` zSLl4E&P_V6)OnT8t93q0Og&rUa{|1ELlzN-4Vvw&X`SF&g`iDv_R=CUTrZ$qKvY17 z#xa8yI|OmTbZUIA#tDNOIBC!_P6@J0=M5TfH26H;WY8c!UyxtZ_yU7gb5aIh*Z3P6 zU#Rm%2Cd<724BpVX#7osH}kg)I)}e4W^574OJ!&qbeYCm4Ql7h1^pcXS6IZnT}Z!c z@D9FGz*QQ5&!8lK-#@Dmn}~n@Sw)$S(~`{pK)}`hS;I4Py3-M9*9f@Q;OqE$|Ey9M z&o}Um8sB8l7QR`)En>l~0(NTjiL|$A^dD(&*XVO;?+|dOcx9Ie{Goum1pG+&@0Q+f zgYV%VOYdHde`3(}JVs(`kH+^Ibd#+6Cca 9?|({vKv3Q5X!dK9@F@7gSz<%;rfMa?7ae>)cGlCAJh41 zjelv-0e(itzY@96im2xV{93^Ck{5df^l1Eow7(JXqJWnIaPiC1`>pg|k>2kNewAMn z$NXL#^SXiF9|XK18eX!wcWH`y>O~f~%;aYT?<56^du~0{NI+Inm zKC~fJ9u37>%NtUONUU{+J6VBtT>?~0MK;lS<;jhhFJCxMupkRWV(a2dL$Pr5FcKRp zk~*DfZz2?H$!hCLMWW@)fQfg2#)yX2hNFui6Lt+*HIPAmTMVX$u5#wHwqz7}*QR2a zA9m<`byq4Ck3oyy)-sTYI#DlnG=~x`^Ahn`3RHns*wYy42q$1uzvbIVAy3Jy&3xGM zGa^lFK&mm)+%8P;|3d6cXEd}aoR~h}S+6^+aEF>Z%jEX33wbWCu`3bFjw+l{Mp{F2 zJOKq6Y3|UQvRU+GI2vwFg|Puc4{=|gdpcpIQ26X+!C$9DVv*FTOl75q@5tep+S=NQ z%Mo2Q@fO%oP#1}X7k7264JR5yYoovnYDk5e+v`J}?$~H<3(Gjw+{WZ772ZH1+!5ap zu1;Z>g1 zOKq$reBQG7My8_%)`P_$RSL4SHSuUy2h1`W;$4a6@VtmDDNqk9rb_ylT*yNa-O|sR zY-b7lSdUdDHVMhcCjFKEb|{@4!6yBkJ~Zhc^dVEBosl^?V$wh9Um1K(rowSGA;hOX zHyZA23&m2{y`^pN0rsIW5k})*8crnRFkBb!bfqMkJ&o~ALKy0lk+(V?Z$~pHoJ8ZP zmJrb9XX=K&D7 $1r)xc9N&V_X_ z2^#EXUOWL7UqfeH4D!y2$HC#NiQ1C<)$vqHoa$TJl}Jiko#;v;H2gKllSBxJdMr!~ zuTF$R5~mH#i7=G->m!MTh(hRz0zVYQT4n9kp&0(N4cG{q{EhLBP$~|yuqa>`hs09< zf>4K@ AxZ b@0;`iy{{{H<1>|SssjF4Q-!7)tSnOvQAO?^m5Z)9sL8RU%^g%j zMb9u(4M$HEtD{UcLXFf^iK#}Zqct_!RAbawl(DR(^H7CMb&MJ(jN?uEGj@pH6Yy{P z#H3H@KPG)fpPTdrfI3!9Fjc9VXsR*+lLSmwQ%p5gm1}C6sivz6Qyr&{M~Tj=n4gHW zREJvYLYv}U&~<{UWEyekYz;h$po-wsGS!I^0R>r-+E_9SGz>h+R41z{Q_WDPm}(}h zRHq6!P3Vsn`b^nci)arg%IBgkhg+)cfvIMx+1PRWP=S(aRg>8Taidt7F>#KXYpQu_ z921#pzFMHGT2n1lc}&H*N|tO0CvXb7Trh8uIH1l{^=g6?coZB75V$*gBs*g#kdKoU zEjHB>wNzGgx~Z0_22(W(I72nKPRguk1qyzAqwOY?NZ7wz=vE+J)S0p?P2z~js>oC; zrMF5A)6{BHou$q;nOT|Y9FX!zE-`r&m*{GZgjUE@Yk8=ynsFf4rY0muheoF&;W03N zad_isIn3cOl!j(0A;WUlzHo^hu~PL-)uKRWhzI9HLeY4uENmT4rR)xdH{d`kca|_$ z`a;oasx}od)q2%#axo)Tqq3R~IfJ~C>PW}|4@TezILzfxHN@m)U27425Gj0{ =!aU)zZVow(Dd?8{eUA|!IXTs3+c z)3F11XFykIs3DEv^WaeDU=Y2H@p!a70+bj&C%i7y6-{MvMWs1byI8njkiAA+OJWU? z^I^x(T(WE}24Mh%3&N4sHps`#a1IXHQs;K5V`fF9CDn#NKvzmIOvsfZD2T{+XK~Ud zBF(rdPRMbZO_O7yj9o&o7G-xT2ahaAk;Mhb)jnVv;l}73WOj7nY6~+x9TB-xi2axr zqvf3gEg7S8u5(a6Y=BL1mTq7dmW4aRA$gp5OIOOC=L1)dTY5)VhvU)=yKGUPM}@Qy zq)QWF#3X{!A-1_g=k;-mb Dl_z>9Hj%3%9@1OIYLnJb1Zal^|?WY|eyw4%bc zxgn)Fc0hn1j|iNPFgGX5Y!poKgj#SHnwTT^kOziSnVcJvt;Hu= DW1-C1#}d^o6p-BF+kVvAMfZ;>P|VHf4jL2r`5Nr`>FX z5w4C{JrubIh?5V4u|56I45qO;n{~ufCG(th?8-bDbIL*AHls$tlm+obVsn-`BQjVB{=lEDF(TOLlNBB<;AXNF_OEt+`#B*RPa5(_y@-cG!dadHZ8 zBpI=v&OSGW{Fw;O!)#p~=di6O=epjo3CCxLq+b{EJcdsmI>PmEUj+MyoW`dQKAbKI zu^)#3&h$)K%&kJ1Gba}ZhGZ( 8*dJRAYKbH}<+BL; zjwNT4BS3;=_KHRuYv;HeV%ep^tHVks9^s~CB*M6>L|RY=;kHD$Q?BTm>Xh3f7{}Si zjBRoxwjtggc0YYX;A3OmLaM1QRH-_=(7WLKYjW4=GC5Dl1$cu-!^v?D<&47@pM&Yg z*tn@PJOKFsu6Gk8*Wj8^G};hJg=c7L1Jn4!7BrA;D0*K_M`P%1Iujo}kHjC|RQ5;E zcvjgh-gkD3C!XEn(-gbKXD4=xk5B9tAD7rI9_4n67n$ASQD(Pzm)R|zW_F7=tli>e zEC1x$Z?|}p+pX7aeQt{ dq0}i*21uV8E03KzP z0* 0moS7fMcy`fX7(V0moStfa9&>0FSkf2b^G? z09a~O0#39}1T3>o0-R)>3^>`U0-R#a0Gw)_0$6U%1e|7_3OL<5t)ZJ{!E>{l?xX7c zR72E5bGm7+i<;Mmns1|eXhApC_H`GQdAezlfVwhlO?{c~04;9v^aAwI5_mt;>!zhb zbvjs=H4WCD>!pS!Y;0o>ozYFpZGqMb?EszG 4{$hWc zqGgl1siSOiH^s{KQthPu6emhkCk6{AX9oM|+%zSs{JoTH5~frUb+s4K#(2q=coA)C z-{z0@LvJgI_R!a={0?85E(m(J2*CyIL9cg>-nOOrnj2{5p;9k^L`eO5d|S|K%gZ9b z4m}sPZ}T~FJ(ap_A2y~c;Hfl%MoG}y=8Nv6lZpeyfizv5rc1DZSwW*BP2UXaw^Q*z z6P5aAgLfVLc@b^4tqbZ~;_cfiwV-CNX4^jccBR%!Tbf*%mwJL)4_#Jel$CVT*0LZr z|MD`ZevH1Oy6Fn1yA9p#PWQX$?}Y>8Z>M=E1Hj9@ hz08p noJxxeS9c%e9mMSP6|7?fu_EhEv z^E0*L7EfhCu)wzyDY}=;k~H00Dfwsyz0w_o?v9{Y5gddP@)K)Mn(n*y;46Jd^kxO~ zF(;MMCCt=ecWyu3FGq`1WV^g PcN9k)KGX|I%GWC=>~<^m*pd~-hFD#z5F{2SZK zpm!%f3b9u}Ww4;4m%1g`-BAyvot18PX7^D~n)YGd9U~nd=o@8>wD#wk<`lfFQN4Xe zf%D3YR`-~B@GCfTmXoXVK$FzL9(pKE4+HO7-baz9pRT}Yhoh<3aPrk1N@h8ZbIi2! zQu67m<|VtnYF_G*I}Zmv(r@&$z7c}q=NR=F?DDt<_u*Y9x%faIk6>hHznmdE`{iWJ z__De9XeJl)i}P_+xI-rKrx)j^>9OK`Ne34duu(F=LHdNWY5IjUu<%LuC@qk2alu}C z$`^Ggp0@ifg8O9-4*ixiJyW)ie$`FSg7oY(J-3Iv_;zBAYNmGWZtZ>TZ`7_Y)i2V& ziFT{LUq3+Y`2J@Ik=j5v;_6yKUMj$KwGh|z!8Cz}02Aa8jpZ#gj&G!6c^6IK-87MZ zL1p|5P3AZ0WHp3ls8U*_7E_&CLrb8oUWI9~T2H5|I4x5tYE&1~8EPA?P(PqE)#J2M zy+y0k2ejHViq?3>P{>n8&7PB}#nXzmgIYabr#8=4TJO1uqMqBR!*dtKJ$tFs^Dv$3 zd5RLA7b)fW6Loq1K^we^y1Y82y!mv#cLaUSTSganXP}*p@qD_-+ejCCo9Pm73hntA zUqs*bUO`*DH_)Ztd(hsG@dNZ7?<2I$`vPtEzD?itenLBZ0lLyRg0AvSq3`(`==;7+ zbhYnty2f`SUF*A-uJb)Y*ZW?e8+>omO}>xmX1|Ya@t4u9{v~vq|17%QzmD$oM`@S; z0=mn88QtyQPP_d#(~teT>0bW>^b`N%w8#Gf-S2;e_WIwWwEy3<&;JEIpefp~>C~$Y zrvut}dPqBgeyS~?N3`YixYj~XXdU#VwvnFFE}^HjtLc~8-Sn*XK0S}!eNOw3eyx2B zn$PKRyk1_?4SHEGqTlKj^gF$pUe%Y<@AZr54Mf1}`nTv0`c`^V-%sx#65i4urnmJ+ z>0SLbX8j}f1U&2w9K*gq4f_MltOd?xJ#Zlh0#~pRxP$Wo2iOceOD_jrq?ZD(a$(>- z9vt{5TY*ox$nbH{$m3zga2{@q=3-+4A7zyDNaI8 KIP?30w?pc@jN^EGx8mz^<*A0&oZy!M@fV)>hLzF zu^{{c!Tx_69aJ|{!4X7ibQ6pgxq}$GFQURD6JjOqQVx>uf0g(t`MxAPQDLNxFPFQ- z1qlJ4aUtgLq73p-=UwU9fOn;a#7&kV*Oz)K0Jq}r@-+SW6dUEuMV)#W)$=nCqk6tl zE?GN9RE(4ZQo1D-L9g_2R9;6X0|Q0gG`%1_Z>Cr8y@d+Pn)Xt?cMaZ7yJ&?oXt4(i zK`RvF1i45k76DU>zYhE@+E2f+A1AwLj1bfbK^-Q9O`b1x83O0o<;a?a30&8X_(Z}H z3<_M$&cUT9Vjsx!t9->MuhCsJGc$FB_m#tJi_b6{E;BgA__{R!Tk&@}UMM%yBp02* z_@cMbFd@sK@ 4>R-cBj<%{(`(ktRX)65@dUMgD<2%Z(op3G71m!Y-^v%`k?5(|N3UW> zd+9Z~b;wSLvz-<6(C_8o_Q75Dq0~#S3z2UyJ=sHlNYfj85ThUQIOJ_RPv;P~WKI#f zk0#ssJcLVeR+Q1nJc;Ug3a#g O;BQcXFC>dEqGQlb#JC(kvXyNdENk}I)pKZe#rSgn|80TK zS@w}ExD*y#1`D>rg3DmRrLbVzku31=(YEhK(>rL#;)Znqt^8Z Rgpl2`c8b X7>_0&H^c508*a1Vqc;4b4d417`RXNl literal 0 HcmV?d00001 diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..5e1c7e9 --- /dev/null +++ b/Main.java @@ -0,0 +1,400 @@ +import java.awt.*; +import java.awt.event.*; +import javax.imageio.ImageIO; +import java.io.File; +import javax.swing.*; +import javax.swing.border.EtchedBorder; +import java.util.Random; +import java.io.IOException; +import java.time.Duration; + +public class Main { + int rows, cols; + String name1, name2; + + JFrame frame = new JFrame("Memory"); + JPanel infoPanel = new JPanel(); + JPanel panel = new JPanel(); + + Random rand = new Random(); + + String labelNames[] = {"Car", "Elephant", "Phone", "Tree", "Person", "Computer", "Toy", "Paper", "Book", "Desk", "Bed", "Glasses", "Keyboard", "Ring", "Fan", "Sock", "Sign", "Eraser", + "Pencil", "Bow", "Cat", "Boat", "Fork", "Spoon", "Door", "Clock", "Bottle", "Purse", "Brush", "Camera", "Money", "Bread", "Screw", "Mirror", "Cork", "Sponge", + "Banana", "Bowl", "Tomato", "Key", "Nail", "Hammer", "Chain", "Table", "Towel", "Cord", "Thread", "Chalk", "Baby", "Candy"}; + + JPanel panels[][]; + JButton btns[][]; + JLabel labels[][]; + JLabel cardFronts[][]; + + Timer gameTimer; + JLabel timerLabel; + long lastTickTime; + + JLabel player1Games = new JLabel("" + GameRunner.player1Won), player2Games = new JLabel("" + GameRunner.player2Won); + + JLabel player1 = new JLabel(), player2 = new JLabel(); + JLabel player1Turn, player2Turn; + int player1Score = 0, player2Score = 0; + int turn = 1; + + JButton selected[] = {new JButton(), new JButton()}; + int picked = 0; + + Timer timer = new Timer(2000, new ActionListener() { + public void actionPerformed(ActionEvent evt) { + checkMatch(); + } + }); + + public Main(String name1, String name2, int rows, int cols, int players) { + /*try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { + ex.printStackTrace(); + }*/ + + timerLabel = new JLabel(String.format("%04d:%02d:%02d.%03d", 0, 0, 0, 0)); + + gameTimer = new Timer(100, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + long runningTime = System.currentTimeMillis() - lastTickTime; + Duration duration = Duration.ofMillis(runningTime); + long hours = duration.toHours(); + duration = duration.minusHours(hours); + long minutes = duration.toMinutes(); + duration = duration.minusMinutes(minutes); + long millis = duration.toMillis(); + long seconds = millis / 1000; + timerLabel.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds)); + } + }); + + try { + player1Turn = new JLabel(new ImageIcon(ImageIO.read(new File("icons\\dot.png")).getScaledInstance(15, 15, java.awt.Image.SCALE_SMOOTH))); + player2Turn = new JLabel(new ImageIcon()); + } catch (IOException e) { + e.printStackTrace(); + } + + this.name1 = name1; + this.name2 = name2; + + player1.setText(name1 + ": 0"); + player2.setText(name2 + ": 0"); + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + screenSize = new Dimension((int)((((screenSize.getHeight()*4)/5)/rows)*2)/3, (int)((screenSize.getHeight()*4)/5)/rows); + + if (Toolkit.getDefaultToolkit().getScreenSize().getWidth() < ((cols * screenSize.getWidth()) + ((cols + 1) * 5))) { + screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + screenSize = new Dimension((int)((screenSize.getWidth()*5)/6)/cols, (int)((((screenSize.getWidth()*5)/6)/cols)*3)/2); + } + + int fontSize; + int largestWord = 0; + JLabel testFont = new JLabel(); + + for (int i = 0; i < (rows*cols)/2; i++) { + if (testFont.getFontMetrics(testFont.getFont()).stringWidth(labelNames[i]) > largestWord) largestWord = testFont.getFontMetrics(testFont.getFont()).stringWidth(labelNames[i]); + } + + fontSize = (int)(12 * ((double)screenSize.getWidth()/(double)largestWord)); + fontSize = Math.min(fontSize, (int)screenSize.getHeight()); + + Font useFont = new Font(testFont.getFont().getName(), Font.PLAIN, fontSize); + + this.rows = rows; + this.cols = cols; + + panels = new JPanel[rows][cols]; + btns = new JButton[rows][cols]; + labels = new JLabel[rows][cols]; + cardFronts = new JLabel[rows][cols]; + + for (int i = 0; i < panels.length; i++) { + for (int j = 0; j < panels[0].length; j++) { + panels[i][j] = new JPanel(); + } + } + + for (int i = 0; i < btns.length; i++) { + for (int j = 0; j < btns[0].length; j++) { + btns[i][j] = new JButton(); + } + } + + for (int i = 0; i < labels.length; i++) { + for (int j = 0; j < labels[0].length; j++) { + labels[i][j] = new JLabel(); + } + } + + for (int i = 0; i < cardFronts.length; i++) { + for (int j = 0; j < cardFronts[0].length; j++) { + cardFronts[i][j] = new JLabel(); + } + } + + timer.setRepeats(false); + + player1Games.setMinimumSize(new Dimension(25, 32)); + player1Games.setPreferredSize(new Dimension(25, 32)); + player1Games.setMaximumSize(new Dimension(25, 32)); + player2Games.setMinimumSize(new Dimension(25, 32)); + player2Games.setPreferredSize(new Dimension(25, 32)); + player2Games.setMaximumSize(new Dimension(25, 32)); + player1Games.setFont(new Font(player1Games.getFont().getName(), Font.BOLD, player1Games.getFont().getSize() + 30)); + player2Games.setFont(new Font(player2Games.getFont().getName(), Font.BOLD, player2Games.getFont().getSize() + 30)); + + player1Turn.setMinimumSize(new Dimension(15, 15)); + player1Turn.setPreferredSize(new Dimension(15, 15)); + player1Turn.setMaximumSize(new Dimension(15, 15)); + player2Turn.setMinimumSize(new Dimension(15, 15)); + player2Turn.setPreferredSize(new Dimension(15, 15)); + player2Turn.setMaximumSize(new Dimension(15, 15)); + + player1.setBorder(BorderFactory.createEmptyBorder(0, 7, 0, 10)); + player2.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 7)); + player1.setFont(new Font(player1.getFont().getName(), Font.BOLD, player1.getFont().getSize() + 2)); + player2.setFont(new Font(player2.getFont().getName(), Font.BOLD, player2.getFont().getSize() + 2)); + + infoPanel.setLayout(new GridBagLayout()); + GridBagConstraints infoGBC = new GridBagConstraints(); + + infoGBC.gridheight = 2; + infoGBC.insets = new Insets(0, 5, 0, 5); + + infoPanel.add(player1Games,infoGBC); + + infoGBC.gridheight = 1; + infoGBC.insets = new Insets(0, 0, 0, 0); + + infoPanel.add(player1Turn, infoGBC); + infoPanel.add(player1, infoGBC); + infoPanel.add(player2, infoGBC); + infoPanel.add(player2Turn, infoGBC); + + infoGBC.gridheight = 2; + infoGBC.insets = new Insets(0, 5, 0, 5); + + infoPanel.add(player2Games, infoGBC); + + infoGBC.gridy = 1; + infoGBC.gridx = 2; + infoGBC.gridwidth = 2; + infoGBC.insets = new Insets(0, 0, 0, 0); + + infoPanel.add(timerLabel, infoGBC); + infoPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Scores")); + + panel.setLayout(new GridLayout(rows, cols, 5, 5)); + panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + int row; + int column; + + for (int i = 0; i < (rows*cols)/2; i++) { + for (int j = 0; j < 2; j++) { + do { + row = rand.nextInt(rows); + column = rand.nextInt(cols); + } while (!labels[row][column].getText().equals("")); + labels[row][column].setText(labelNames[i]); + + try { + labels[row][column].setIcon(new ImageIcon(ImageIO.read(new File("icons\\" + labelNames[i] + ".png")).getScaledInstance((int)screenSize.getWidth() - 10, (int)screenSize.getWidth() - 10, java.awt.Image.SCALE_SMOOTH))); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + panels[i][j].setLayout(new OverlayLayout(panels[i][j])); + + btns[i][j].setBorder(BorderFactory.createEmptyBorder()); + btns[i][j].setContentAreaFilled(false); + try { + btns[i][j].setIcon(new ImageIcon(ImageIO.read(new File("card.png")).getScaledInstance((int)screenSize.getWidth(), (int)screenSize.getHeight(), java.awt.Image.SCALE_SMOOTH))); + } catch (IOException e) { + e.printStackTrace(); + } + + try { + cardFronts[i][j].setIcon(new ImageIcon(ImageIO.read(new File("cardFront.png")).getScaledInstance((int)screenSize.getWidth(), (int)screenSize.getHeight(), java.awt.Image.SCALE_SMOOTH))); + } catch (IOException e) { + e.printStackTrace(); + } + + btns[i][j].addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + selected[picked] = (JButton) e.getSource(); + removeBtn(selected[picked]); + picked++; + if (picked == 2) { + int row0, column0; + int row1, column1; + + row0 = findIndexRow(selected[0], rows, cols); + row1 = findIndexRow(selected[1], rows, cols); + + column0 = findIndexColumn(selected[0], rows, cols); + column1 = findIndexColumn(selected[1], rows, cols); + + if (!labels[row0][column0].getText().equals(labels[row1][column1].getText())) { + timer.start(); + } else { + checkMatch(); + } + } + } + }); + panels[i][j].add(btns[i][j]); + + labels[i][j].setFont(useFont); + labels[i][j].setPreferredSize(new Dimension((int)screenSize.getWidth(), (int)screenSize.getHeight())); + labels[i][j].setMaximumSize(new Dimension((int)screenSize.getWidth(), (int)screenSize.getHeight())); + labels[i][j].setMinimumSize(new Dimension((int)screenSize.getWidth(), (int)screenSize.getHeight())); + labels[i][j].setHorizontalAlignment(JLabel.CENTER); + labels[i][j].setHorizontalTextPosition(JLabel.CENTER); + labels[i][j].setVerticalTextPosition(JLabel.TOP); + panels[i][j].add(labels[i][j]); + panels[i][j].add(cardFronts[i][j]); + panel.add(panels[i][j]); + } + } + + frame.setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + c.gridy = 0; + + frame.add(infoPanel, c); + c.gridy = 1; + + frame.add(panel, c); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.pack(); + frame.setVisible(true); + + Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); + frame.setLocation(dim.width/2-frame.getSize().width/2, dim.height/2-frame.getSize().height/2); + + lastTickTime = System.currentTimeMillis(); + gameTimer.start(); + } + + public void checkMatch() { + int row0, column0; + int row1, column1; + + row0 = findIndexRow(selected[0], rows, cols); + row1 = findIndexRow(selected[1], rows, cols); + + column0 = findIndexColumn(selected[0], rows, cols); + column1 = findIndexColumn(selected[1], rows, cols); + + if (!labels[row0][column0].getText().equals(labels[row1][column1].getText())) { + selected[0].setVisible(true); + selected[1].setVisible(true); + if (turn == 1) turn++; + else turn--; + } else { + if (turn == 1) { + player1Score++; + player1.setText(name1 + ": " + player1Score); + } else { + player2Score++; + player2.setText(name2 + ": " + player2Score); + } + } + picked = 0; + + if (turn == 1) { + try { + player1Turn.setIcon(new ImageIcon(ImageIO.read(new File("icons\\dot.png")).getScaledInstance(15, 15, java.awt.Image.SCALE_SMOOTH))); + player2Turn.setIcon(new ImageIcon()); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + try { + player2Turn.setIcon(new ImageIcon(ImageIO.read(new File("icons\\dot.png")).getScaledInstance(15, 15, java.awt.Image.SCALE_SMOOTH))); + player1Turn.setIcon(new ImageIcon()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + if ((player1Score + player2Score == (rows*cols)/2) || (player1Score > ((rows*cols)/2)/2) || (player2Score > ((rows*cols)/2)/2)) { + String winner; + + gameTimer.stop(); + if (player1Score > player2Score) { + winner = name1 + " wins!"; + GameRunner.player1Won++; + player1Games.setText("" + GameRunner.player1Won); + } else if (player2Score > player1Score) { + winner = name2 + " wins!"; + GameRunner.player2Won++; + player2Games.setText("" + GameRunner.player2Won); + } else { + winner = "It's a tie!"; + } + + Object[] options = {"New Game", "Cancel"}; + if (JOptionPane.showOptionDialog(frame, winner, winner, JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE, null, options, options[0]) == 0) { + new GridDialog(name1, name2, rows*cols); + frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)); + } + } + } + + public void removeBtn(JButton b) { + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + Component components[] = panels[i][j].getComponents(); + if (contains(components, b)) { + btns[i][j].setVisible(false); + panels[i][j].revalidate(); + panels[i][j].repaint(); + } + } + } + } + + public boolean contains(Component components[], JButton b) { + for (Component c: components) { + if (c == b) { + return true; + } + } + + return false; + } + + public int findIndexRow(JButton b, int r, int c) { + for (int i = 0; i < r; i++) { + for (int j = 0; j < c; j++) { + if (btns[i][j] == b) return i; + } + } + + return -1; + } + + public int findIndexColumn(JButton b, int r, int c) { + for (int i = 0; i < r; i++) { + for (int j = 0; j < c; j++) { + if (btns[i][j] == b) return j; + } + } + + return -1; + } +} diff --git a/card.png b/card.png new file mode 100644 index 0000000000000000000000000000000000000000..5255c22cb2f9204ccdb882a42b0c8a645d0ba271 GIT binary patch literal 22742 zcmV(>K-j;DP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vmK-^bg#YsteFW~yak#!WH<;tkXY|NbDXD5^ zN?k2gDAJt^U@!wfn*HDZb N~Ba_ +#ccUjL^0dfe;b-~T%n7Goto4Bq%1T(JDV*INQ32rcxWKX?9hUY}I{ zocN_r!q01GdjEOx-v9J%?QDO29= BGQ{Y&FZ}NPWZm^y4aGM<@1{ika>p08XBl?Hhsmx5KKAcpareFL zzHhq9o0sF8-tjQUPyF)B{Pf}f=GXg!&XMUlXX~?0m<8kVGC+o*ozwsGEjGlR*P5og zzW0~;WH }>JAILA6x_NOy)AEF=ZfJ@0QXAXN4LS}QS*Sq `kpwDaiBPj|l2`|u--IMT?Yj5^xr6Z4sIrkQ7%b+*};Ut!_?E3aZ!U2XO4 zHm0=WPCM_i>u$RrZ0&>-PdfROQ%^hneb?N}ZNKcA`?hm`-Zl5yHSJiu-zy)x#>b_+ zJ;Di2lJ<-p^U<;6MLU2&d+nL6E=I4N)1KJ|M1|zpHJ7wG%W22h!ML4I$Gz{}$Ikt6 z-%N`CYTx|tcFt(){y%okXzN}(_v^m>uxqQ|h!XAw$qTinHXMNM Q1m6z>O%)N^YicYjjYEfTWE88-0$ z{AfF&j Og!VgfNm@L+pvpc7$?N{ z4}*F8EF~V!IF}1&m&1EkZmG;vdI%#sJrYE%Sx=oG4|w}|6MuSBN~~0B>|>iDZ7^=v z67FEXjo-Rl?o`c}xrU$Cgavq;?49=8GgxY$M)&-FPBhGdok{KNX_wa*cbS_%jGgP- zhp&(DwVnI;@&qve9^uXXbm0m3G&@$F;f`N-<}af)e;V$;8Lj!la6@Co6MloQrj3D~ zIBQ_Q;rzNm=CdvQ$rK3oHI5Rarn~vCgs+V7Zu91|(Z79)Gd&;kVaodNw`XX5^b{t{ ztcP83FTg1JV{!|&Ik3V*{(PUU+f_Z#RN)PE$K)C);|SS=cwcJwJ71i_dpFC$r+d`C z&01scP?jHaWFCK3$YpDdW@cWj$cC?d@y{fK$GEp|eN4A|W9p_eeIhXkJf11ql;Qy$ zp%x*4XJ_xFna`zR0!$r%SptZ>;(%tX7WPPHw33cJjo*4bm=OWrtr<=MNW}`+jmbCX ziZ$fkr*@zPC#M@bfxI=WJO&TSaoAJA*;H$0xkp;8WF_#r1h~f%)~=S(CEf_WfZU92 zr#feU)&Qu)vWe_){}LCV=`HBGBUs{n%U+=!E3;?J2u3c;qNOnydq`{bG*h1`u*%bW z!V#83$YHCor@%YeqQwaJ9B~bhe)ZKl@n?2d2y_50gg<+}Qa0qvEokIuhMmissL=+i z>{5dsVbqyr($ZAFGH8E#&9l|QHiR@Pn>6&p?8)vLV2Ry0%&Bg|&5Usj3;Gu~v7AW& zWU)rW%2$TGt`K`Ec|qz4I4oKt9!zn;=2{LW;666iNlaq0$MuF=IDkL0sCy+}7F(YQ zCViD231=s tWm zC#E6X@fbMNAuJbp`q{vLD`nv_8S7t!^v%M|(b IGfDR$goX)v0GG{d-@+>7b3GkETS_PgTa$cte^4NI726%RF@{B~HjWBVOmpU_Yk zWh+@2&UY|R#kBzq0wO@s&fYD7l?9py4+2J^ieNFmkqYvA115Pjq7K7ibZq!a4Kr}} z3n>wySUlk2EMW8n>_plhkp1ZG$i}pZs)F{PkUirdop@*$R@{wXa`2^gJ<;PzQDii& zx~p@YWnfoWG8O_(8}BRn9ywreI5f7iH}un)5i83AEw()~Ox6v6E^*% ba}uI5Kt38H zV1r9hY>&-MIIWft8zMdkmRqmD`WkTTpw$M3& EgCfWICzh^(_O1E9qm;ShshISGBW ziNv#aQ7<5}G>4Pzb-+5Fhy^7-5nsW87)VkS!x3YFs^CSgHdeS2QnJDrHl%pC?Gg^` zS-f;S$lNeQ7J5fE%is-dg$-`U!e$V;7h!*PTN6Q)`F7MmT~3SF66yq&!s #^K?P6;3$Bl!uL8(nPoUny2 ztss|S6N-=-p~XuY^TT00#2D7XJVK~!DW=<7#%VLNMa*r0c_(m_IE$j>A3YP7!bn-Q zlkp88ngL`)U !JD$!}XA#T{~-hI#`Y22FuT55e-!D{0pVV zt)?M}lmL2kw fQe&A=~=d?A+=(HU_O6(<50rUIvcF|oM=s8U#sOy)FV zI6)iY#M_Bhm|eq8W)}E^OC63WSq~twE%QJE;D>y-9A8B)MP-<8$NLjV6tDxp7z`03 zhoI#c3}4;KQe28}@iVLU&&~$JLr&&jCP!op5G3Y5s;nP>z?}~gueiIa%Q)GSLX!VE zP7D`soCu(Yv!mTGF@6;l=Fvvy6?=d|RwM$^rLi-FUKi7bcBhHOBwt(GsX;J7Ng`u> zO}edZPzRXIf_i0E*+ZwQ1NAWp{vh8CS8NhY;PHGFDTK8InAe6r%clFTxV2GG!roC; zawcUX F9IMG*v?L6b;6Ho_9&X?aEq)S+uJD?%~q2rvsoYk@SRcj6_GwFq4S zJC)FCO-RK~C#8c34;Tb?9+bXG)k9t*udyZqbjauG__7#B7ZQ3@BFGP3JHidthuMyr zkxHxr$S%zc!ElyXxUWAALm*y+<-G_mcrv6pIFR_VmE4JG$fuzY8f82|+^KKSsNpe) zEEE%njDH&IP;gi|(g?>Lp80nMRtV3*Luv;C3>F7`qXBA)&@^_nJM>*qiYT!y@SbKa zZ9?+`cPwKTZ`B?$Mvu2=bgZ_+^BbE@XeHLb>oHHv7Cqqc1qUlhMxqQv!XtrfNOco& z0KG)q*;NPPw0T1waR*dkGchY(zjHww5m6Ffan7vBqcV{Zz6Oasg_pn^@oJV9tc9vM zfh=T{Ae@O@k~9(QV;D%PDe$j086ZP)4;cXkL|2_yL7wdF2JDEf4YC{w*D%Pvy3mKe zA$R~bO{R0e3Z9=0k04|dU(t>=oQcc=2|89hk1q*Ef=q2%ttpEXK;x(4dA8U4Y7jbw zU O ;VA+5>a3-N@oxbk?KQ~fIVY(SB2T& z6=2 {FN0hRPMI8ZY)tMN#qqKFqauZowg;t zBk~WG6dJSz>IU`2_x-fdH3?w|z+FqeyYywBP!UWW$7nVhoFhj33z-;1R?=15#J|Z3 zL1h7KV7`cyWj1S6r8N+xm^E}6m4j&`;)@~d<0M|Z-eHSq5cCWxgdHhcq6l@j!updG zNg_(-Pw@w+mQ>>doE|g4X*(kK=KpwA_R72v2D_O5uR-W)H|5z--bFtRYnJOOvegJ1 zL1lq^NM1tp##~siJPZ^?aLNWEO0iCO0ssZk+S16NMrS;5B^FDukRO4*!0`ExwUzzZ z9ZRW1k?g8Rk3oR~K>_UrFr()Xu}YC{8N2A@5Etd4XaQjy)DaX9LJ&;z1Z_VNxU&)y zl30fL-#IcW^nGPNyhlNA3YZ5--PN*Nee*}lqG6Z=jTah98iqC6?-o@Ff zTMO>1q9Kkg6JO|c)tHe=z)@Vjb-#!eXj;VXz(4po>;fKx9q x3}cd&$}v=1Vxn1-oKn_!;cz$C~Jt;*U8VpwN%;7nXtLr#Q`*7a2A48jZU z5W?h@Dr+=zQ3FI9klo&@BpRewFwU@#LaFERpy37 V-xOOR` zI1Y<~Fiw(r2bcAD9Lgd VdHhc9zBrJ~_a z*8&ND1yeyXWWwOk_GDZ=ri3<{(lY={%mNR8Owh*>dsnIi|L7SrMD>;mK^fk!lMt@} z9)AsukHoO)+lhTjP9#+-qG+6frXbj|w8~Ka>Y!i;Gds7$vX1tyT2=@q!(t3P6euBP z4M0FBNeF??b^~OD)h39p%FY62h*cOSu?V5WL^tG;4JLvx8OhukM5Ud6<)l;&9643v zRI7?m)8=g%db0qVV9K_zk8pETAGAc%gfK(*@`gXgn_*}D0 2!eDg(9m*<)?o_7 zTE^3QQl5i%9$Z9fGpc|R#c9OwopPgq<(2rv2+6R6m8`q73NaTIM^Y{kkpe?3CKIca z^tFf!kJ@(oCUluGx*z5TmxBkPEmm_7C1|b<%H|Y=;eQ?6bYJ12*b6jxQb{>yJ8VV#*&S$Oapp3<8eqn1B*uQ0LLJ+ zkele8J9vW4b|p99i%-pn$T2(niM`_R%}u~ Ml1=-nx4S6L^>3L*yk-`#9%uqz?pqSxb~6XO+A0!RkIw=g0LBj9Hs z3*fhkH#Qak_~y6a0ic$Nb@28HNLhjl{{b8-$EST&MhJI6*(z=0MA#a!m+)2{L79bj zSMQ1?7^R=Juv^a#+bNvHsqxvtrmz=59U52|v>!1H@e68#NV%}!tXmrurUz!j-c&@B z>|$bQejJhTzi~nFETzgfZVWNcs;|4Mo#ENx@}|C_?WmezFncJk9fX}KBqAI=^1K77 zVwnpZ0*;A)Q)ztUma}tWZUCX4HMe+&GcYqjdsbHfps(T;eD0_g)zlaRieW!IyAi37 z#{4i&l+~Jnv!^KN9 DxP4qjA5I#Z^qK` za!4qo1LG0356U$zsMkOpU)#1y ;egvMg$|n?Mn;#;en2ZU}m`X)IE 7l zJ{Z>}ony&Hss9DNNN^%_%x 5s5X>y40Gbjrtdx*SV%H;%+4YHB->Tj#$BGXr z=jtHW4q%-HRH*8-0AvS1tnzM!O>IndsSt+wG0@J`V7SxWlE&(43JB_Fa!Mnu#iCos zf+1><>FBL0nT?H)iF PyUGl0 zBqT(EnyL~`@Mm6A$)em;xT&IB`0-+kCgB%*g?HX+Kknyw{tQB{(Xchs@FOruwX3ea zCD0Pejrgjal@MaGpB^I#{w91xdw{taqDNt45^RShj2LB2tkTEv+3>V)R=8xJcDO32 zfxJW*m2K?P!!wBo4Ev~~0q%=BEkqGw_C`h_Q`qbpPlS#;71SkQ?E)y+dn_g^^Am2K z5^*x&B(1dyGbZ*{NQ8Pd8r-?5q=B#*?2H5s4`MM}l`2*{Exx%#I^iBLO?1-;%E=Ze zJ^(zknJR_gJX86vU>~sI?^PmHyMxk}Yo;#Fog~L&l|`{y>aqa7y3!j+2;dl8 ppqI%|7T=h`| z8`h?kLlqEWu!91yAs~^q)hJI}F5yElEI22Cq4G>{cu8t@sE}GW>+Nrf{3Z?|KWYhq zU~b$Wrdf)yO5Yq n^kIzCqoDr_b~(uFdpDmwfWYwL9%Noc!w}z z@m{6H#}e*}pv41VJ1seC7V+DZbv6eO=VQB-!mi8^U2!`yywCs$FU_g2vt+jHY*ML5 ztsRgVabG;uLYYvI;3dm}dc`}3k^ljEOVCg=_c>YhSyU%}BWbDb23V@Tq}G_5dN{y$ zUnV9=#BkHqgm*WHHYmJ_wJg>$T(v};Q}^0B73vasE#Tsq6Jn?+m3Po03YSnKB@Tmf z?bR&>H=H75Xh{{EE1(hKh*3eh RF!rhm~;!f$VAw gHZ2kaHag;RsxzIDTPf~SE!*RUO1+*X=W|4JVMECq%G zr;JsZFf0d=ta7hV3aAOH>*BrL5Tc0WY~@}$)L^j;&3UOGZK3yKl8NmIkHultri{c= z-i_#8ZgZYL_(e6!tiUVO$!(SBv0ig+t_H?e4}Pr#UGV5S3u#i$59+{5i?nX#Gmtb; zW*MXp@d$XG`V}Av1n{ay$BM^+_AK$(w>L<8=3!S*Qg)G5L?%Y%eo{5jsj#f2!vqj~ zC|zW)lDl;|2~emguSO l!0fqj^QSK}4rvZ{yAL2F=ewK_ygn(v(m>Gpkq>bt8=>%a|h81NVkdP+>m zs-N%Hu2rFKmMDV$MWhk`LW8zQTg!M=JVD79#eQ`J$n<6?=qhFGkmz6YH))y(k;4aN zsL-3NSq3%8FBK5<;MyZ$MnCbgX@toPm(6!X)L~~wy$!lj$xpXZ`dhcsZ<>` 7P5*BL;P8W)g3HXg&bFjgDN#Y83&i$Z6T;P8u2?=4QVB$ zZoq#L4OB*0k#N%0CL}%y3-dXkX*Z-g?5B+;x(;zJ${9fzZ~wh7qXvg2G9&K{PSv|} zk+7!D rc=(g2V@xdsY#j$aPc|m$QY|l)9c`_O{$st<|EsxU4w4b*i2e*g~kqsLc_s$Ftd) zG$90Tq}bH9D6YdObYf#DSwV 2JRE+)QV_D``hCI(***(!5jr7HVu%Dc z==AYX-F`f(v Q0uYMMBzl#Gh) zmia ?KQRM;;TO9vnzW+f#Q5sV4Xcg?EdbxMiNiG+aG zb@isB&{UwB(jv}VIi^;_Jq5C%mKae7RS%Z>oXWO%32{lG=iK+-yNx(W~~luxxR zK=l{l10vbHj$?F4z?lSOd`xAYT+|+MwY(>0OtaLK0rnB}l K{0Y_Bs8Lya9#MYpYleHq>Wa7ZptClE06@TeE34qR0S2yK0`6EPMw5NYS@?GnW| zN0Mey!9>Sw05&YuPa?MZpNBBEAVIw{wQ7x