From 5f16b8834349402de45ac2d816e67c42aec41618 Mon Sep 17 00:00:00 2001
From: Samita Adhikari <sadhika7@myune.edu.au>
Date: Sat, 23 Sep 2023 02:38:29 +0545
Subject: [PATCH] Closes #2 Closes #3 Closes #6 Closes #7 Closes #8 User Login
 with database connectivity, High score with database connectivity

---
 app/bin/main/Auth/Authenticate.class          | Bin 0 -> 2105 bytes
 app/bin/main/brickbreaker/App.class           | Bin 933 -> 805 bytes
 app/bin/main/brickbreaker/GamePanel$1.class   | Bin 780 -> 780 bytes
 app/bin/main/brickbreaker/GamePanel$2.class   | Bin 783 -> 783 bytes
 app/bin/main/brickbreaker/GamePanel$3.class   | Bin 1608 -> 1608 bytes
 app/bin/main/brickbreaker/GamePanel.class     | Bin 8328 -> 7594 bytes
 app/bin/main/brickbreaker/LoginFrame$1.class  | Bin 0 -> 984 bytes
 app/bin/main/brickbreaker/LoginFrame$2.class  | Bin 0 -> 982 bytes
 app/bin/main/brickbreaker/LoginFrame.class    | Bin 3438 -> 5501 bytes
 app/bin/main/brickbreaker/Menu$1.class        | Bin 813 -> 701 bytes
 app/bin/main/brickbreaker/Menu$2.class        | Bin 716 -> 932 bytes
 app/bin/main/brickbreaker/Menu$3.class        | Bin 707 -> 707 bytes
 app/bin/main/brickbreaker/Menu$4.class        | Bin 711 -> 711 bytes
 app/bin/main/brickbreaker/Menu$5.class        | Bin 1374 -> 0 bytes
 app/bin/main/brickbreaker/Menu.class          | Bin 5748 -> 7402 bytes
 app/bin/main/brickbreaker/ScoringSystem.class | Bin 0 -> 1255 bytes
 app/bin/main/highscore.txt                    |   1 +
 .../main/java => bin/main}/resources/user.txt |   0
 app/bin/main/user.txt                         |   1 +
 app/build.gradle                              |   1 +
 app/src/main/java/Auth/Authenticate.java      |  48 ++---
 app/src/main/java/Auth/User.java              |  44 ++++
 app/src/main/java/brickbreaker/App.java       |  16 +-
 app/src/main/java/brickbreaker/GamePanel.java |  67 +++---
 .../main/java/brickbreaker/LoginFrame.java    |  61 +++---
 app/src/main/java/brickbreaker/MainMenu.form  | 192 ------------------
 app/src/main/java/brickbreaker/MainMenu.java  | 177 ----------------
 app/src/main/java/brickbreaker/Menu.java      |  48 +++--
 .../main/java/brickbreaker/ScoringSystem.java |  84 +++++---
 29 files changed, 240 insertions(+), 500 deletions(-)
 create mode 100644 app/bin/main/Auth/Authenticate.class
 create mode 100644 app/bin/main/brickbreaker/LoginFrame$1.class
 create mode 100644 app/bin/main/brickbreaker/LoginFrame$2.class
 delete mode 100644 app/bin/main/brickbreaker/Menu$5.class
 create mode 100644 app/bin/main/brickbreaker/ScoringSystem.class
 create mode 100644 app/bin/main/highscore.txt
 rename app/{src/main/java => bin/main}/resources/user.txt (100%)
 create mode 100644 app/bin/main/user.txt
 create mode 100644 app/src/main/java/Auth/User.java
 delete mode 100644 app/src/main/java/brickbreaker/MainMenu.form
 delete mode 100644 app/src/main/java/brickbreaker/MainMenu.java

