From 9f946701c8aeb588b63038d2e0bbe332adef2fa6 Mon Sep 17 00:00:00 2001 From: Hymmel Date: Tue, 10 Feb 2026 15:01:44 +0100 Subject: [PATCH] penis --- ai-client/target/ai-client-1.0-SNAPSHOT.jar | Bin 12857 -> 12857 bytes .../target/maven-archiver/pom.properties | 2 +- .../original-ai-client-1.0-SNAPSHOT.jar | Bin 12613 -> 12613 bytes client/target/client-1.0-SNAPSHOT.jar | Bin 8724 -> 8724 bytes client/target/maven-archiver/pom.properties | 2 +- .../target/original-client-1.0-SNAPSHOT.jar | Bin 8480 -> 8480 bytes .../src/main/resources/static/js/app.js | 32 ++++++++++++++++-- web-client/target/classes/static/js/app.js | 32 ++++++++++++++++-- web-client/target/web-client-1.0-SNAPSHOT.jar | Bin 22320823 -> 22321011 bytes .../web-client-1.0-SNAPSHOT.jar.original | Bin 11851 -> 12039 bytes 10 files changed, 62 insertions(+), 6 deletions(-) diff --git a/ai-client/target/ai-client-1.0-SNAPSHOT.jar b/ai-client/target/ai-client-1.0-SNAPSHOT.jar index 2c677751154ba8e18956f05eaaeffaa9ce0c5c93..d8ce2e36d2fd64f61ec4df856115aef75420caa7 100644 GIT binary patch delta 267 zcmdm)vNMGzz?+#xgn@&DgCVGVBF`BnAbHCiNKO`JGy+lXj9^{^qa%oSn9&1BZRTaV zsLd2yKKX%eO#N1mh1`Pm-1Zk@5@z)o1sDr0XU)&w-XA_kBhYOr<1hJ`!euF427)px z+20>nKl|*q$g3OdSyse^N}oC9-%}+S^~9*p$MdZA=`WEgr*8L6x}fDAJ88m9&HBio z*K4(R-+p&-?)!s(7z4c7IUW?J`Ij*;Fq8vvfHxzP2m{dJtYDWd*`ffmKv%bL$MvmZeuNaV#lg}Gw0RWO_VOjtH delta 267 zcmdm)vNMGzz?+#xgn@&DgW*!yM4mHDK=PJ3)8(?s!i+{B%AFC+YhZK)@eVV30IAKq zOc%95+y}Zb^{bs0atqdT+h2%DnAIn=!dPfIYkvOr{_r^+nu{+n{N-O~Av{~jhsFKX zLF*5to7c_0D)z0NVd`o#w$01b-S+b6E;H)uj5w=(`b(tBsoQ;rGE7}#Cry~CSwFep z^;+%Sx8Gfy`~Kh`#sF`2j=%B_m1PVJ4CO!^;LXS+!T@wQE7;|e59ql7ojy5VUuLqB sz9h(Pw)zGjDqr6eL@m>|2T{-U-GJ0)eS;Z{9GA0Q7fhSO5S3 diff --git a/ai-client/target/maven-archiver/pom.properties b/ai-client/target/maven-archiver/pom.properties index e71fd15..7c34246 100644 --- a/ai-client/target/maven-archiver/pom.properties +++ b/ai-client/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Tue Feb 10 14:54:37 CET 2026 +#Tue Feb 10 14:58:36 CET 2026 artifactId=ai-client groupId=com.lona.tictactoe version=1.0-SNAPSHOT diff --git a/ai-client/target/original-ai-client-1.0-SNAPSHOT.jar b/ai-client/target/original-ai-client-1.0-SNAPSHOT.jar index 95f4740791f6aaee95cd5026c2dfc6c99a8c3c99..f9713950688cfc15aa467fe05ac5ae022b758d82 100644 GIT binary patch delta 324 zcmX?_bTo-4z?+$civa|J%O~=vG6j`SG@b(@FDih@&mfV>QjGc_%A3&)NNsLrT%f@e zTs~Puw%_|3DtH}$s^d}!MV43WsD^E%NFHdzKY3 zq0(ng`S(;wMm;g=^YJ{ZefmqJ%BkCZlP+kv$4;6sQ?ouY==ECd-M8OeocsRZAI1Q0 zMkWzvn4i32Kz;**$+va2K;B^2a{y7EdIlisg09Tu>3WhN<|aLR5cOHl4MbV%2Y|fS Yt8WdWPU-uBC@F)T957E#zHN{N070>G8vp>G^?wi_7*PqvlwmHIX@tD%U2fuRJ51H2iTL>OR3PhKMD0yKN_D>+k; sMn!o85cNtf$Ta!P^q_S@{GT2~b5HdMdHWZ{TUQTB61zAa; z4U=EXI)FrUqV&(gsnkQg$HGR;d&wj&}uKG2bR;HB9~}lghr)$Y8sXQSjtg*-((WcsZHL7i1-Y zHcWmk>i`nbl{0`yn1ZNja`qtVx||z`l9vwvQHAo>AZnewABg%VzZqf0PK9&;e^pF{ diff --git a/web-client/src/main/resources/static/js/app.js b/web-client/src/main/resources/static/js/app.js index d5a1397..66bc6d3 100644 --- a/web-client/src/main/resources/static/js/app.js +++ b/web-client/src/main/resources/static/js/app.js @@ -7,10 +7,29 @@ const joinInput = document.getElementById('join-code'); const displayCode = document.getElementById('display-code'); const turnStatus = document.getElementById('turn-status'); const leaveBtn = document.getElementById('leave-btn'); +const surrenderBtn = document.getElementById('surrender-btn'); +const cells = document.querySelectorAll('.cell'); -// ... (other vars) +// Game State +let mySymbol = ''; +let ws = null; +let currentCode = ''; -// ... +function send(msg) { + if (ws && ws.readyState === WebSocket.OPEN) { + ws.send(msg); + } +} + +// Event Listeners +createBtn.addEventListener('click', () => { + send('CREATE'); +}); + +joinBtn.addEventListener('click', () => { + const code = joinInput.value.trim(); + if (code) send(`JOIN ${code}`); +}); leaveBtn.addEventListener('click', () => { if (confirm('Are you sure you want to leave the lobby?')) { @@ -25,6 +44,15 @@ surrenderBtn.addEventListener('click', () => { } }); +cells.forEach(cell => { + cell.addEventListener('click', () => { + if (!mySymbol) return; + const r = cell.dataset.r; + const c = cell.dataset.c; + send(`MOVE ${r} ${c}`); + }); +}); + // ... function handleMessage(msg) { diff --git a/web-client/target/classes/static/js/app.js b/web-client/target/classes/static/js/app.js index d5a1397..66bc6d3 100644 --- a/web-client/target/classes/static/js/app.js +++ b/web-client/target/classes/static/js/app.js @@ -7,10 +7,29 @@ const joinInput = document.getElementById('join-code'); const displayCode = document.getElementById('display-code'); const turnStatus = document.getElementById('turn-status'); const leaveBtn = document.getElementById('leave-btn'); +const surrenderBtn = document.getElementById('surrender-btn'); +const cells = document.querySelectorAll('.cell'); -// ... (other vars) +// Game State +let mySymbol = ''; +let ws = null; +let currentCode = ''; -// ... +function send(msg) { + if (ws && ws.readyState === WebSocket.OPEN) { + ws.send(msg); + } +} + +// Event Listeners +createBtn.addEventListener('click', () => { + send('CREATE'); +}); + +joinBtn.addEventListener('click', () => { + const code = joinInput.value.trim(); + if (code) send(`JOIN ${code}`); +}); leaveBtn.addEventListener('click', () => { if (confirm('Are you sure you want to leave the lobby?')) { @@ -25,6 +44,15 @@ surrenderBtn.addEventListener('click', () => { } }); +cells.forEach(cell => { + cell.addEventListener('click', () => { + if (!mySymbol) return; + const r = cell.dataset.r; + const c = cell.dataset.c; + send(`MOVE ${r} ${c}`); + }); +}); + // ... function handleMessage(msg) { diff --git a/web-client/target/web-client-1.0-SNAPSHOT.jar b/web-client/target/web-client-1.0-SNAPSHOT.jar index 2dbf650d0cd0532a4d7f5281e595be34964b7a73..04cd654cd3f28dff954b05c88588c726303a45ed 100644 GIT binary patch delta 5639 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 I+gYrC1M@7~c>n+a diff --git a/web-client/target/web-client-1.0-SNAPSHOT.jar.original b/web-client/target/web-client-1.0-SNAPSHOT.jar.original index 6010ee6dc4ba32e8b419eb12abb995a223719310..096d0316be9029e25299f35830c018b246c0f6f6 100644 GIT binary patch delta 2356 zcmZ9Oc{tQ-8^?b$2pQWbvhT()ma%1+EXlrvtTU25YYr!k#2H(%%w(7>Sx=TZvQ+kJ zP!5HV?CaP|5>X^t96#^%Ugvt>=a2hyU-xr=@9TM_2kp`gxL4a_9$U*%H)L4iFh!Th_h#rUvh<%9qp_r-yRRrM% z)dNugH9yqVuR!~mKsFr{X5sQ9Shx*tU9;q71%P1z>Kw-@;#%mm7SF-Pv-qBPi6s z<$7mkIQiys=C>Kkd3POeIR<56uIg=LDBjFRQ$?uAOK=!D-4lO~#S(SjYSBh@?j^L0 z_lwW-(ww|D;`}aiY39Wqf5m4~QJ74-_HP2*C8EJ*b+50A_QRi0`O{+XN+-j!9LV$sgPHQ_;`A_v#&1!HJ1+nMT<}#QGbY?Q+SL5 zQert-;ihx>rt+&cSSVfmVseX%=QqcXSw^m02JX7Iy$ed%$v-HJI&GS_pBTcS+vr_l zbg=l>+^%@cmjUi{^Dz4cYjp*gB3$H#fg?v*2yfN71?!l|hwt@@|9~jod6H%j#m6>F z962q$7>DnS`Ym*dfgjfyC|)YJT2)71j&EV5FR{mX#g;eqV>HyP0=ji>OHZDzkj&_0 z;`A-6p~JqQH5;%&d_kxjAim4!_F(NF+Pb1Y_j_G$Ml+W$td=Zx(8p@NJBlCJyvPW5 z9e!RAgY4BvTlyvw$3!#m~uHdmhwq+nfGpT-#YCw^9Vhn*VF|Mlmnu)~aeRS%A8o2Qq7zKo8m zg!lf`*q%8PvF*~5lWnnu%%K)kRXGB zjaq6LHW~>r^q@(B?^$&{m*WTGwR^T=6xQ+uk^Qu>#(nh(HPw`375;74V}AemvpHuR>&vbdau9{NhVj@qsV$Rb5HHS4y@u;9y|L5$jfl z8pfE)&#mG!vlMZap3O$_zPV_KvNuz6g(K@IG-{A(ex&o$E0yo_i_rovV za^pT=czT zU8r>{^uU!Tm9}?iywr{`qQbVUjUC#|`Y*E=%TLyU`rKdGOysMQIS)lWiF zUSbu*I3kKa1rhO#HRjqJCTM00R!5cV(_8r)(JVRUIE`+HDfHf|MyQc2DwoHCRP*a& z=iiRYNd6CLBq7nh^BS_v_0*EG4lZhslm(CSpSV!6?}gSES5o=z5PaR+`rf@?(juEk zqzp(~N=e2Myv)_^Q7o>$W-9Jf*Xj4o9$z_&^DMgF7er+BSV}lM7%(!P^J7v|+FSy|y>*nU})M8C$N>HKz4&(%7i z#@~6a@^`ztHS{=gesI;)22QAR&=SzRvP#HV-7G9|j{c+Oc^u&dp^3y`W_U0h98{ZU z*^`VpXAv%zZt9f&AwOq<6eako;17Q%+K^b~beHjxIOxwO4*i)8@F&zez-iD!udV-a zg3JsuO%TflvPZHC0`i)4JriiViilzmeF#kuO!5Yxd9TTfP(9^^z%)i)9Yme{>HlnK z9g3;aNL3Jh2oY)+QV>i@NPQ6fNF#6zTtOGac?BB~#R{&Vc37+?ngH1O{#i>p3))NGBCJ8En<(Q({6 z{3%3o0|4URKAks9~~N)IKE`c)KYj5$H7Hu%b@Af;djqROUGrbtL--^E@9n delta 2182 zcmZ9N2{e>l1IM2kOqh|~YnhCFnZX!J8S;%K$r38jYb*^(GL}!)FiD|gERU=q-pE=Q zc_mBsgehc-L8OI@CA~t0cb>lUo%ej-z31NFz4zSz|K5AfJ?Ee3K0rn}*zoWQ0sub% zbcLm(RN>rSzXtv^Ed8Atw+97b$`J4{bqFpnHF#$jcm<{ap#-K1p&y2a@ExYl6@z#< z4gwi&0^tt)7+1&m1Rvso*octh+xs-knv5aKDV#(A08SEoi5JB1z{5ik|6 ziVRdwt*RZek2QiiMt-(DQjGKao#L-u@0*tCro2jfyKmjH|K^fpS0-L6^r3KSxbWOp z7p$IF@LF82mQuFLOe}omd9LmUOBBt$CIHShQ>=;!p1F8iprEb*t8uE*>WGulqQfAq4d?xsyod!+P=gL%4LX?{dud4Zpa@GY%)2c~lK z=gxNqL$=jr)ncN;mnPVk9Q}9-l7@S9f*NcKKX&vB1fvt*knM66kXUac59346h79-f zPx84m36)X^;y|#(cY7A0j{Sa3JJLj9^;&9o!XbHc0)tjV_w?=&R{}YG8NF$8_FgJ8 zbc<+X_g2Qlk}U?)Pf7a1TKYLliQcOB%&53nu43d$##9rcYjsHRH+G57JA=HU<5LSi zO>dB2R3?Bt8#&$0(fygdrrpaqnU^{_xp&?-2DL|Y-$}CPWc5W$>9_<<6V)_A9FsKk z?wg%eq&;os856^@l};b&EaF>r8;CL4hC9w5$}V2JpSGZ-+qF^Q-5nJa_+;DYH4)GH zGF*(xaUm(TBsP7>G$D{oQid+bu!|4BS08ueN> z(8oL%Q@O?CrZz|!DDsvkc^rFDHWhWZSa41t^4goNXr`Ajm5Df>GQ2z8{&<(T`DUp( zzJoQNy!XA9Z)R;aI8XBs>+#tqCed3XO2qX?wgei)pY4-ljg&VJH}3J3I~=1V&Qyt0 zrfH1D${UBW2| z^gkW@zDJ}QN_LQLwCv%2T3$}tcF0_>dvQ|%ZfP!RbNET%U$>M$_V8Sz?w4$8(Gski z0x0J|OWK-6n&Rj2qc0v$G#@6aS*uh_Ez|O9`IRQmF^cw?*hpm&^r-9USFbmZPvsa- z?l-ST%{KW5^ejdNdizN;rR_7R^g?3nmbC1`$ddUV#wx-SU518H$75=CZ(eTE%S+P} zAr_zg8SpB=%s2)3bSl<=B0toX?`(`M^SJ#+MONYK$a2%Kcm`Ewe0rwLQH;OYc#@Xo zySQuLusdtMJKc(jZ4ISW9h8?P6mw3yN9cZ3UCle{G?JH+!07O7B!(Y;xKeO1N?X7z zo^M7G@k7^#l;Cccve4;x(XCOvv4%m3nOG`-fX3~zu z#PA6?qXrqc*oF^x<20%v5X-K*G~eS71QHMpmEuOiqiE*%32Kg?mjcrITLm2)-Ux~vzrZlP?o_`(2cKn(3 z!=djD9&ur1khI^foIk8N zZrbj=7+nkNDq;kfAhklkMv`@q+YizwbKUWou`qs@wd5%nvBkNB^W}hXnXjRO{>8rc z_eUuxr&>=lU;W0NI&q|P@_82p#Szads#bSU*cfUcKJXo6r|JIP!qN(wxcwIzES?K3EB&^Ad(~9Y7;xu-q!RrMyu2QaeKPngJi&b{ zutpZW8Rj^cNuJ`Ja)_y@@T9sS6YPZATyQNuck^y1xV2mP*IB)oN&QI0<`*w)HXYjB z10|dUH{tk!&M=0Ecp03VR*WXe6kdo&WsUhEURSDuLDW-W@Ib-!NxcYyC>9Og(~yCN z?HVK~0%4j45DYc-Ap~e1{Ldm9?9!Cw8h~##bs>mi4?wWO{tLnltT|-C#2P_B;*LXb z#hrn)jksUFn>f<{C!?j-FRKVGG~7xIR1nwEawFH^O3ji+!0Du7e zQ|`sBN`R|czs@FTqv13eu3QETk`)0Xv{4G3+yp*Ab;q590RRaO0N8(&z`eLuMeb%a z_>`;TUVWMiKjmL?R~1o64(jR1!<|$?Z8ZZhNe89S#dX_OMMPS1U7%+4KW-Rx?nZqO Yt05@mV8h3ad;s{3Tf@1dHg#zBH_b8A761SM