diff --git a/app/bin/main/Auth/Authenticate.class b/app/bin/main/Auth/Authenticate.class
new file mode 100644
index 0000000000000000000000000000000000000000..9d11fe02a53d29cff70712d76a60459d854c4a5d
GIT binary patch
literal 2105
zcmX^0Z`VEs1_oP(Vs-{5Mg~F0(vl2)5RsZ!l9`-XlFH7&!pI<yl~|UjpOcuEuJ50e
zm6}|_$ROYx<m%$;7vkyY6CCg6>Ep`CAmoEk7F<%4nU`+O$iVBIpI2Oxm{$^(m{Xd{
z!NAGLz)@P9TBKJ}QNqZ;3St&BGVnvRmX>7Z==&xXSTizk24|+{C6<&Hr7|*@qRQGp
zxM1f%?ZFhWvu0#qv&qcMEU{x`VAjwKV`N})&QD3@Vqj(v;$h%p;AdwLVPp^lI~i=R
zM`Ce?Z(;!#gD`^-Cj%pcI1d9C12-1~BZDLlgA@ZlBLja<eqxGqQECb(a1wLC?#|3h
z^()OyN-YXWOv*_G1wwvuVoq3MQ6`8F6=W&N$Sh`L5cUCuEK2ZNgWRLQ!=T8Z#K^#r
zo?7CZlUNK=s-cPGC$OM37lR6e8asn3BLhF!)!+aCOYtzMGiWd}@WJ%^<R_-27BMnN
zVwwVxvgTsYV$fk{&}L*1MKcScfQLbsL64C^I6bu_D784hv?w{%u{gM-C^a#ckwH@f
z$!*XWfI2rbU*9vYptJ;{)S8{afRRBAY(r+gzEf#hT53^hN>D1udF%{Ej0}=6IV4>W
zX)Xps1`|+3nKCj+KrKWwT{Db}L7%}Kq{xDiK^UP3VuH117zcwDBLkxq7lRFh9Xo?9
zN=k+}oQJ`l!GV#1wYVTBvxJdB9cl<TY#}PFHKQ@T%gx}#;KI(}%*enC_5nBr`6d?d
zFt{?fF)}b0l$J0uSRfk)$vD<XMnOfOAqTb*Dg^SD2M>cMgBK$MM^S2Gice-<DkFmk
zN_0Y92U6?9!{7@_psdL``NgSR4E_v(><j^n48mZyflUs{D9SGfB}pEJAckN@2HwP!
zl;F~Wf}+&o;?xvG5Th!#1_f~_LpVD_7|b+K9QeCdB&QaXWaj7bFhqbX<}WD9%qs~l
zNleZTDN0OEWn^FiC3sPYZ$Vm+5(Ogz8^}+f1S$bnfSNX}85vk|z<y>eNGvJ=We6;h
zz{tRu%E*9Z3Bp~Vk_YS@-^2oNCS+$wLG}T{IgAWEiKQhOpezk4@31EUh%>=q0}Xb~
zC{Pl};9<yQ$YNw*PERdiWKhEr-&kYUh9QTCA(tVKk%29>uoPU9h+@+l1uZP|5_3}-
z88`|Oi;K(ii&7XFxPrl1(k&BI<bVrpnEUlWQO=;qz{tSNz`(%7AjQDSz{bGHzz*hd
zFff4%H3mio9x$Jmfti63R2VWaG6*m*FnEFa3=AS#+ZhD4b~6Y^Zf6kP${?n-jX`1~
zScfzN1A`C)3j+g#C<6<FFatk>7=ti_ID-rW0|O5OBLf422!kwx99XRs13$!E#vBG#
zunRi0wlT<WV^9|2*v6pg!|2QCx0^vfayNrvr1o|O<LwM)RxHaIR3%x3EVnUOTd_&9
z?PFcQAgZ;6K}?d3*+`O&#b_skBQry|B+E7i_ed+&<NvQovK(VD2JyX@GidvQcpPA!
z&VE0g;|v_SzRMYSb##|9aOmi6WAM}2@2j(oA!H*1GlLRC5JNlz1A`z#4nqzD0|PHZ
z6GIb2C<8MC$d6hKTnr2hQVhHdG7L%#atx{r@(g+m3Jj(UiVW@yatuKXDh$mGstoN6
z>R`WnK>P>wJ1;{uLnK2K10#bHg9k%2Lkt58gDQg(Lo5Ru11p0+12dGR#~{fN#}LoJ
z#?Z{b!jQm_$iT#q#K6E{!@&8UL6w1xoq>^^A(@@QAB^<b8EhCBelaM9vorYrV&HOQ
zXYl9b{LjG1zywhUQXR^|z{rrwkOm2P244nda7y6U0fnOWPKI<QhHVVlYrqi%@+c^A
kFfeF=J)r<m3iSj713yDPIPrj31q^HqObm<+g<zdU0Qn*H3;+NC

literal 0
HcmV?d00001

diff --git a/app/bin/main/brickbreaker/App.class b/app/bin/main/brickbreaker/App.class
index f13098a0863b3710e9822c487f35c5d3554fe3dc..8cace8824ecd09e79d77dc4de863b9861aa27d91 100644
GIT binary patch
delta 372
zcmZ3=zLbsY)W2Q(7#J9A8O$bfol)ju5MU7DVGv~yV`ShgPAzfDFU?CSW@KR3@bvWb
z)C}WbkeD3ED8eSi!ywHdGdY`4T}_UML7qW@k%6Z;wInFDII}7-DJPYYfkh)qGYn*$
z5)XqigUaOdj7rJu3~G!Ff=NZ0$=OLosfpRCMf$#}d8J$ostg)D46F>Aj11x$K3R!n
zi52?A<(YZu`d)5DiMgrP5R<fd7<3re7#Ua!5|gt*M(gn~=!2~0Do!m4%Ph`J%1NE9
z$7DCTn<=Nhn}L;qiGhK^d^dwY<aP!jA8i3H0WLwNJ%UUT+Zcqkg~YcpNNO{0W02Km
z+s2@{n?Y53JA=CRHU=$imTe5W8yOfFm>9Si7#P$TI2jlixEMGXco@VOco}3E_!tx!
z_!-m~1Q>J~gc%GO#2CyN#2L657#PGLRx%hch#N96FmN#FGZ--#GcYnRGMIo3Gz9=c
CqC(RE

delta 472
zcmZ3=wv?Ug)W2Q(7#J9A8EhtUok?P65Mg8x%1SIttk5qm&&*5L_X<eNOU>b85N6<H
zXAoy(5KJn{OwLX!N=?j8Ez<W*%`4?%5Mz+!VPIvDVq_54@Ile+R+N~VYONW@#UQ{S
z!^0rUAUE-WgtP)91FsXv7zHPYIUs2z9tLFwmC3@4>TGH}4C)LTlN}hPWVLu0v>7xQ
z8Mum5OTsdXGm~;sL5g*G81xwQCnqo}*@C!+JPbw*#*7Tii76?J3|bIJ=qHw!=sV}<
z7Ubup=9O4$f?b9tIQc1~oeXOM$cu~&B48D$9-pkhlwZG?ft7)ofq}tsH-kXrb_OAz
z-3-E!+ZjZCcQc4-Z)cFu7T^-#5@gyV$P}@SL0Vf#ej9_LHuE+HRc)4S44T?(+Zc4T
zb+$1Wgl}YEU|?e4Vqjp<0+U<}91PqH0t`G1;taeDstkM#+6?>*1`GlWrVN4%Rt!Q6
y4h+H!`rHf*3<?kzFqklyGB7Z3Fjz8}F_<$jG6*mjGFUKJGB7bPGFX9)w*~-;Uty*I

diff --git a/app/bin/main/brickbreaker/GamePanel$1.class b/app/bin/main/brickbreaker/GamePanel$1.class
index 8421a1fd7f25a943e1207fcf088755b10f1a4044..acfdd048ec7ef79bb90d7d467ca3b2bfe4aab472 100644
GIT binary patch
delta 35
qcmeBS>tWjv$i!$qIfyA-(29YF!J0vo!G=MC!InXu!G7{CrXT=>AO_U{

delta 35
qcmeBS>tWjv$i(P4IfyA-(1n4A!IeRj!Hq$J!JR>#!E^F1rXT=^xCapc

diff --git a/app/bin/main/brickbreaker/GamePanel$2.class b/app/bin/main/brickbreaker/GamePanel$2.class
index ed5650947f630bb2f1ffef5792565667013f069a..d75f5e33e45e63f19b7cc5443982ab845f58cbd3 100644
GIT binary patch
delta 35
qcmeBY>u1{##Kh=4IhZL@(2aqY!JR>z!Gl4H!IMFe!F%#vrXT=`{|7Mu

delta 35
qcmeBY>u1{##Kh=3IhZL@Fo1!VA&^0wA&5bWA(%mtA$0OyrXT=~mj`VC

diff --git a/app/bin/main/brickbreaker/GamePanel$3.class b/app/bin/main/brickbreaker/GamePanel$3.class
index a1d6dea2d22ea9a08b095013d2ad0c2d33e33d62..27750c33eac6f1c9fa7100ada6acdbf682a5271f 100644
GIT binary patch
delta 69
zcmX@XbAo5XEfz-q$+uZ78D~xwWu2!R#2~^D%pk)M!l1$s%Amy%#$d(}&Je~B!4Ss~
Z$xy-&#Zbc#%`lT8mSF)y{Nx9$831tB5Yhku

delta 69
zcmX@XbAo5XEf&Ve$+uZ78D~uvWu2!R!yv*C%OJxL$DqOx&!EMSz+lFZ$PmVm#1O}j
Z%uvFR!cfDI$}p25onZk(=Hv&g832G65mf*H

diff --git a/app/bin/main/brickbreaker/GamePanel.class b/app/bin/main/brickbreaker/GamePanel.class
index 1b9496e8de4716ab5c577a91a1108c2d9060aeab..d2cab2d02e3d1ccf8f0ccc1437f1b625d1bbb109 100644
GIT binary patch
delta 4506
zcmeBhTxBhA>ff$?3=9mmj8oVdm>3zvCM$A?ZB%n&oV=b<Csdw?L7G8<k%3u5GmMjg
zkwJ-vft`T^#8Tm5;DoT$co?`CxItnXJPf=LmKF~KAB3gD!ypJ@>G3cKF>tdp7)&-`
zlJM7OkOyfo=3x+K5aD1jWn^IY4O4K+&&dP{oAWS;Ge~eSSTZuOD_c03m>L>$F<3L$
zvNPB)GVo<3mL=*ZmY3)|=jY@X@i5pi*iT-_WEA1Z$RL<hl$o5JRFs;Som!;tl$evl
z#o)l;4DyBxBZGv7CkXhU8epv%#?9cy;K9z|4l}&8Br`|fC$qSOhryG<YqB=85|0lL
z0}sggevAzIlmGL{OfF>>W%Ff_XJ-hUJb_t(BY+_oWJ}289n3}oVLS|y3{qSSj0_Px
z43P{`lYcQwvBmH(#4<!pmSRzqk7r~M1UaHYzqmXzFI_(*GdHz}iy@975oAWv<R}&`
zs}vpveg*-MU>XlYIw%%ci%SxVO1Ky@8M4_KvKSeJkd5$iD@x2w1-Un8@;(+rwmcq&
zd<KQdUs=v@f!tBe!%)LeJ2{q3kFB1Ep@E@s@<cXW<z|Lfc7_&422o^_yi+TKON#Qd
zQ+XKL7}_U4WYah3WMtsT%`Z#!Nlh!^V(4b*WoPJNWDr5t<(XGdTH>2nz{AkT&_CIM
z-JEgaWH}BgZbL4H2@I1#-kLIbF1rHfG=>@M4AU7IL?<uc5M>3ao;mpeyPm*oMg~rh
z6+xNl871rtb0^Dj$O_J3n9RYjfRTaKHLoPKh@D{($VfJ0E{25+lPBkJRCurEVOYVi
z5)^%Fc^K9)tY>6k&n$M$Ehwo3C)y|uhK-C2obHLasS5sOsYRR&)(o3@7`8B!GcvF`
z`8YazgTiJTC@pWFtj}p%zmt)H7vw8&@^Z`1E8$|;!LS?T`aO&c;u?^YlarX2t{+@d
zl$n=q?dho*#>KFY;Q%|serTkE^|}`&7Gz{57xOS2WH`jgz+RkM0y2(~K?rIHDE)#&
ztTn?p7>+P9hy)a+7CRR!fPJb^lCKa9iR^t0$9NcyGwfkx;7Tb<EQeSN^2bRYhErgF
zq!*>8=7HRBhKJ!S!@0?NT*?aj7%uQITx7V!$iR`7nUfQgnq0!jzz$CSnqlk=S0)#7
zNpJ)(T;pN5&TwP$L@pIcYld4q47WiBvLxk{rh<a>E)T;!hWnGxaj7XhWO&TZ@CcgZ
z^ugJ~vm~`Bu>_R=o-jO}EW)k8;lS{mhv5ao%gHv}T5PWw-m){inViEdq4JJ_n~{OB
zlAGZn!v`LQkD#Q?R+I{gY*6O>%){`7L1FTIZfOe#hHoGTtput3!Nc$q9G@A9#eS(3
zB_J>V=3)2)av^I{PGWMl5Ca3lKOTnvj0}@Maa#&mGcxlqNHel9GO%cPYKCzzvQ4(-
zdCw*cQXw+gh*yVEY;ruW<m4Z`t|<<T(maeZ3@;fOc+yi#Tr!JNlS?x5^Vk{XU|s}8
z4=B_U^U`xtIT>CvD)2BWg8fm!$>6}K%)_Vx;;|Jareu~Db1}*?s)16;B@j!4hf$MJ
zYw|)qO-%<z9UewqMm<Ibo?;}67#UbKKq-flA%M|<htZJHX!2)115Oi0Gj>K(Mh3;n
z|M?W_c^J(>0l<--TH;ykky*mUXu|NEi_wJ9iigpf(T0%$Bom&QQj!5q>z*JfJ03=R
zkQ8TnYKccGC@X<P9eEg?7@`;%IEoQQF}m<Dx`LE~ObJWODNW^MG+}h-Vf0}1WMtsV
zNSu6zU%|(l(U+ak2bQqG3EwF{KPNRYkB89@<T{=t2p4Pu7h?cp5IbWatQZBW_f0Ix
z;9(4A44G^ppzLVP7{$XF4T?k-_aMhePDWWq1rQO(!x#?=P}XvghqxFV7!!FIlR!y@
z1(Z;@8Qd6Cco<U|(<aXm&}7TtVa#Mu*nC<*kCCOGkwI$m0|BYY;zGu3EsSmKjIEOc
zgfv(f{xh~ut`V9i)Xc%y#mK-BoSa{jYNf!)!PqldM_7fie{!I(7Ry9N2D!<NLUNPm
z3M(=4Og<o-S<lYE$RN!i!@$TO%fP@G$iT_K!oa|=RckwgoEGy|21O8|3?fvu1h}>`
zsA~!EZDr8Z65!a%psgjyXttF>S8F$ee&lur!>tTPT0$mU8O($%b}(4^YHeXK+Rfk)
zDaaTn$asiV;Gckq&UOZ;oeZu_4B=W@TNu=}wlG9$W^85f-p$|}xt+n^Pir?rKqOQ~
zQ+GQ<&{l>}EtYKz;abew7^1ayGsJ;pwY9c0By43!*4o05yp17MTWcFbM!42ChTM$|
z3=B*R1q=)fQ4C^}Wkj{>RT!KZR2dQ&)EIIZG#E-5G#NS>v>5srv>7Hd=rAm1&}CS~
zpvSO*L7!m@g8@S!0|SE=#QzLM48;r}u$7^Np_GA<!I`0mp^TxNfr+7%!GWQIp^|}_
zfeBRUKthgT2LmeuGstEw)@=+`K3dxt>U_291yq@LFf<8uY-8xs5$f2@Fd<TFJHw=H
z3{$lQ)WI^dz%sLTGt2?W%md4Cfo0}{W#;c@SO}6?yp3Th!h32AoD2*M#tdu>CJfvR
zW(?vC<_xL~P7H<&&J6Ypehl6W{tS@}i4651A1OfG1@#ddLkPnXhNTRQ4BQO<49ggn
zGcYl*fT|UUKbYhg*cezD7#Kygw6`;?0>$A@hBb@~Ga2}_w1qZoV%W5eVe3Y%EewjY
z7?iYkGwc9Gh#8B3$aaQZ+Zgt03mq0@cqYggw~gWGM(s`Y3@5fRoYrPx5oFpT$P}=R
z;k?!shEVMT441btT-Dyha1$h}wS_@fkV#D-ML-0iz-TAK9YzM<<qQToI~g7@G8|xV
z@YCJK@XU%ul4T3SD?uiMB@8?|I~m?HGAw7{(cQ-INmqLt!&jZ14Br_UX8k{_y@}x$
z$l%=!^*bVkOjraYp^nqq!l1f~;V%P&AQOjx+%|@zT3Z;r=Q4=zX0VPFW@OyX$mFM`
zEzHQOyNzKhlFxaOe9pkYzyeNTO$-VQ3=Am@tPH6Pf(&U4(hTVgG7MP^$_&{IrVKd@
zjtsdBPW22044w>y4519g3<(Tn4CxHz3}p<J3=Is`49yHR4807s43in^8RjuGFf3tc
zWLVD7%&?lFjbQ^rHN#GZPKE;vT?`i(x)~lZ^fJ6;=wtZ8(9iIfVG<)J!(>KbhH2mg
zYsbI_iY{pMGBAoTvNLipFfueSOku3&WaMICV(4X1X5?n%VPIyM%pl9i%gD#T!tjNG
z6P%uz8TlC)7<ix>I2i>Pm>2~a7#O4&*kx4zFgUO?Jp9X`%no9_{>i}co54qvfsuie
zVLK$fFl=C82j`doEtahe%G$b+fQKfFdI33T(CdK1o>7Q_L6BjeAfwJUhND<gk1(Ss
zBKg2Gvm66E0|UcM23Cey3|tJe8DtpdFc>h*V{l@a&*0Cn5F84SY#RUz1%?1{DAY4D
zFfar#iZe(sFo9SQA2TpAN-#=7+|P2HfrCMefq_XMl%{7gsX^i$l>VTln%{E9zwmSj
zN`j!2$STRQjZw;qZ8xKAq$KMWMtMorEex+DS++1Lfr;&msvxO)MB3)q&ZxSLQGF(Z
ztR$Nx+ZKjbC0junB-uckLHuou+RSF`%NYxp%{Z1bMu0NP7Djzhb|X;^BP&ix&TWjw
zvl#6_w1pKH$Z$z6kX9~`y`0+^EkQE2+Zk1@xWSTON7ZAv%8EylN0J-tkk68wEZZ0z
zv?8}Kc(bHzW$*^ER6)i#Cv0U<mE_#Q=(df~YbHa_4n}_w#?b6OGhSvhzU2(1V1D@Y
zc?|3<%Nbah&G^v;1lY_3MfqnkOjebVsgJZ00aXJC=ZXr63WGyQQe-=Wla;8hq$s3P
zXyIcN<rC#y_`eGrrUJqVlH6MuW0o*TfcY#CE=VjkVIhMcI3OA2OSUq~FK6Hb^B}?6
z!oeuY0S!RrdZT>{|IKe<XB1_J3hi6?uTzo*CFDWTnE)+7{xN{kfbLGlWKcb|jWK;A
zJkxJu&}Cp?Sjxc8u#7>FVL5{&!wLo&hLsHJ;A&(wgDJyWh75*v48;uV8JZY2F?29&
zW~lFD*upTEVJpK@hHVUM7<Mq6WZ22@jA1v!2ZlWi-x&5XGBE68<YPF%D9Lb;QJLWo
zqb9>)Mk|IRjNS}K8T}ZJF~%|+XUt(Z!C1&}lChuR6ypqrLyU_U&M_WmIL~;A;R54T
zhKr037&bG0V%WsQ#BiNSkl_ZC7{dxCd4^j|S`2sVne-U$f%C{cNJ59@5hi`cEXHgG
zMg~D9Nrrpif<lr>kTHirgn^kso$)=m$Y5d6V|)QFGFTZ*86Ps{GV(F7F|;z)GUhRG
zGq5vsGo~}<GjKC-FwA9iW-MSVWZ-02!)U@-#K_0M#c+~QoUy)`v4nw};Tgj(#!|)-
z1|CLbhI+;_25tskMm2^S#&QO320lhBhB(Fw1`Y;(MsEgR#!3bb1_4Gt1~0}c25tsH
z##jbx#%cy`1|h~A1|7y425tsn#zF>laBdc1>}TL)tYze35CxZHVhl`B4+$_ZF-S5A
z1~cX`h%qpO3$;@WVt*NA*cl$OGr0X@NQIPY><q8}Ft9R$@PCF`4E*d2jO>hc5Jhkm
zjEwAzChQEa*%@Wo8D%H)%d5x{P!cFFT#u=Qfr054gW!J#1qK#mdl(pgG6*v;GR$UB
zfRsxN&J4^9pwdeaRIVz5vZk(pQNmURT~KO-G;;XB75hU5R)$9m0t}DAaSSTRL1iqs
z`BKlo$k2)3#1t$hK4V~Ic+Mce@B-6B1{TH!P`S+5$k@cdz`)1A#Mr^W$k+)cyBT{K
w7#NfoSQsXNT22fMY7BEA42Fdenz4^@0^=kGNyf<x3=A9$%nTD4<}fS-0C~Uj(*OVf

delta 5138
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

diff --git a/app/bin/main/brickbreaker/LoginFrame$1.class b/app/bin/main/brickbreaker/LoginFrame$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..382f95c9d2152b82cdfe8936829c743fda3b9e14
GIT binary patch
literal 984
zcmX^0Z`VEs1_oOOBX$NRMh3~GqRiy%q@vWs?9?KCpZxU9Jh!66+*B1qb_Nzk2I;KC
zvPAvF@)G^jvedj1ec$}j;#9|!#DbF4B1Q(bl8nq^6$3^FNgo`>STi!P*<|Krme?^e
z$Y|hHr5VP^z~Y>rlFG@z$iU6Rz{<eJ#lXzK%frCVz{kkItN~KM?~|FA>Q|bZlv)&$
zn3R*s$ROmCpPZNzmROVt;zI>lK#pQ$kj7=1ilH?l15Yl<Bd&QRsYR(Nj0|!bKG;0!
z3i7kHW*8@f7=r{mgE%9DI1YdEFi0{;F*5KJmnP+AmN=D`l;r0zGKhjrt<Wzn&&*5L
z_ksvpgG`g*VUT5zV`LD>$S+GRf=D>$=j0bLG6;Y*fx{duV$H>%z@Ws=pvcG|400rz
zaXbvl3@VHayv3;{PKn9c=|%aac`1wx!bm=X7y}AI=G3whP|$$P0o#BSs}RpJGH^qJ
zrXsT>H3j5UO&$g<kW;ynz`g<-#>l`GoL^d$oa&YdiU)o~y3qp}&B(y-nwOlDU!0kj
z?weYYk)OiDpbv^jK2TC{&d)8#&r8iKDQ0Bg@yyFhEppCDEG|whW@O;-OD!(($S*Eo
zP+(wWU}j)oU=$Dlr3MBDFpr&qgMpEOlYxQ3gn@~HiGhKEOG|qz1DDoz2A+)!3=B*R
z{0s~XYz&MH3=HlJ0t^fcJYY5#gCK(t$TS9F1`((UUQiQ+w6-vCZDA0FP}18N<Pj!u
zf$i{Q5M=NIn<fV43qeg|U=U(ZWl&>aWME`aCt$7y7IS?W1R4DBn#;nV4fd4|gDwLD
X0}F!~gC2tc$k$*y8Nk30tU?R`$Zgsh

literal 0
HcmV?d00001

diff --git a/app/bin/main/brickbreaker/LoginFrame$2.class b/app/bin/main/brickbreaker/LoginFrame$2.class
new file mode 100644
index 0000000000000000000000000000000000000000..b303f091587d2359facd2ef8188a175837ff3a1c
GIT binary patch
literal 982
zcmX^0Z`VEs1_oOOBX$NRMh3~GqRiy%q@vWs?9?KCpZxU9Jh!66+*B1Kb_Nzk2I;KC
zvPAvF@)G^jvedj1ec$}j;#9|!#DbF4B1Q(bl8nq^6$3^FNgo`>STi!P*<|Krme?^e
z$Y|hHr5VP^z~Y>rlFG@z$iU6Rz{<eJ#lXzK%frCVz{kkItN~KM?~|FA>Q|bZlv)&$
zn3R*s$ROmCpPZNzmROVt;zI>lK#pQ$kj7=1ijg%V15Yl<Bd&QRsYR(Nj0|!bKG;0!
z3i7kHW*8@f7=r{mgE%9DI1YdEFi0{;F*0x^B_?M(m6nv`=P@#fg3YYZFD}o_OV{^;
z2wQ{9lHp;HWsqZJ5Xi_cOD%#(IOpf&7cnvjfHi?b94unZ#h}2T#Ll3|$RG@IBARhL
z49W~Dj10WRsU=Q{$=T^e`K5U&j10m^{(%?+3P9%6vJz0hfXo5gfE1??uQD=lLjtBE
zvm`YI<Wx-_1}%_Nxs$-Y0vpE2z!jWdT9lmXmI;alenhI#0~yW8!0(!uoReRinV0UH
zT9T2U!o#2sibg(ALU7K{Ey&MH%_}KpWZ?14%S$bC&PgmTPAz6+;P6W=F7e1OE@4n$
zU}RusU|?Vr5CEkG1_m&Xoq>aak%5zefx(1<iGhiMfq_d)dn*H%)^-M-jSLJ7Obq-C
z3=C`xj0_A6feZo+3=BMAHWz~+gAm9x24Myfs0m(B6NI$3FmP>Q5QR|E+Zf~#CUJr7
z2xbsu2mzZW2IdPvO=DmXVo+sJV_;-pWKbtyt_Bu!!x;n_BJi5a!k`WIl@5b00|NsK
VgBXJzg8|6bU^^MWz!0oL3;>(R*+~EZ

literal 0
HcmV?d00001

diff --git a/app/bin/main/brickbreaker/LoginFrame.class b/app/bin/main/brickbreaker/LoginFrame.class
index 012d86a8df1bef8d703b901d7ca201b98df8516c..627b26806f4310de5a0aaf3530c940de005213ea 100644
GIT binary patch
literal 5501
zcmX^0Z`VEs1_oP3D|QAZMh5YuqRiy%q@vWs?9?KCpZxU9Jh!66+*Ec37Dfi4ti-a!
z3jN~p%)E4cuYkn7)Eq_z-qPaKqP)c1RJY93oD@a|2_F<yA*mH5U>R#h2Ht|i;^OlB
zq7<+IBZCa8(g0*xYeoj1;?ktt%o3;4l9K#9Mg~z-)evE8Mh32=#N=!UkCA~pBQ-H4
zwa6zi3FI~rR4rgpkUL;b1`8m$3(Ds%NGwXtD*=0)kpayRu&6a719uYGUC#MA`9+Kj
z0$`i;6U$5V!6Md-3<4SXWvN9Fhk?Zy88}Knp^=|g!pOjn(BPJzS7Ob`z?lPbG>F5<
zzy<LJgd+rVu4_?IKFn)Eu&_iH<VefRNp&nO$zWs<_5soQAR;xdBr`d&B-NUcfz2i}
zFSEpskwIJoY(G3QA->WKV`N})&QD3@Vqj)a<YACyP-0|Y*3b-NXHa2e-~&Z0!i!uC
z$_#2CHR_BEY#N@Po|<8t42%q#JPbk%!XTD54}%DUFgt@TBLgp7E67V64El@=?7m?N
zPWd^RTnsu4h9F~%;I7ioNz6;v4=yRn%uBb1nQOwsAj%*HGS`fUK^(%e;9-zp5MyVs
zLQk9Eh~!|fVPs(7Vz6Ye1DS8n$RG;wHH!HVS3B}BNHXw(On2sCkYeCvXK-a?5CnxD
zN)U1}xG*S!RC(|)NHfTQSYA8~0t|v&42%puJPf{|0OJFNv2%WIL4ICpUP&=X%AbcJ
zfFY2Pfwwrd#3?a3JH05sG%tmbK^W>FM7jY*0l!aXUaDVdZc=JdNMce>DkFoCPkwS@
zPFP}5CWsFeWGTtWEM{bo^udv5tvMLN85zXDnOLDDU%?5KwH2Hoc^l;PNFD|r23}AA
zMe{JkFvK!4uotJ6fMSS|K?uoZAQ5ZLFp$D{9)<*%N8Iv@QXwAUU`S$Q;0%Qp1Xduk
zQ+OEo7<f4t(ij;yVHq1Nk-@{j4+`HbMg}oZs(>d!cuB#<kjan(im_Zq1{MuyvdZUS
zU}a!qXDDQ3kV4T0GaOu|a4{4x<bbR%;bCBB;9zGcV`LCUQ4YzE91InV46NXg;bJId
zumfqS=3(Gu;NoDYWn^Fh#SuuXo`->(feYlIXpqs-AjM$9pOZnEp_PZBjX{`^fi>L2
zGsG1n7thYn$;iMDvJsL|N{fo~i?|p%7;-?;Jv<D(41J6YoW-dn&R{7<1`(uyhKN~%
z^4kPxk_H>&l9`*DSDcxj$HmakFbNbilNlLUH9%Pd6e&}A7^X2yXJim4PAv&2N=-{G
zDoRZW&a6sB<S0-AgPURvO7qGLGkF+hft=4A<m$rCFo%&r5=TN(G2~*H%`gvS?|eoE
z84a8X4wObp85Z&|EMi#9$RLoIlH!|RTAb>WSzMBums-Tgporwz)UwpP5`7c}V4p9=
z;}9b*h9wO1gcukYR`4*aWLU+>z@M00l9`_ukXn?MUzD4g!pLBS$9>>J4;-Wr+a1B0
zVeYdA#nBobhP4dq7#Rc;Q&Lc+85xu?oR6x)S~E<DfstVaJHtk3>IU28UX+>Ql$h?5
zSeaj1!o{$GK@n6YY~f+p%CHTR7$8!N4AMvzK*W3#^Agiji@+hXgONcRp0uEbI_KvV
zmlP#tf(x4M42tXwyO9&1XI^nCs0iA{uoo14`xqJ6K}9t<Q*CEBz{7Bm;SeJOTP9c;
zBZD9!fFL@pIT^My9N}R&%5aR4fit}*Go?H;1ysK<dV*w5@GzVN$*_WCDnKHqc^J;X
zMJhr5JjcUup5X!`19M_Z3L}Fik`Li!q&37^aIx>7l$DxX0xoVYF<fD1xXj2P3Gy_o
zoN&r7N=YqpOH3}wFRJ8WxXN&ikwGxIC^fMp)it-Eq!J<zN@|{<ItgqtOm7lcuRcVH
zHOO%{co=Rn+=4^`M3|954&p@Ynn2|<b9z!TBZDm1Xygb+iVIK!AtNy_B_|bH$XGJm
z=V5rjU=Jx{L1i7NRC&b1@R;EVBLjPSY6(aTR2*nR%moJqv<_rvc*e*e015@<stZ&i
zz2ISZ$?%Gifjd351XdD)N=?mZXD)`P3~xY@{uWeLL_32r=TnCFJPaQgJ~A?}XBLBl
z3tYcPaWH&lWDtcF;0l?=3Pq`frI|&kDT*8nUl|!hVP>O9foj9=JPbb=eljxfB$k$B
zz*-uN4C;_DM0PH6Bt!kB8O6!)o8d1z!yi=dRTh_|=JGK7WBAX=z?@%N0&D!~XXfh%
z6lLa>1eX-0CgxgmFfxMDEU1;LP+XdvoLXF*R+^*8#mLOa%Ff6FE&I`Q@i4N1qoDv~
zP);5PBL^dctY=<XVoqj?0<5W}kYA(#YhfvJFmf?6u!0*}T#P)7eC&+8j11zS=zygW
zFaH8?DU_I(%EQRdD8R@dSe%hx?weX%oS2^Kl9`y3pU%i&0}T{VVT>>BV<rGkP_pBI
zIS$kw0NIWbx{M4QFb6X-@CKJ8CTII57C@T{T#&Q~s@518IC2tmlTs2@3>X>Ykz9ma
zBD#XgW^f*4WR&D#xXYl#$iSEiYq5jVJf?Dl$%b4EjEr(TjG`cYT*3LJMaijdnV^OY
zKR7#pTbp_yFEBC)IOXS;fQqmJ-_(+f{FGuYMrB4-c19IO1|^URh$l1i%JQ>Q^?krD
z_f0KHOoJ8xjB1SPj11hl2q8v>Gf-cFvk+7##BdLAmMm8B$<NO&Ex?i@k%AsYV@PE|
zDzb9oB_USg*NdFxp(Z;g=HvutmZVzqvoR_OFp7ghRGWuUj8UAQol#4GQ5-5}z{4m5
z7Sk7C6lY}M@yyFhEppCDEG|whW@j{IWKhKjL~KF9&S=iaActQmBLf>G+!z_S{Zfld
zd{aR!)M5rj21W*E1_lNJ1}0D&je&uI3Do!k)0_-kV453B^Dyv&`Fv2CA4&@_2!h3h
z7=*#J2$U9O5CikYp|k{)mW1k)g3{6qG7Jn1Yz&MHvJ7$zj12M&42+BnYz#~c3=DI%
zwlgSb?PgGp6i^XlSR=^rXgh=IRt61-kdz?93_*r-U?DB7-3&UBLVC;seA^iewlWw)
z`78ngV7@7wF9GJ8Ywc#Rj1;oo&S1Nh!2y}$q_vyDC2~81+g1j5E$yugo?6=&yulU<
zGJF7||JxZ<w=wu_1bZ)tfq}sc>=juC76wsJ|As+}L7c&gL4v`HL6RYgL5d-rL7Jh2
zL5888L5`t?L7t(5L4jcogCavP0|SE?#G?!$4517lFc;J(VPIrn0`*8B!NFX_zz$Ny
z6b5l;7}(JfT3Z-E*nAs96qKp4jUf)ABoVA68Nx{gbJDeTGh{{zh-_!b-pY`twVR;;
z%qiN+P^`6^p)^vcd^<zsR)#7Frv}Wa)7rw2thI%~6k<m@f|;kag~50mLxa{9hGGb_
zQELlB6(kZMfxeBQNoxy39i~u~))oehZ4AvI4VxHRwlTDW)FA}x;DS}V89E{bc(yZi
zZDZ&LDMI5r>}KeX6l6F7^3}v`3{$kWFgRffIc#E>0ScKd3{G%X)ozB_ky_gs=5AwH
z05Nz8h`S8Jt<u`Xu$+Nm8^daloYpRe^$^Z(h7FP188&TW*u0xzd*pV8oj%&T8Fobq
za6#a9hCN#u_G`0lWjL(Oyp`cNh&ZJMiX8223}>}j;NmP>8NlMnF!AFcRe4|@>sAIZ
z&jHK>8^a1!o(>jbfhs5l^I*!IU_7YRY*0N_U~zURuMWi15-@_m9Sj$@F<eKa<97_!
z3=9ma47?0#3=$0L49X0e3<eBZ47Ln93|<Vn4B-s=3@Ho-4229v3^feK4DAdi43ij4
z8RjyWF>GKkXE@AY$#9Oris1%>HN#^D8-}+Gb_{<R>=}6(92pfDoEVK6oEdEyTo~OM
z+!@0d0vS^oq8W=AVi@Zg;u*Ub5*Q~jBrz^!NMT&Xkjl88A&qehLptMLhD^po3|WlF
z8L}DAFyt^^WyoW^#gNbVn4ysI1w#?zM}`u{Zw#f3zZuGySQsjpI2kILgcz!s#2IRs
z6d3B5R2k}-v=|zg^cfnNEEt-ZY#CaZ+!)%JLK)f-`Hv|KlK&VdF&tsI&2R^t|L!s<
zLGmBNPX-onF`2Kmg~36{dK<$%P(p(-^0qNN^x4huG!m2-wlO^4&hXk-dmF>MnGC#O
z^`Eve+}o%F7jP2#0us>L!r-p0vyI`~Oa}f<48MdK8MZMpEob1<5@uu<X5?hv!N?7Y
z7-j}g0b|F&&%nUY&A`df!yv@a#~{Vf&!EXLiNSzjGJ_?<6b37X=?snxGZ?%WW-@p)
z%wY&;n9q>Fuz(?%VG%<f!xFGZ6(C-Kc$7hkA(T;&5!B_;WN>2?W)xyzViaLuVBlk5
z`O9F%&hV6-;i-T)7XuThB>)WuZ3YGgMi2%$j0x;8P_fOxumWrW4@44TfdCVz!h>qG
z1cxUB1FP0HMhSGy(O}JxVvrT0nSp_Ul~IaOnt@S(2~<a7F-8{Mm>7J<Ft9MngGy^g
z1x7_knailbz|5%0sKclWX6Z2+G8!=&GcYhnF)%aC1{K5%3=B&kG@}Wl8KVV*B%>v`
LqGDp0&9DRjkmR3&

literal 3438
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

diff --git a/app/bin/main/brickbreaker/Menu$1.class b/app/bin/main/brickbreaker/Menu$1.class
index 95053ba712d0b6fdd168b6ce75009cff0a90a813..8ccd6e2b0c6789e5df232a42a0ca0cc96a4ad5eb 100644
GIT binary patch
delta 449
zcmZ3>wwIOb)W2Q(7#J9A8B`~7$r%Y`C6*=X=OpH(>-#5Vr6!lKGq5o-$bv-^%S-fA
z%Tn`7^c|B+GV}9%GK))6^Cmj^3GnhTurqLQF)%am^DuBS2uxhySI?gaRuqt0l$KwV
zo0`JNAg|$r)f`ulnbw+NTnrKnQtS+pj0}QFMVZOjNkyrN*{MbPzNvYoJPgtd0*nm&
zd5LA2>4_z&A^AS}>6v+q49uxzC5#L*7$$RrZHE{=c@v{9vl4^A<VTD~^^6Rx42%K-
zAO|xrFfcJNFmN((F)%W4GcYiiFff5dxU{slGVo|^XW-iiRwKy3z`(}9$iTo5${@tR
zz`z4$b1?`rh%hiPFfxcTh(S$oU|<BBz@fE;foB_oI6^-cSUlW^ft?`&Y={_GfCFj>
v0|N(x41+8KBLfSA9N1EM1_cHN1{MYh21N#C1_rPrK~7*`U|>)ItB?QyRjyLH

literal 813
zcmX^0Z`VEs1_oOOb#?|OMh4-eqRiy%q@vWs?9?KC-_*QP6+?Cg7Dfi?ti-ZJ{lxMT
z{nWD5yb^ui{L<o7$CSi^lGGwb2DXxn%wiP-Mh0OY3<Ing8Q5$x^D;~97#YMgu*hqM
zF*2|?=clA{GB7f5^DwY7uyHXkGw|{-uru&6GB9g^6!80G=B4_T<|d^Ug(N2Bq%txH
z`Q#@j=7c2{WrFxnK^Blh7#Tz{tx++wW@O;W1v%R_uOzi7HHDEuPQwSAw_HI!wAKvc
zVi04HU}q3#WDvyg6%T_Xg9syoR8eYrW^qYskyB|&Nq!zURN%%lr<Rp4GDzdGgOPz7
z;-ZSolGGHCeR4bu@*smHu^9|j#mK-FoL^d$oa&Yd3I<M4B<X>?!N|bxnwOlDU!0kj
z?weYYk)OiDpaKd(K2Yd8=jRsW=cVSA6f-jLc;@A$7CGl678j=$Gcs`ar52ZX<QJDP
zC@?TGFf%YPFbW8OqJe<{%wuQZU|?k6WME)0VPIllVqjq4($e0_z@@dFfoCHF0|OHS
zKLY~;8v`Q)1A{q(00RR9517rxAjlvDGL1o)K?G`oBh&;=tt|{(+S?dJ5e9I9jkaXq
zV6XxkA_nGjLJeVH;AD_ukY-?HU}TWNX`C#&aW)Jb47PZUV_{GL`$3UGiGhKEg+Yu#
SnL!ogN3c~4V4wz8AqD{U!l)?#

diff --git a/app/bin/main/brickbreaker/Menu$2.class b/app/bin/main/brickbreaker/Menu$2.class
index 68df9309fcc0d2cd2b8f0c398570e563d1dff986..7b51574bcd850f51f9e0d7e4b060e397620d596d 100644
GIT binary patch
literal 932
zcmX^0Z`VEs1_oOO19k=`Mh4-eqRiy%q@vWs?9?KC-_*QP6(e>A7Dfi?ti-ZJ{lxMT
z{nWD5yb^ui{L<o7$CSi^lGGwb2DXxn%wiP-Mh0OY3<Ing8Q5$x^D;~97#YMgu*hqM
zF*2|?=clA{GB7f5^DwY7uyHXkGw|{-uru&6GB9g^6!80G=B4_T<|d^Ug(N2Bq%txH
z`Q#@j=7c2{WrFxnK^Blh7#Tz{tx++uW@O;W1v%R_uOzi7HHDEuPQwSAw_HI!wAKvc
zWDsMJU}q3#WDvyg6%T_XgA^kJUr}m$W^qYskyB|&Nq!#4W{`;$`o-m$dFlFI5MgU}
z1{p>MK9CGJ2%YnD@{70_q#5Kuew1fqVAJsQ^wbRFVo+pIW@k`hWDo|aMKgtmL4`q;
zk%6~3wZthgIXk^5zcep}kwF;A6JUd_LE*)mT2{iyAdSa=j11h6(5T2P0R;wEaDHh~
za;jS<C~!GJQLhJb1S12#YhH3resN}Ax^HSpMt%wpgDxmu_&{;$oS$2epO>0fQq0J}
z<C&M2TI8IQSX`W1%*epums(unkzZWGpuoV$z|6qFz$hR9id+T;Fpr&qgMpEOlYxQ3
zgn@~HiGhKEOG|qz1DDoz2A+)!3=B*R{0s~XYz&MH3=Fvp0t^fcJYY5#gCK(t$TS9F
z1`((UfedV56C|~^FmP>Q5Z%on9Vs9pkRr&?vz<Y98-oJEKrXPtd<F@I0<fWCV7?^O
zPzDA`1~mqC21W)(1`W9JK~UqRkd0RnWLP7}@Cdv4MGTS*#YpB$!OfR~n$N<Z3HGEG
bgEj*L0}F!~gARipC=kGQGk}3UScMn>aFxcx

delta 464
zcmZ3&eukCn)W2Q(7#J9A8B`~7$r%Y`C6*=X=OpH(>-#5Vr6!lKGq5o-$bv-^%S-fA
z%Tn`7^c|B+GV}9%GK))6^Cmj^3GnhTurqLQF)%am^DuBS2uxhySI?gaRuqt0l$KwV
zo0`JNAg|$r)f`ulnbw+NTnrKnQtS+pj0}QFMVZOjNkyrN*{MbPzNvYoJPgtdVvG#3
zMXBi^TZ^1ZOG@(dAnri2f;qLUgponUCo561EKwib!4Qikb1>;LD=`R6wqP=<XJlYy
zU=$DlIiG=nfr){Efs=uYfsuimfq}t<fe9?arKP=<fk$gQ1K&ol8bJmI1~vvp1_lOu
z1|bFp1|Be*i$Rz{gn@y9kwKI}3~GWS)C5kgEet%`+Ze<V25^Cm_H|_7U~mGPA_f-V
wgqi|!hYW)(10w?qgB;jac?Jar1_l-e2?j+5Wd;VYD?x5xU|?WS0jrPz0M^D=SpWb4

diff --git a/app/bin/main/brickbreaker/Menu$3.class b/app/bin/main/brickbreaker/Menu$3.class
index e1f98e2eae7ea3655926c25a6e886e20c679186c..f704c0403e9ec14722778141dc7936146c833635 100644
GIT binary patch
delta 23
ecmX@idYE;CDHCJuWHTlQ)_MjGhK9-2OdbGJ#s*~o

delta 23
ecmX@idYE;CDHCJ(WHTlQ)<^~phN#KaOdbGFcm?wS

diff --git a/app/bin/main/brickbreaker/Menu$4.class b/app/bin/main/brickbreaker/Menu$4.class
index 3c99d6aa4fe10550de84c77b2170d9eb0aa0ec53..0bfd40a606ae99a0e9b915689e468a86a6c3bdcb 100644
GIT binary patch
delta 23
ecmX@kdYpBGB@<)UWGf~I)*c29hTh5bOdbGMcLtyU

delta 23
ecmX@kdYpBGB@<)HWGf~I)-(nVhV;qxOdbGIDF!Y8

diff --git a/app/bin/main/brickbreaker/Menu$5.class b/app/bin/main/brickbreaker/Menu$5.class
deleted file mode 100644
index 994b65eeed87fb9149c33b39cc53280046e19a4c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1374
zcmX^0Z`VEs1_oOOS9S&_Mh4-eqRiy%q@vWs?9?KC-_*QP6;pNw7Dfhvti-ZJ{hY+S
zbbbG%tkmQZb_O;^1{D<Lo_QsyMQMr2sm1#4iMgr%NyVu}WvNAs3~VJCnZ+swj10m)
zC>lWKTQf4S*<|Krme?^eh-qMv*9>E1U~$e*N#$f<WZ>mtU}xaqVqj+A=V9Pv5MX3r
z)&MEs_sPsl^()OyN-YXWOv*`RWDxSnPfpAUODxI+@u7k&AcrtAh+<l!VrtFEz?Gi|
zb~xD4EE=AgVVn#S3{vb2k|+TXTv=R_n#;o=%^<_bz?@%N0x}UCKAHLY0Y#a4CBY>{
zsfoGPLJSNHay$(33<``4;<<_0sm}R%$%!T5nI##{`FX`9iFqZ(j0~b0o|-;j?cm@I
zE-A{)OSk4?P-0MFXHaHj5C+Sk8qLF?%Am%`z+M2dEhi6T2&NIBfZ<BZ%uCD(PR=h%
zWn^IVWMtrk_%S>)Pl$n$L5`7uD>%QjC^^+F6BKHkpeWG;S;)x1@0ypKlV6;fm+qTd
zl98Xn&Y;i8AczrxJPd{mMvM$1>7}W~C637@nfZAEsYPk|MY*Xdj12M`5O*b(m*}UK
zrRJ6BLzK9J*w!Ey3OMEGmlT&2B^E%eDdu7@WiV%FFk@s;0XYPc=rZ%l^0QO*A%O!4
zMz_S|lKi4dQ21IfGR%Nl1P()}YKVaziFqkGsl_Tj`T5zU1=bMvfR#Z^Ll!~N7*bh~
ziYy6L9*txIBrjMa#~;)P=fs?x;LMU#YkoEc6AlJzMh0n6+EU0bOD$3;&n(GMNK_~W
zMT<gyngSySgDoS2WMqD+LV123rZgi1k7r(9YLRnJVsUY5F*}0;BZDeN;9&DEJA)G=
zgB*UPj0|j$uwi82@JlT&@yIVOVNhUTWMF1sWME}r6c7MqItB&?W(EcZP6jRpMh0#M
z1_l!bCI%)31_mxI?X3(vTH6`;HZm|UFfj-+Ffgz&FfuSO%w_=P03I-#i$Rz{gn@y9
zkwKI}3~GWa12fnJ-c1bR(z_UB85p)PC?X8u0!z+g;9-~#Hb@N2=Y<-?z`)C(&Y;1-
z$iT>;iOWbWtVS+o;9*#T*GN_dZLnW-7<3sJ7+4te7z`MU85kJ&7?>C=85kL?z@!a>
d9RmY{5Cap~hYSo14E79;49*Oa3@%{ZdH|O?PeT9z

diff --git a/app/bin/main/brickbreaker/Menu.class b/app/bin/main/brickbreaker/Menu.class
index 0e10f4f6427890986fdd776258506ebc93337e0e..2e8216aaec1c650f58276e3247543fe0529e22d1 100644
GIT binary patch
literal 7402
zcmX^0Z`VEs1_oQkLUslwMh3y8qRiy%q@vWs?9?KC-_*QPb_Nzk2BECPvcwAg;_}SA
zbbYUY#JtoTMh4dO($wM-Mg~zI6j`Uzl9K#9YeojnjLh_m;N<+GR7M7#tl;FL{G1$+
zRzpSxNmMNeIcr7+?wtJe%shxGj0}85sp*-;C8<R)0j~1YoaFqxkkpD2Mh0<Ib3lS1
z8>|@_SksCUb5j`^L{L?@fkdqt8Tb<OGIJA4GV}97GILXl7#W07)PV)985wv=QY%UV
z@{2P;Dj69VJsBC;Y%=pQOY9gK#5GW~ctMQT3}a+qan4Uk<zirFkl<kuVUT2GVAjwK
z<78lDkmg|!Vh{$gWO*3)82Gsu7#ZYw7!*Ki_&~-w=jRsW=cVSA6oaIcco>vHQoJB3
zN0@^d8TfrN^HTjvbCXhwLK2g5QW+V9eDaeMbHWmfGC_Q(AWKO`W--WT7;$RN&Y;Q2
zAc!1oU>^%HFfeHIFz7JoGBWTdCWAa3kXn?MUzD4g!pLBv;e%<CCO8oE6U$5VQ_E8G
zO7tDU+I&E9mX}&&&BdU>pbrWL14agA4Nn59A;DzC!yv#Q2-0c7!(a*u0oLM@#G(>L
z2EKyC%)AnKC^0gKK_UTczk5+)K}KeBv9)FxDDW+L7|a;V*%_=E8H7PTMNwnq!p>mJ
z$iN4eaL&)kFXCdbVXy}|)`5|MO~cdE6J!!2gA)&fGlL5w14nvlNqA;TNd`DZJwZ|A
z#>3zalHyEHE%8XrOwTA`XYgcX5QCfRUX+-UnVMG;0CG4Ng9n2*$b27026YWLH$-TF
zt+&P$0Xe{m!H<W*pCN#efulGTVh|&PFp|f?W`lig#Sp~95X=z5$iR`7nUfQgnq0!j
zzz*_>Cn#Yurh}3LvfCg5#>l{&Zj=Jc$!Gy(&B(x(3<@1XMg{?N7sKR?7#SGL85tNe
z7#Wz-3m6$B5DHO3z?z*Q5gH%x;slbjxfl`{BtTgsg@=KQfepk;<6+=tU}I;<U}O*n
zIU245QC@H{q(gLN^DuBQaI!PxGBSvwsD+gYTnsr7l?6NuJPf=b^NV;GSRpo*@G!75
zuz{RV#=}s~P{GK+Tbx?rl$e~IUX)*&mx3DJkjT;uV`r#hWZ(ta1`aZ}{Jatlh8ji&
zcHb}sr~I5uE`~~mI#6`i!%GYOoW#6z{os<K%)E4KNcu`(XyjpNVrXV$U@uNB0U5%`
zAcPdVAQ5onCNQ+}FtouO=ayfT3UM3<LkA-RE4b7I`Jju3p_`$Hk%6x`wIn1zKPM!!
z02Bs{45Cm&k(~hYL?0sqKim_}rA5V{jL^$40p#+Dj0`Lq;B1h<Fqwy83d2-J2F~Kt
z5{NQJ1`(*4p!^RJgF1CO55o+GiHr=A#i=D8`9+yk`FSOYIUt9?ic=1TS&R&<KA^%L
z<m@>-40A!w2BmSI#H7?5c82+k48j;Cj*1}{!#swCAjd5N=YI?pP!}xWVOYwrjFCYw
zF(n1HP-0|ILUK0NVoNiOgJA_D14j_F_5rzY6%WH|kPAW41o8+dMXlvwSjVuQk%7B7
zwZt_gvjkN9f`TjxlyP$yHu5lRV%Q7`GN=5a6i`hg2eBKLn3KT5`Vd*L({mUaK}NT7
zFl=XJkO&7=ce$wwCHV?Ypt@PX2~s(Ol&s=l*u}`e0AhB5h`l@v`#`SY0Vky7(qfQv
zKoSRd7!HCYKvCykkXTrn3d%T#c^Hl`9A#wSFHS89%S<gV$S(rZh|~&>R#=?`cHD7>
zlk5y97#So%DF)^Th~wQ7lS}f8DtQ=AF`Q;(5KJygO)N=u%`GUYgvc{8$Z9~U3z$As
zzk{5#k)7cj)>t><VmQmN5EKm;c^ED+TxMhtNK8rb%`YuZh1E5T42qDT1?NUcw4x}m
z2F2=CMh2FGoWx3yQP+7GZh&G`pg6Szl0=;Ib8{2(QaBiHF*5K5<Rn%qBo-^UgW5Ul
z40o_P%$SSeHp4;=hWm^R+#Z?f84BPQPcb{gL#)b8xELNVEM#YRf>x%v7v+~0_#{^5
zmzHobJZ5+XO5e}XBO<RPF%wj&f)W=a!%H59R}8Nqi3_5WkwF?M1R!F*iFt|XsYTYH
zs`V|ydv=C*j0}p%k%wfniepY@dR}g7UI`Dw2ZoP~4D3FxjxL^l?u-n|-~t^Maai?O
zgB<>uhv5suS4IY5Nc0CJ7A5B7q~?G%Ff#Z+oQK~S)HDLt3Gs>wifLf$zVk5rVED<%
zAPTWAIJK}eHLoNy5oVz_T8cw94Nb8%7sGFczw8Wu7#Y-Yg%6q*9)^Dm{}~zB5>ry#
z6AKs_^guN&Zs()v23g3+$iv9Q$jr#VlbDi%)UL6I1Qa+W!-cI$Fq)B-k)559jgdhW
zmtRl<lZTOmk&}^u1LPA>N@Qg4fVco#RDlB#k7H0w2K$m5<Vzk#1}BK2Xx;)fv~VUb
zY=OoHaxOn3gBQd&a@>f`SV0~}Ax2?P(-#yM(98yoSX~WIPZ9#3;W48q52F~PI3t4)
zO8o~8Ie7Jh$K7F^3~w1Fc^IWYxsW3y$kEfs)6boYk(E&f<ab#{hHTt^hv#BzoS_PK
z2nkX6m{FdGQ32#3P+1w4T2zvm49#R*j7p3u?2O9jy+m+-h=);?QH_y-IWZ-LkwFXM
zWVG0age#gLBLiCwxG+TTD}o&kDGsa|8Dvp=hmbNHsmmgdWFw?PfGBYVbyciEO=9NM
zvJyrH8E`;>-GHf#kwFC9(}ie-o6g0+$f(c5XaK5Lxxh7Oab{9ZDm$YQBZC-9qr^Qi
zHx<+^&EaA+WHbSl?4pbeEa~9>sRU}D3a-?ekwF69e@3&Jk%2!iu`Dw^u_QGlAJTwg
zRARK^VYCL-=4?f&x%p+O?2NXI4B{y604oJY3m2meqX{VD9C#QVK^-ivqSUg)oXnKO
zl2nkeGY_K+NSM7S72M-uWZ(q1F9Q<OQ$aC;!&qxZ29BJ>+@zF56$37YbVg4eMlVqB
zh$TI>BmyMh!^7yy=m%*ofx4`q9ws9LD=2q`aWQBx2JkQjg6w4}F3B$d1+X(C17j*9
z18;CiVsf@`Vga;k%N3koT9lmXmI><oa)O2_^gzWNBZGibett=DNl{{fZ)!<Keo8SH
zV<clVJ7W|hgAzyur2U<lSC*fhs_z4Ks&8sZVj8sR!WhFC%gDf;ix6UDI0H>X;AS&a
zC&X}%#JrT8)M6E%{QT_F0!U_qSO9I{LsAu{#*oT_RAl8Srs9=^SczXRG(#a<>ztUA
z6P#I+YR%8a7$Lx@1q#|k9!7UYEq->!1OY}ZMg|_wyu8#R=bXgi;?!bx#x!Wn0r3xt
z10imJd7B;7=aa(-Ta*xDWMG4Y5hDX9yl`S?%wc4Z1!=@t4l**Zg7Z75Er!~V;72RJ
z85y|!Qj1G`Q$d3w#SDrJj10^S3=EtMOrS0v0|NsSsDlTlIT$#>G#3LKnC6DkJPf>G
zJ|6==m=<6V1k*wc!eEma8AKRF85kMF7#J858JHND7#J8NwYD>eYYG0h*vcTKrM;Cw
zMr#{`oYpo5#f@OCDhvz^Qefki7+4q-8Mqmg83Y(q7(^IU86+6g7*rV;7{nk3F{m-9
zGk}03Xkdtek%0*`_5-!fmw}amk%56hT5C6hMx+3j)-DDu28QhndRrL`wYD%AZeuV;
zSjY$Vxh8`!gAs!igE80=9*B0RB`lzU5vb8`88{d?7#J8LwY0Z0SZE($u=3r_U=t~z
zBFL~tkm1pG20K46Uqm29kfCQggPj$N);0!5Gghr_46bHuyBRzpxw&<@McLXUS++BH
zS+VO#vTtMX)nR59Wff)H#t?{bm=*&U0|SFO11p0S0~doegA{`egBF7=g8_pbgBgQ8
zg9n2HgCBz<Lj;2}*wH}{hd~|9z!1q0$`HoD$iT(m&k)WK!N9~I#bD16$q>cB%%H`f
z&k)TJ#lXT~z@W(x!ywGS%3#Kz%n-{U%)rLr!63*G#}LoJ&cFm3Y=d~6H3ytL7?=-e
z?Pf@b+|H1+l_43yOx4=WkRG|6A#*E3mey{DoXG7Ad0QFs5ef<s%wnxA49VbNLIm43
zhEj-VWu#CwvjE?AhT3fm4G<xlNI{1G5VW1aZW}`jNLZ+S8$&0Ev74bcQh;YWL;p60
zNgzJ+Hil^+T4?4rhS?y-Ziac0TH6^GY-3ogwS^%StHr6i8PF{TD}>l8$nYO-ajMYr
zZ44_R2BBD-3bi<&c^ktTtt|}sjN2GCfM|%(ECMQEKW%{sLH%@q8Eo)Ykf6}EZ45iW
zjGfyUc7qtq+Zgsh>HS(;7_va@Z48G%%pDBJwlSQ6IO8nHd*`<?T+rIWP>9ugg%CF&
zhbveiruPbku54qt1~CZ5dxcQ%6$;&iglpk$hT9;E??S@07^}s_m==Q-Vp?1*bPp1)
z#V{8Xqs447)CI-686JQvezc8Y@ot94Am&paE$wX#FSNBcF}&Hv@JV|c!#5<RAfp)s
zZDaTaN)X!^8MZO9fD{Qb>Ov4iCKXvmN{|tRATou>GD?DsAOw*qM#u<MfgnUUOW+@q
zz`t#bT-z8~wlVSwGV}}9|KG+a0OpFo9J+~70^|&VQV>MbD4-335W(baj0^%oAPC`u
z917wI2toKD=OOb!juK>e0<%(j8>5`o7Ep1^s2C0}VHoQe;u#ni+!(kS+!@3eJQx%i
zJQ;Ktyco<GycwJrd>JAb{1~zs{27`U0vNg(0vTpA1TidT2xeHr5X!KdA)4VLLkz<c
zhFFH*3~`Js4DpO23<-=f3`vYC49Sc-3@MEE45^GE3~7w94C#z%3>l1h44I5&3|Wkg
z4B3p`47rT67|IwoFqAVMW~gAi#Zbxkn4yaCGeb4wZ-yEs7KU0TVTNWVO@<aG8-`Y<
zV1_oP7>0JHRE7?wQie{ZT81vB9)<}_QyC^Q&0?6uG@D^E(;|i`Ov@OiGOcBp#<Y=P
zI@4Z;8B9kQrZF97n8|dSVHVSMhS^N_7-lj(WSGPBlwmH@M}~P!KN#jP{brcY^q*k?
zGdIIRW+8_8%%Tj7m?aq&Gb=GHVb)_<#B9hgmDz-0DYGrZ6lMp8NzBd+%b8smRxo=r
ztYi*iSj8O8u$noYVGVNu!&>HYhIPyh4C|TO88$FaVA#k!onaI60*1}Z%Ne#XZ(vx-
zyqRG+^EQU<%=;O3fJ<#~ea3tMQff0zWz=R=XVd`IXN;PRT9A^L!4zCOGB7a0qmF?M
zTtn?a7{R~@F@k}Cfss+0Q3q^<F5HL+24-+QC#1!^jZtqmqhTZ{J#1$*_C=TpsR{Qp
zureHA5M($AHd_Ir3vRX$)NDZpMn+RcGf=(GXb!gpr$di|4FmfXt3xdqB%yvSVPFQ=
z@H!y(X>DV)+|6hMb*r5ZNKAVhqhdISv5nClLOCJ40BJp(WZ+;p%^<>XhC!C$JcA0u
z1qN+~i%2fefqF-TL4whh(T#yofC<#LgSwy#>H-t3EeuiurHdGpv?8}KNU<h>8ZD4Q
zIBOfD2S|1sqxW(KE^w2A(O+vDV-UzC%nYD*j2r_y0|SE=11EzvgD`^*gDQhAg9d{h
zgFb@+gE504l50$$u3=y>VGIUE9AgLr0|N^KlLi|D3u7oK?is@v!x<PDco-NN;~1D3
z;~A3}lNnPO7#O@5I2q=Fnn4T<3}>PAZ7BT!LNlf^rZZ+TNHV--c+8mPAjz1`@R%`|
mg^`h!;W1+#10%z4hR2Ng42+Bg44|P=7KV8YXBloYJOBVO_Sl2~

literal 5748
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
IEMfQw0A`IW)&Kwi

diff --git a/app/bin/main/brickbreaker/ScoringSystem.class b/app/bin/main/brickbreaker/ScoringSystem.class
new file mode 100644
index 0000000000000000000000000000000000000000..723fc5f1b464eaef8df21a6e717a5ed519898265
GIT binary patch
literal 1255
zcmX^0Z`VEs1_oOOEp`SbMh2;*qRiy%q@vWs?9?Lt;N<+G%)IpA%HopLTy_Q)Mh1bb
z#Ii*FoW#6zegCAa)Z`LI2G-)_{GwDw21ZXt2F{Gk^bC-$R7M820Dn)vkYGjzUg!M0
z;*!L?lCZ>_(o|*!1_nk(20jl@caLCa{~*_RH%}i|Mg}1tgweqzAZx8T82A_&6pD+I
z^>Y(5^Yn{Si}Op1l2eQILAHQx)hnqeVPs&l$;`_vv14Rl*3b-NWMFa5Pf2BG5N2fH
zM;Pf^RFq%D!63@WkQ<r@GAXAlHANvgKer$=C$S_mKTn~cC_gDDHP=dki!&r6RUsuc
zIVZ6wHASHyF*!RiJyk(TNg*XawOAo9zeFK7u_QS|p(G<!A+@3)HMs;?8FC0Jad9yS
zF^Kap@H0p-GKgwm`Vr({exJ;|RKL>Pq|~C2#H5^5P+;UIC+37D7G;9?P(hZGjLc$2
z1{oh@8&KoOnvsDwCqFU80}&0(8k(LQ3<``4iUj@5$iQ2iSeA;UnMK1B<Unq)jZQ`R
z*{OMq3?j)Hsma-H`9*%I<w$C|ic*VHOQ4a@kq&3_q^Fi3D+>lkqFW}|pCIM%6s8A?
zE(S#gMg~wKVPRlmU}a!qU|?WkU<cDu3>*w>42%q%U@<NRDF$u^9yp(ufrEjOfuBKu
zfssLwfq}t<fti7kfq{W*H-k{5kjQohvHf6uk_-%BQy3T+8Kf8(z$P#-a4|?T$bjW#
z8RW2<AdkfaVXP)7GAJRLzyx;#HWTErn83)OjKde$Owhn$0uzG@2`1=aF@cdml>`&a
Zu$rJoLP%O;H9?&O6YQ~?paG6kO#uCH>eT=M

literal 0
HcmV?d00001

diff --git a/app/bin/main/highscore.txt b/app/bin/main/highscore.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/app/bin/main/highscore.txt
@@ -0,0 +1 @@
+0
diff --git a/app/src/main/java/resources/user.txt b/app/bin/main/resources/user.txt
similarity index 100%
rename from app/src/main/java/resources/user.txt
rename to app/bin/main/resources/user.txt
diff --git a/app/bin/main/user.txt b/app/bin/main/user.txt
new file mode 100644
index 0000000..e80d5a7
--- /dev/null
+++ b/app/bin/main/user.txt
@@ -0,0 +1 @@
+muna:2022
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 55f0d4d..b8c6a0d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -22,6 +22,7 @@ dependencies {
 
     // This dependency is used by the application.
     implementation 'com.google.guava:guava:30.1.1-jre'
+    implementation 'mysql:mysql-connector-java:8.0.28'
 }
 
 application {
diff --git a/app/src/main/java/Auth/Authenticate.java b/app/src/main/java/Auth/Authenticate.java
index 24f86a3..f564030 100644
--- a/app/src/main/java/Auth/Authenticate.java
+++ b/app/src/main/java/Auth/Authenticate.java
@@ -3,43 +3,43 @@
  * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
  */
 package Auth;
+import brickbreaker.App;
 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 
 public class Authenticate {
     
-
-    private static final String CREDENTIALS_FILE = "user.txt";
-
-    private Map<String, String> users = new HashMap<>();
-
-    public Authenticate() {
-        loadCredentials();
-    }
-
-    private void loadCredentials() {
-        InputStream is = getClass().getClassLoader().getResourceAsStream(CREDENTIALS_FILE);
-
-        try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
-            String line;
-            while ((line = reader.readLine()) != null) {
-                String[] parts = line.split(":");
-                if (parts.length == 2) {
-                    users.put(parts[0], parts[1]);
+    public boolean login(String email, String password) {
+        try (Connection connection = DriverManager.getConnection(App.DB_URL, App.DB_USER, App.DB_PASSWORD)) {
+            String sql = "SELECT * FROM users WHERE email = ? AND password = ?";
+            try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+                preparedStatement.setString(1, email);
+                preparedStatement.setString(2, password);
+                ResultSet resultSet = preparedStatement.executeQuery();
+                if (resultSet.next()) {
+                    // User exists, return user details
+                    int id = resultSet.getInt("id");
+                    String name = resultSet.getString("username");
+                    String fetchedEmail = resultSet.getString("email");
+                    User user = new User(id, name, fetchedEmail);
+                    App.user = user;
+                    return true;
                 }
             }
-        } catch (IOException e) {
-            e.printStackTrace();
+        } catch (SQLException e) {
+            System.err.println("Database Error: " + e.getMessage());
         }
-    }
-
-    public boolean authenticate(String username, String password) {
-        return password.equals(users.get(username));
+        return false; 
     }
 
 
diff --git a/app/src/main/java/Auth/User.java b/app/src/main/java/Auth/User.java
new file mode 100644
index 0000000..3bec6bf
--- /dev/null
+++ b/app/src/main/java/Auth/User.java
@@ -0,0 +1,44 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package Auth;
+
+import brickbreaker.App;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author Suman
+ */
+public class User {
+    public int id;
+    public String name;
+    public String email;
+    
+    public User(int id, String name, String email) {
+        this.id = id;
+        this.name = name;
+        this.email = email;
+    }
+    
+    public Boolean register(String password) {
+        try (Connection connection = DriverManager.getConnection(App.DB_URL, App.DB_USER, App.DB_PASSWORD)) {
+            String sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)";
+            try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+                preparedStatement.setString(1, name);
+                preparedStatement.setString(2, email);
+                preparedStatement.setString(3, password);
+
+                int rowsAffected = preparedStatement.executeUpdate();
+                return rowsAffected > 0; // Registration successful if rows are inserted
+            }
+        } catch (SQLException e) {
+            System.err.println("Database Error: " + e.getMessage());
+            return false; // Registration failed due to an error
+        }
+    }
+}
diff --git a/app/src/main/java/brickbreaker/App.java b/app/src/main/java/brickbreaker/App.java
index a0bcd25..c73fede 100644
--- a/app/src/main/java/brickbreaker/App.java
+++ b/app/src/main/java/brickbreaker/App.java
@@ -1,10 +1,19 @@
 
 package brickbreaker;
 
+import Auth.User;
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 
 public class App {
+    public static User user;
+    public static final String DB_URL = "jdbc:mysql://localhost:3306/brick_breaker";
+    public static final String DB_USER = "root";
+    public static final String DB_PASSWORD = "";
+    public static Menu mainMenu;
+    public static GamePanel gamePanel;
+    public static ScoringSystem scoreSystem = new ScoringSystem();
+    
     public static void main(String[] args) {
         
         JFrame frame = new JFrame();
@@ -13,12 +22,11 @@ public class App {
         frame.setTitle("Brick Breaker");
         frame.setResizable(false);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        new Menu(frame);
-
-        // Call pack() after adding components
+        mainMenu = new Menu(frame);
+        gamePanel = new GamePanel(frame);
+        
         frame.pack();
 
-        // Then, set the frame visible
         frame.setVisible(true);
     }
 }
diff --git a/app/src/main/java/brickbreaker/GamePanel.java b/app/src/main/java/brickbreaker/GamePanel.java
index 7866786..a3fa4f3 100644
--- a/app/src/main/java/brickbreaker/GamePanel.java
+++ b/app/src/main/java/brickbreaker/GamePanel.java
@@ -2,7 +2,6 @@ package brickbreaker;
 
 import brickbreaker.GameComponents.Brick;
 import brickbreaker.Interfaces.BrickFactory;
-import brickbreaker.Interfaces.GameObserver;
 import brickbreaker.GameComponents.DefaultBrickFactory;
 import javax.swing.*;
 import java.awt.*;
@@ -16,7 +15,7 @@ import java.util.List;
 public class GamePanel extends JPanel implements ActionListener {
     private boolean play = false;
     private boolean gameOver = false;
-    private int score = 0;
+    private ScoringSystem scoringSystem;
 
     private int totalBricks;
     private int rows = 10;
@@ -29,34 +28,25 @@ public class GamePanel extends JPanel implements ActionListener {
 
     private List<Ball> balls = new ArrayList<>();
     private String font = "MV Boli";
-
+    private JFrame frame;
     private GameMapBuilder gameMap;
 
     public GamePanel(JFrame frame) {
         Color color = Color.decode("#8B4513");
         this.balls.add(new Ball(350, 450, 2, -2, 20, color));
         this.totalBricks = rows * columns;
-
+        this.frame = frame;
         BrickFactory brickfactory = new DefaultBrickFactory();
         gameMap = new GameMapBuilder(rows, columns, brickfactory);
         setFocusable(true);
         setFocusTraversalKeysEnabled(false);
         timer = new Timer(delay, this);
         timer.start();
-        frame.add(this);
         addKeyBindings();
+        
+        scoringSystem = App.scoreSystem;
     }
 
-    private List<GameObserver> observers = new ArrayList<>();
-
-    public void addObserver(GameObserver observer) {
-        observers.add(observer);
-    }
-
-    public void removeObserver(GameObserver observer) {
-        observers.remove(observer);
-    }
-    
     private void addKeyBindings() {
         InputMap inputMap = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
         ActionMap actionMap = getActionMap();
@@ -89,13 +79,13 @@ public class GamePanel extends JPanel implements ActionListener {
         actionMap.put("Enter", new AbstractAction() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                if (!play || !gameOver) {
+                if (!play || gameOver) {
                     play = true;
                     gameOver = false;
                     Color color = Color.decode("#8B4513");
                     balls.clear();
                     balls.add(new Ball(350, 450, 2, -2, 20, color)); 
-                    score = 0;
+                    scoringSystem.resetScore();
                     totalBricks = rows * columns;
                     BrickFactory brickfactory = new DefaultBrickFactory();
                     gameMap = new GameMapBuilder(rows, columns, brickfactory);
@@ -104,6 +94,18 @@ public class GamePanel extends JPanel implements ActionListener {
                 }
             }
         });
+        
+        inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "ESC");
+        JPanel thisPanel = this;
+        actionMap.put("ESC", new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                frame.remove(thisPanel);
+                App.mainMenu.show();
+                frame.revalidate();
+                frame.repaint();
+            }
+        });
     }
     
     protected void paintComponent(Graphics graphics) {
@@ -146,8 +148,12 @@ public class GamePanel extends JPanel implements ActionListener {
 
         graphics.setColor(Color.black);
         graphics.setFont(new Font("MV Boli", Font.BOLD, 25));
-        graphics.drawString("Score: " + score, 520, 30);
+        graphics.drawString("Score: " + scoringSystem.getScore(), 520, 30);
 
+        // Display the high score
+        graphics.setColor(Color.black);
+        graphics.setFont(new Font("MV Boli", Font.BOLD, 25));
+        graphics.drawString("High Score: " + scoringSystem.getHighScore(), 10, 30);
         if (totalBricks <= 0) {
             Color color = new Color(0XFF6464);
             gameOver(graphics, "You Won", color);
@@ -163,19 +169,12 @@ public class GamePanel extends JPanel implements ActionListener {
         gameOver = true; // Set the game over flag to true
         graphics.setColor(color);
         graphics.setFont(new Font(font, Font.BOLD, 30));
-        graphics.drawString(gameOverText + ", Your Score: " + score, 190, 300);
+        graphics.drawString(gameOverText + ", Your Score: " + scoringSystem.getScore(), 190, 300);
 
         graphics.setFont(new Font(font, Font.BOLD, 20));
-        graphics.drawString("Press Enter to Restart", 230, 350);
-
-        // Notify observers about the game end
-         for (GameObserver observer : observers) {
-            if ("Game Over".equals(gameOverText)) {
-                observer.onGameOver(score);
-            } else if ("You Won".equals(gameOverText)) {
-                observer.onGameWin(score);
-            }
-        }
+        graphics.drawString("Press Enter to Restart or ESC to go back to main Menu", 100, 350);
+        
+        scoringSystem.checkForNewHighScore();
     }
 
     @Override
@@ -188,6 +187,7 @@ public class GamePanel extends JPanel implements ActionListener {
                 Vector ballPosition = ball.getPosition();
                 Vector ballDirection = ball.getDirection();
 
+                // Check ball and paddle collision
                 if (new Rectangle(ballPosition.x, ballPosition.y, ball.radius, ball.radius).intersects(new Rectangle(paddle, 550, 100, 8))) {
                     ballDirection.y = -ballDirection.y;
                     ball.setDirection(ballDirection.x, ballDirection.y);
@@ -205,7 +205,7 @@ public class GamePanel extends JPanel implements ActionListener {
                             if (ballRect.intersects(brickRect)) {
                                 brick.setIsHit(true);
                                 totalBricks--;
-                                score += brick.getValue();
+                                scoringSystem.brickBroken(brick.getValue());
                                 
                                 if(brick.hasPowerUp) {
                                     int noOfBallsToSpawn = (int) (Math.random() * 5);
@@ -248,6 +248,11 @@ public class GamePanel extends JPanel implements ActionListener {
         play = true;
         paddle -= 50;
     }
-
+    
+    public void show() {
+        frame.add(this);
+        frame.revalidate();
+        frame.repaint();
+    }
  
 }
diff --git a/app/src/main/java/brickbreaker/LoginFrame.java b/app/src/main/java/brickbreaker/LoginFrame.java
index b172ae1..69fe41b 100644
--- a/app/src/main/java/brickbreaker/LoginFrame.java
+++ b/app/src/main/java/brickbreaker/LoginFrame.java
@@ -10,9 +10,11 @@ import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class LoginFrame extends JPanel {
-    private JTextField usernameField;
+    private JTextField emailField;
     private JPasswordField passwordField;
     private JButton submitButton;
     private JButton backButton;
@@ -23,7 +25,7 @@ public class LoginFrame extends JPanel {
     private Font textFont = new Font("MV Boli", Font.PLAIN, 14);
     private Font labelFont = new Font("MV Boli", Font.BOLD, 16);
     private Font headerFont = new Font("MV Boli", Font.BOLD, 24);
-    private JLabel usernameErrorLabel = new JLabel("");
+    private JLabel emailErrorLabel = new JLabel("");
     private JLabel passwordErrorLabel = new JLabel("");
     private Authenticate fileAuth = new Authenticate();
     public LoginFrame(JFrame parentFrame) {
@@ -38,10 +40,10 @@ public class LoginFrame extends JPanel {
         headerLabel.setFont(headerFont);
         headerLabel.setForeground(buttonColor);
 
-        usernameLabel = new JLabel("Username:");
+        usernameLabel = new JLabel("Email:");
         passwordLabel = new JLabel("Password:");
 
-        usernameField = new JTextField(20);
+        emailField = new JTextField(20);
         passwordField = new JPasswordField(20);
 
         submitButton = new JButton("Login");
@@ -49,7 +51,7 @@ public class LoginFrame extends JPanel {
 
         usernameLabel.setFont(labelFont);
         passwordLabel.setFont(labelFont);
-        usernameField.setFont(textFont);
+        emailField.setFont(textFont);
         passwordField.setFont(textFont);
         submitButton.setFont(new Font("MV Boli", Font.BOLD, 16));
         backButton.setFont(new Font("MV Boli", Font.BOLD, 16));
@@ -62,9 +64,9 @@ public class LoginFrame extends JPanel {
         submitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
         backButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
         
-        usernameErrorLabel.setPreferredSize(new Dimension(200, 20));
+        emailErrorLabel.setPreferredSize(new Dimension(200, 20));
         passwordErrorLabel.setPreferredSize(new Dimension(200, 20));
-        usernameErrorLabel.setForeground(Color.RED);
+        emailErrorLabel.setForeground(Color.RED);
         passwordErrorLabel.setForeground(Color.RED);
 
         // Hover effects for buttons
@@ -108,10 +110,10 @@ public class LoginFrame extends JPanel {
     add(usernameLabel, gbc);
 
     gbc.gridx = 1;
-    add(usernameField, gbc);
+    add(emailField, gbc);
 
     gbc.gridx = 2;
-    add(usernameErrorLabel, gbc);
+    add(emailErrorLabel, gbc);
 
     gbc.gridx = 0;
     gbc.gridy = 2;
@@ -136,35 +138,48 @@ public class LoginFrame extends JPanel {
 
     private void handleLogin() {
         // Reset error labels
-    usernameErrorLabel.setText("");
+    emailErrorLabel.setText("");
     passwordErrorLabel.setText("");
 
-    String username = usernameField.getText();
+    String email = emailField.getText();
     String password = new String(passwordField.getPassword());
-
+    boolean error = false;
     // Simple validation
-    if (username.isEmpty()) {
-        usernameErrorLabel.setText("Username is required!");
-        return;
+    if (email.isEmpty()) {
+        emailErrorLabel.setText("Email is required!");
+        error = true;
+    } else if(!isValidEmail(email)) {
+        emailErrorLabel.setText("Invalid email format!");
+        error = true;
     }
 
     if (password.isEmpty()) {
         passwordErrorLabel.setText("Password is required!");
-        return;
+        error = true;
     }
-
-    if (fileAuth.authenticate(username, password)) {
-            // User found
-            // Proceed with the application or show the next screen
-            System.out.println("Login successful!");
+    
+    if(error) return;
+    Authenticate auth = new Authenticate();
+    
+        if (auth.login(email, password)) {
+           App.scoreSystem.setHighScore();
+           parentFrame.remove(this);
+           App.gamePanel.show();
         } else {
-            // User not found
             JOptionPane.showMessageDialog(this, "Invalid username or password!", "Error", JOptionPane.ERROR_MESSAGE);
         }
     }
 
     private void handleBack() {
-        // TODO: Implement the back navigation logic
+        parentFrame.remove(this);
+        App.mainMenu.show();
+    }
+    
+    public static boolean isValidEmail(String email) {
+        String regex = "^[A-Za-z0-9+_.-]+@(.+)$";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(email);
+        return matcher.matches();
     }
 }
 
diff --git a/app/src/main/java/brickbreaker/MainMenu.form b/app/src/main/java/brickbreaker/MainMenu.form
deleted file mode 100644
index caedbec..0000000
--- a/app/src/main/java/brickbreaker/MainMenu.form
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-      <Color blue="ff" green="ff" red="ff" type="rgb"/>
-    </Property>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" attributes="0">
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="310" max="-2" attributes="0"/>
-                      <Component id="loginButton" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="301" max="-2" attributes="0"/>
-                      <Component id="registerButton" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="282" max="-2" attributes="0"/>
-                      <Component id="guest" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="290" max="-2" attributes="0"/>
-                      <Component id="highScore" min="-2" max="-2" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="122" max="-2" attributes="0"/>
-                      <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/>
-                  </Group>
-              </Group>
-              <EmptySpace pref="143" max="32767" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="1" attributes="0">
-              <EmptySpace min="-2" pref="117" max="-2" attributes="0"/>
-              <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Component id="loginButton" max="-2" attributes="0"/>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Component id="registerButton" max="-2" attributes="0"/>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Component id="guest" max="-2" attributes="0"/>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Component id="highScore" max="-2" attributes="0"/>
-              <EmptySpace pref="228" max="32767" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Component class="javax.swing.JButton" name="loginButton">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="e2" green="ac" red="24" type="rgb"/>
-        </Property>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="MV Boli" size="14" style="0"/>
-        </Property>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="e2" green="ac" red="24" type="rgb"/>
-        </Property>
-        <Property name="toolTipText" type="java.lang.String" value="login"/>
-        <Property name="actionCommand" type="java.lang.String" value="Login"/>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-        <Property name="horizontalTextPosition" type="int" value="0"/>
-        <Property name="label" type="java.lang.String" value="Login"/>
-        <Property name="opaque" type="boolean" value="false"/>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JButton" name="registerButton">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="e2" green="ac" red="24" type="rgb"/>
-        </Property>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="MV Boli" size="14" style="0"/>
-        </Property>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" red="ff" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="Register"/>
-        <Property name="actionCommand" type="java.lang.String" value="Login"/>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-        <Property name="horizontalTextPosition" type="int" value="0"/>
-      </Properties>
-      <Events>
-        <EventHandler event="mouseEntered" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="registerButtonMouseEntered"/>
-        <EventHandler event="mouseExited" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="registerButtonMouseExited"/>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="registerButtonActionPerformed"/>
-      </Events>
-    </Component>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextPane" name="welconText">
-          <Properties>
-            <Property name="editable" type="boolean" value="false"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="null"/>
-            </Property>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="MV Boli" size="36" style="1"/>
-            </Property>
-            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-              <Color blue="0" green="c0" red="ff" type="rgb"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="Welcome to Brick Breaker"/>
-            <Property name="toolTipText" type="java.lang.String" value=""/>
-            <Property name="focusable" type="boolean" value="false"/>
-            <Property name="opaque" type="boolean" value="false"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JButton" name="guest">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="e2" green="ac" red="24" type="rgb"/>
-        </Property>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="MV Boli" size="14" style="0"/>
-        </Property>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" red="ff" type="rgb"/>
-        </Property>
-        <Property name="actionCommand" type="java.lang.String" value="play"/>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-        <Property name="horizontalTextPosition" type="int" value="0"/>
-        <Property name="label" type="java.lang.String" value="Play as Guest"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="guestActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JButton" name="highScore">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="e2" green="ac" red="24" type="rgb"/>
-        </Property>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="MV Boli" size="14" style="0"/>
-        </Property>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" red="ff" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="High Scores"/>
-        <Property name="actionCommand" type="java.lang.String" value="play"/>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-        <Property name="horizontalTextPosition" type="int" value="0"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="highScoreActionPerformed"/>
-      </Events>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/app/src/main/java/brickbreaker/MainMenu.java b/app/src/main/java/brickbreaker/MainMenu.java
deleted file mode 100644
index 05091a6..0000000
--- a/app/src/main/java/brickbreaker/MainMenu.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
- * Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
- */
-package brickbreaker;
-
-/**
- *
- * @author Suman
- */
-public class MainMenu extends javax.swing.JFrame {
-
-    /**
-     * Creates new form MainMenu
-     */
-    public MainMenu() {
-        initComponents();
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is always
-     * regenerated by the Form Editor.
-     */
-    @SuppressWarnings("unchecked")
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        loginButton = new javax.swing.JButton();
-        registerButton = new javax.swing.JButton();
-        jScrollPane1 = new javax.swing.JScrollPane();
-        welconText = new javax.swing.JTextPane();
-        guest = new javax.swing.JButton();
-        highScore = new javax.swing.JButton();
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-        setBackground(new java.awt.Color(255, 255, 255));
-
-        loginButton.setBackground(new java.awt.Color(36, 172, 226));
-        loginButton.setFont(new java.awt.Font("MV Boli", 0, 14)); // NOI18N
-        loginButton.setForeground(new java.awt.Color(36, 172, 226));
-        loginButton.setToolTipText("login");
-        loginButton.setActionCommand("Login");
-        loginButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-        loginButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
-        loginButton.setLabel("Login");
-        loginButton.setOpaque(false);
-
-        registerButton.setBackground(new java.awt.Color(36, 172, 226));
-        registerButton.setFont(new java.awt.Font("MV Boli", 0, 14)); // NOI18N
-        registerButton.setForeground(new java.awt.Color(255, 255, 255));
-        registerButton.setText("Register");
-        registerButton.setActionCommand("Login");
-        registerButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-        registerButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
-        registerButton.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseEntered(java.awt.event.MouseEvent evt) {
-                registerButtonMouseEntered(evt);
-            }
-            public void mouseExited(java.awt.event.MouseEvent evt) {
-                registerButtonMouseExited(evt);
-            }
-        });
-        registerButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                registerButtonActionPerformed(evt);
-            }
-        });
-
-        welconText.setEditable(false);
-        welconText.setBorder(null);
-        welconText.setFont(new java.awt.Font("MV Boli", 1, 36)); // NOI18N
-        welconText.setForeground(new java.awt.Color(255, 192, 0));
-        welconText.setText("Welcome to Brick Breaker");
-        welconText.setToolTipText("");
-        welconText.setFocusable(false);
-        welconText.setOpaque(false);
-        jScrollPane1.setViewportView(welconText);
-
-        guest.setBackground(new java.awt.Color(36, 172, 226));
-        guest.setFont(new java.awt.Font("MV Boli", 0, 14)); // NOI18N
-        guest.setForeground(new java.awt.Color(255, 255, 255));
-        guest.setActionCommand("play");
-        guest.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-        guest.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
-        guest.setLabel("Play as Guest");
-        guest.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                guestActionPerformed(evt);
-            }
-        });
-
-        highScore.setBackground(new java.awt.Color(36, 172, 226));
-        highScore.setFont(new java.awt.Font("MV Boli", 0, 14)); // NOI18N
-        highScore.setForeground(new java.awt.Color(255, 255, 255));
-        highScore.setText("High Scores");
-        highScore.setActionCommand("play");
-        highScore.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-        highScore.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
-        highScore.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
-                highScoreActionPerformed(evt);
-            }
-        });
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(layout.createSequentialGroup()
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(310, 310, 310)
-                        .addComponent(loginButton))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(301, 301, 301)
-                        .addComponent(registerButton))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(282, 282, 282)
-                        .addComponent(guest))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(290, 290, 290)
-                        .addComponent(highScore))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(122, 122, 122)
-                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                .addContainerGap(143, Short.MAX_VALUE))
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
-                .addGap(117, 117, 117)
-                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
-                .addGap(18, 18, 18)
-                .addComponent(loginButton)
-                .addGap(18, 18, 18)
-                .addComponent(registerButton)
-                .addGap(18, 18, 18)
-                .addComponent(guest)
-                .addGap(18, 18, 18)
-                .addComponent(highScore)
-                .addContainerGap(228, Short.MAX_VALUE))
-        );
-
-        pack();
-    }// </editor-fold>//GEN-END:initComponents
-
-    private void registerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_registerButtonActionPerformed
-        // TODO add your handling code here:
-    }//GEN-LAST:event_registerButtonActionPerformed
-
-    private void guestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guestActionPerformed
-        // TODO add your handling code here:
-    }//GEN-LAST:event_guestActionPerformed
-
-    private void highScoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highScoreActionPerformed
-        // TODO add your handling code here:
-    }//GEN-LAST:event_highScoreActionPerformed
-
-    private void registerButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_registerButtonMouseEntered
-        // TODO add your handling code here:
-    }//GEN-LAST:event_registerButtonMouseEntered
-
-    private void registerButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_registerButtonMouseExited
-        // TODO add your handling code here:
-    }//GEN-LAST:event_registerButtonMouseExited
-
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JButton guest;
-    private javax.swing.JButton highScore;
-    private javax.swing.JScrollPane jScrollPane1;
-    private javax.swing.JButton loginButton;
-    private javax.swing.JButton registerButton;
-    private javax.swing.JTextPane welconText;
-    // End of variables declaration//GEN-END:variables
-}
diff --git a/app/src/main/java/brickbreaker/Menu.java b/app/src/main/java/brickbreaker/Menu.java
index 1cb6ab9..c966715 100644
--- a/app/src/main/java/brickbreaker/Menu.java
+++ b/app/src/main/java/brickbreaker/Menu.java
@@ -17,10 +17,6 @@ import javax.swing.JScrollPane;
 import javax.swing.JTextPane;
 import javax.swing.Timer;
 
-/**
- *
- * @author Suman
- */
 public class Menu extends JPanel {
     private JButton guest;
     private JButton highScore;
@@ -189,18 +185,7 @@ public class Menu extends JPanel {
 
     private void guestActionPerformed(java.awt.event.ActionEvent evt) {                                      
         this.setVisible(false);
-        GamePanel game = new GamePanel(frame);
-        game.addObserver(new GameObserver() {
-            @Override
-            public void onGameOver(int finalScore) {
-                System.out.println("Game over with a score of " + finalScore);
-            }
-
-            @Override
-            public void onGameWin(int finalScore) {
-                System.out.println("You won with a score of " + finalScore);
-            }
-        });
+        
     }                                     
 
     private void highScoreActionPerformed(java.awt.event.ActionEvent evt) {                                          
@@ -208,14 +193,27 @@ public class Menu extends JPanel {
     }                                         
 
     private void navigateToLogin() {
-    // Remove current panel
-    frame.remove(this);
-    
-    LoginFrame loginPage = new LoginFrame(frame);
-    frame.add(loginPage);
+        // Remove current panel
+        frame.remove(this);
+
+        LoginFrame loginPage = new LoginFrame(frame);
+        frame.add(loginPage);
+
+        // Refresh and repaint
+        frame.revalidate();
+        frame.repaint();
+    }
     
-    // Refresh and repaint
-    frame.revalidate();
-    frame.repaint();
-}
+    public void show() {
+        
+        if(App.user != null) {
+            this.remove(loginButton);
+            this.remove(registerButton);
+            this.remove(guest);
+        }
+        
+        frame.add(this);
+        frame.revalidate();
+        frame.repaint();
+    }
 }
diff --git a/app/src/main/java/brickbreaker/ScoringSystem.java b/app/src/main/java/brickbreaker/ScoringSystem.java
index 39d164d..0f55480 100644
--- a/app/src/main/java/brickbreaker/ScoringSystem.java
+++ b/app/src/main/java/brickbreaker/ScoringSystem.java
@@ -1,52 +1,88 @@
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
+package brickbreaker;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 
 
 public class ScoringSystem {
     private int score;          // Current Score
     private int highScore;      // Highest Score
-    private static final int POINTS = 1; // Point Value
-
-    private static final String HIGHSCORE_FILE = "src/main/resources/highscore.txt";
 
     public ScoringSystem() {
         this.score = 0;
-        this.highScore = loadHighScore();
+        this.setHighScore();
     }
 
+    public void setHighScore() {
+        this.highScore = loadHighScore();
+    }
+    
     private int loadHighScore() {
-        try (BufferedReader reader = new BufferedReader(new FileReader(HIGHSCORE_FILE))) {
-            String line = reader.readLine();
-            if (line != null) {
-                return Integer.parseInt(line.trim());
+        Connection connection = null;
+        PreparedStatement preparedStatement = null;
+        ResultSet resultSet = null;
+        if (App.user == null) return 0;
+        try {
+            // Establish a database connection
+            connection = DriverManager.getConnection(App.DB_URL, App.DB_USER, App.DB_PASSWORD);
+
+            // Define the SQL query to retrieve the high score
+            String sql = "SELECT MAX(score) AS high_score FROM scores WHERE user_id=? GROUP BY user_id";
+
+            // Create a prepared statement
+            preparedStatement = connection.prepareStatement(sql);
+            preparedStatement.setInt(1, App.user.id);
+            // Execute the query and retrieve the result
+            resultSet = preparedStatement.executeQuery();
+
+            if (resultSet.next()) {
+                // Read the high score value from the result set
+                return resultSet.getInt("high_score");
+            }
+        } catch (SQLException e) {
+            System.err.println("Database Error: " + e.getMessage());
+        } finally {
+            // Close database resources in reverse order of acquisition
+            try {
+                if (resultSet != null) resultSet.close();
+                if (preparedStatement != null) preparedStatement.close();
+                if (connection != null) connection.close();
+            } catch (SQLException e) {
+                System.err.println("Error closing database resources: " + e.getMessage());
             }
-        } catch (IOException e) {
-            System.err.println("Loading Error: " + e.getMessage());
         }
+
+        // Return a default value if high score retrieval fails
         return 0;
     }
 
-    private void saveHighScore(int newHighScore) {
-        try (FileWriter writer = new FileWriter(HIGHSCORE_FILE)) {
-            writer.write(Integer.toString(newHighScore));
-        } catch (IOException e) {
-            System.err.println("Saving Error: " + e.getMessage());
+    private void saveHighScore() {
+        if(App.user == null) return;
+        try (Connection connection = DriverManager.getConnection(App.DB_URL, App.DB_USER, App.DB_PASSWORD)) {
+            String sql = "INSERT INTO scores (user_id, score) VALUES (?, ?)";
+            try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+                preparedStatement.setInt(1, App.user.id);
+                preparedStatement.setInt(2, score);
+                preparedStatement.executeUpdate();
+            }
+        } catch (SQLException e) {
+            System.err.println("Database Error: " + e.getMessage());
         }
     }
 
     // Add point to each broken brick
-    public void brickBroken() {
-        score += POINTS;
-        checkForNewHighScore();
+    public void brickBroken(int points) {
+        score += points;
     }
 
     // Compare Current Score and Hgihest Score
-    private void checkForNewHighScore() {
+    public void checkForNewHighScore() {
         if (score > highScore) {
             highScore = score;
-            saveHighScore(highScore);
+            this.saveHighScore();
         }
     }
 
-- 
GitLab