From 865132c2536fe36f493549fe0054a1e8e2400ced Mon Sep 17 00:00:00 2001 From: alpacamannn Date: Sun, 22 Jun 2025 22:25:05 +0200 Subject: [PATCH] first commit --- .gitattributes | 2 + .gitignore | 3 + .vscode/settings.json | 3 + icon.svg | 1 + icon.svg.import | 37 +++ project.godot | 16 ++ src/assets/card_atlas.png | Bin 0 -> 153302 bytes src/assets/card_atlas.png.import | 34 +++ src/scenes/game.tscn | 14 ++ src/scripts/game.gd | 389 +++++++++++++++++++++++++++++++ src/scripts/ui.gd | 372 +++++++++++++++++++++++++++++ 11 files changed, 871 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot create mode 100644 src/assets/card_atlas.png create mode 100644 src/assets/card_atlas.png.import create mode 100644 src/scenes/game.tscn create mode 100644 src/scripts/game.gd create mode 100644 src/scripts/ui.gd diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9457256 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "godotTools.editorPath.godot4": "c:\\Program Files\\Godot\\Godot_v4.3-stable_win64.exe" +} \ No newline at end of file diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..b26269c --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcwx6pxubtivy" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..13329fd --- /dev/null +++ b/project.godot @@ -0,0 +1,16 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="dujorak" +run/main_scene="res://src/scenes/game.tscn" +config/features=PackedStringArray("4.3", "Forward Plus") +config/icon="res://icon.svg" diff --git a/src/assets/card_atlas.png b/src/assets/card_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..2153e0039d8463d33e61b5b098d4ddcc52c454d4 GIT binary patch literal 153302 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�ue0>MvP-*|k7fd*4kyBrazo1(0~%aEZmM{x3Lr!` z)ks~zrY`Aykm&pPR%{BT>1j?+Djv<477-3*6m#22(J4DbL3i~7+{Z%nCv*WR2nHzh&jxU5fOgqaLDiXQ z6QQpw;ijvNCJLcB_@kyPV})YVs(r9hZ<;B7Qc439lRAkI(VRJv`wO?=Du}cuppJPG zo^{B-^PALB(g|_0?ESp3WGGfx-!juOxA;o9n zW$e^%@?+pMM$avEiTGp-&6IA3E{EV-QI0`gbh%48sa#}zZdR6rm+0*@NEI&99Vc(! zp%<15Jv#!=pq`2L3^UVxDvPdaKZ31=B!C#n8`C8Ti6CL;oUqH30T^5z_U$>S?BLE* zs{0E3mC;Aks+k9sO~qO{Zf$?d`2ir7j^N3d^H6G#{aN@e3{?D-UCDf~m3^olR34l& zM`BKiT~bZCcqr-sOTbg~Lq(ZvXOJVvVs*h& zaP_THyix5?vC0;*Pk1_NOTCeGDkuO}Q`nDMJor0tk(TsA?+8j+m;{fpqnHooTP^%iS12^@ga%6a=#T%53SZB6Jaeu5Mlxp)|xyeln(nqsyJ1I=xjp6yyML zxG+|=m{z32e3<~KE}dmMw4DV%@r)o&!#irpV1)zy4#{h=IE~FM8%`TH>Lz)COsG`l z@U&Az>`cWOf)W-lfDQDgK-Pxw)lq3W3`f*`(waL^Hikd3|BH%2c#$Rj6rxT2l!V!_|hF^C!gZR-m2n@562 zNk9I$d%@4&MOkiLe&A`_c-X;k3&w#BDgGaJrGFRyb#axGmsE_4nJg6g5Wm3oV!7-U z_|=bQ%N^uvQr1?TRlIgpBIe9F?#x|6`)qCod-a_461R@fSGBxK`k=se8O(%i;)XvI zuHcL>x;m+nl^#Z}8xw!;C96`U=5soLTV+w<1}3zy+)TYoM=Ca2mlOoVVeV27$o4mm z(-6J8>*-0Y7sYPB47YlC;KMZ8JZsB}JDTz$x?^(@>zD#=IyBVSP^;-1#7#VK-X_Nd zUQglZSMftv_MqL2nv#?fS}InP*jo_6VX=x~NnCXDWMExxnV%GCgjhR}WzeR+xRbxO zuE?6&x|#DMLTM(XYGu`@spvVQGnm)pH!pPVhNFvfHl7@qoAffCI~{an=ja-a&MFeG zGxUvV-iu-wrwWXHRo)91U-lv8vJmD0F8*0|G z>NetwXw+@Bq^}`B86a`=$W+NJHfg+s!5->h?hX&U&rSuULuE+k=;tLXYI#-;H{K`R z=E|NcCE&hxQIcNw2imool)cU6-&{o<{T4oPM%N3Vxt1uT6-cX-Yxn_irKODBcy_qr zNg0B)ejv8)YX)X7;6aTprn=_iEh={BVRxy7k@LM&9d*6o4&|!eYdKUp`h;iW4DV>& z6=n61B#o~e*}RO?)74ZR2EBUcq^omh(y;zUOZpv+I(kh3sha6SX(;DpY+K&a4!cok ze`?KVb=@wS{VztS-`8M;HmESdinuA;0vGlzY2ye^7_GJ{a9JAzi;j@3UB)p~{`SP`A*fuPd7NIsVO5 z=#8u!lc8(zI!kX?$9dmw^+W%Zg7Ee(u+&UMUQdBt5S$E;%5(<~IbCxLl5rH6mEp-2 zugM;^X}ZA*i~2FqiElDyerNG`!d4=MdYWI-AwA5>gk^q~S5j4yl0vgRTx6-4nqIvL z@hO|xGG<)h(m}A$IA#QPAO+wE;G$~2lXFXixu{Cou%a=#wD%TYlH3-J`j=we52oGn z&0>dLUZzNR4&n>1Jq>!jft{o{>5dal$4}|upEMC7WVat@ocN8@{1id2-{7w?+-iSIoJE;1D9UD-(x;s_kPB8p(y8wQiQM!XPZ{g z7Q(T2&GH9WQFiY-BrTCy6G?vLmdqBIRCgFI1gGVJPPTY|JP`Vi;cD)mG| zN?$VY5xSgcy!37Qh_eb1O7>Sw2)B8A@2xiif|Myl!Q1>o;0IN}#$iKT2`b;kXSkfT zYVAOLMMM&B56~Q+hm1 zHMwgW9vgEdg;Ya~D8tbXG3uEbvt@|qs`!Ao$_%`oEL_3zcjyd`ojA4)zfJMtTe~Vw zMzc}ljF3~ew_d|4BCK*V78(AuDMpXLh?U>Z>;ZnFd{ke(nI>=Hug0wB;8GGbot$i@ z<`F`3=n7xUU)*1PIP6s-rk^Y| zAzNOhX`QWy>W&MAEx5Tmvq#};agYSWW>X8qR~3=Kpl|rWNt^}b3=3|?qibHeU9sQi zcfslIYc)Ebn-A-3?1Z70>mDtlq6^^i8wP-l+mn{o|uOcSG!N%tW&G>t#tRQs$3m<$JP5X?v7YgU7DOIU2!^ZEEGs zUfE7fE43=_Y9gUsvvC=R;8~dcU3D0x-36RAS^q$e*wVJ|eR>Qsd2&F;nlBhkMr101 zk5?QA`c6-x5^kx=CdH(-m0DSr9+6jk{kmMW&u1L}0G0fIN0~D#fjl8#X|asMUzpH= zPH1Ff$l?e9Xa*^y4TL36Y`nP#;iN>nO^q{??@Axg$%`1tlcKDWfVhajg59d}$~50j zZ$uO^X}>^zVahs!iEU;Y_JFt|>n8vUDe`^TqEj`l^vSyi5SXG0w&3$+NfO6vFt1WoZ)Ac5N3}hS ztOr=iaVi1?`E>(89le+)7!;-;mKf?eW<&H_GMXz8Ghpbo18vkFrq(2sb68>9M&BpJ z#XW`R$KdZ?O{4)JMShWLG+tS>ds-;8R*?)VljA29QNoKI%c7p~2P+S#kD0$jruxe+ z4Ug)%O!2geb)UOdB_$Y!uC@Imp#Vc|QH#L1n zSmr~P*EXVE1&Bb4$?+~xKYq+q9nm)ds%W0h3fo$dBeClQ)|@;EOxwf0!X*sBbqZ{p z0SV5lPiSsW0Kq#9(>!kEt*82&Cg2ta$uiOucc6qQqgz*fzhw! zs*?6S%#A}WL&@Hvy&rLoEf`9Db{)?02Ug1wtgNNyi#ZRGgidf34K5Zb*LFL#QTa*MS0~Hq?NY24UC-m{WMdR+9Z2qk$&& zdmFr}rnQNq6_EF_1%io4kK32A_+kjufCfNi5HbD%2EnvpI?zWH{r9{|g`&;}G28Iw zHBC(jgzc=j@-55zwjfO}b^y`NBE$5EYp|A*#T~LE+#^!^EMa`Z35)bxfU&X9cl|vh zPU^l59y19qXeGJeH?+ANbFLFQ@E!KogZw#R5Mfmn;bW1!$8=_J;Jidv>?CEq-8ee| z5bPS}DiiW&jaq4Kt;xLxqQMp0s&H;eka$gKTHrOp;XC+^p(O5x=ecdv%TpO3sR2XB z0psBJ8#)ne96Ax{e%po8Birn)+U+yEY?$P?BoF1x;#Q^A6rES*4AX+vC;Lq_Hb5~} zr)vovB*WHoNRNvhNpVnQEmCkeBi!`%)_CtCMWNJU8G=ajy%Pt=VqJyO9koL09dWhR z;_iNU{Z$_Jx)I(azY*+sBW!qw^@`j$O#))t28Tej^kpR2?22eYJ9p6g#|s&9kePI% zo!R`K1=wADLWSK1SA-|XnPqLbq1K-}lvNy%)Gb4;Dl{7S&5<3%AG(DH8W%!_wdA^~ zayse^dBng{wPN7XYH>tLdf+t}+Y`)3Yazv(#Y|Eea$vS0WX`o7QdE8B^ve1#A+n;Z z9&X+ss@Pxg)H!)i(Wt&wG&jwfUu9FTOY5n}UjjKQ=|REdPBCjs6dW)Q+o+KHuVH@~ ziA)#-8FQjjL?6D2Z__#dE$rqWziL4TJ^>jHyRMyo=KrYneI);O+Lif@qdc*{k z8XH@dsrGr4)n>m8CdlC!Ihpnv@JG#Lbd@GEG09Zai*BeAKCH|28f{ZZfN**-u(Vm# z%a$}ZCnq(|)H5AlwRL>8SHpOVUR|2j<7+gKm0jl1k;EJHvu;AvX1bpo<2>gtETLqu z0ykplC1F)KLF9aZ`6H61492UNICizvPFj=ZyKbQ1yjb@}ntk0J#&g;|z$9SUJ@CDG zu|yCROQ1LyL5jUb3!>Kv_>4LZc4<+0J0W=nkb%=sV7v^gMSf4yu;T-ivM&$ho`CW~ z!@8t0RdsIWv@+t7-6%ID7Ijcv(%T+#NtJe)i(XL`7BIcK4&{77BIaoJl2f%!^k={O zQB50uUC*@7|02B66Ifb$J%z?xv3>w70&t)RfY}P8!!li++2}C!22s@*Bu2IKG|yXITP*_FWBR1X@RugD*=`*6d3xGVB2)~U!4GOD6St#gHK zF5FVlKQ|$GI@052*jx2K(I0Bv&WR!JaxI1rPy$piSe-3LSyYLhw4iHxFoqWxU%Sx+ zSVkQ(IJG5{9H0c*_a+2WOL?pt02#L<#V23mm~2PyQI~l`261_i9qdr6&r--#hZ0z&(h;fO({bg%FckTE_BsXF_PZ7SX%G zm4LZROo53HRk(_tq}Y)ho0Ce96SHqL^Mhyn=*Fk$`<*?>B0jP@B$%OKfl zTxALCD>M+?HZ6lgdS5%vFEQbN-PZGjl0N%Jh((kEjd>K~JR8bb+knpW$Woht!l`D- zh&(YCf985(1rAq!+`--oP`2v_l7-Z!d=U^(<4h4=WLuN_DU^ExJ>BfBfpkdL78~p{ z*sIIt?tbxBVbFnR{o|k}FurJc)fUoDQ5VD~fcjNuI*d%pVfau+@Omey0!Wim(~&IF z0%?tX-R^pTXm(MWjoRX7X;}b+n7Y?b;7|HhK#(XpPgbg`I=~otq74*6=w(QCXHQk$Z&fFO>O%5FVgB z5eb6!Y|wGNr7&I>1wV+lAoZvtihQE*YpaWL7=df^p&G&KpAkJ9$P1z^(v1dyQ&#mq zQusR@bUB1T>Jp6(lm8R>|7?;0Os1d})Hw@CAnEtOvu`PyT0jHuqb!@1A23^RTdtH3 zI)U3UpI*mWt?P;UP7*7KSSJ2{6kj>(hG(-gpg)DSpzK))!R6v9zCPPC3~v#?!Laq8 zKXBoxyM3mzsvIMNn(Z?_ZOMfV0xrSIXIn+XaA%|({VB~}_LExA#pBuJd1>Q>l&1I* zbdh|>Tk@$&`Aq+y2IRW1+2i*iJvtk?M`JZtU;bZ{>VvumRPqR{uzTDDxD$h_u#He0 z17v;GEd5y};^M17n=kY0A7SK*YRj_Lz2j0xR&K(ua-?u~CV(iLG$1Vl&f}Ee6vWjh z^Jj}nQR*JkC}O|p?=RY73VaUnYdi3$Qe2aYC{)Ey&o>e#bZC&8A@noY%GxciwDE9G zM15vTfUexZTmyt#$w==?Lx*Qww9KiR}`F?zoS)?3o1S zP&txz4T?{Y=H!7w#EBs&np0RE%DpWno@^=bDAPR=OeAFl+sQ`yP+>CxAg4cx-#A;s zF|RRpg^CZG2!Qi_jLAqRF>qQMDqtS^Dnrg;DK7dgghl9_#TM zcd6o^kl}#G{bMC>x6lP5c=9BmgRUscS>uaeR%wlCG8LluWZls3Q8 z19S~!GXMcz2dTWzaB>EWoIDG4u2qwY0O2#*JdQpO&R!0JxsL-ZFr$tG^(p(r@*Yng zV)LXjwA}FqU-sk!(|yMh7qtA!T4;W{=xS^@%C~MxbS-d^rxRDT5Hv6LYK6=Gpy!OryKONE8^lLx; zWbIR3Y3sG0ejfBZM)%LdgGcYWXA`Vw`DU%jo)7Dcxuu|UtxT?Hg&)hw+EeT&zd=u7PDewm6~`HFU!xWW2vrbVsl+l zc!-06O_4G9%a=pi97%}CC`1cF4aBL-Nh>{U5Y}9m91S-Lme5KUCoPa3ss`mt!U-;Vmx9(Rf6&b8sG0cczH&$SSsth!mm}cfmRVjjk6N<4J zSvE>7CDGRNIdO`ISB);DU0&ZPKZP$F+;jbyFU@n4M0aWyKkzMT#<4T9)67v>iOjti zzG}a%s>h?cHxM;Qv3r^cR_8*e!D+i04My>q_^?gBU}jD@a}}e}nxlRi^RJ>89ADkG zDSLPEb)Zf6Gw3RJ{@?5I-`KBzqW1Z@@5wsLI*WWqz`+#4>x8e zD|+04Vm?z-?_dyvwaW$T`21?*%%@-j8|A8&&|)~;W*?)7Zkqoj+0IB>RgiOrl&!*n zQ$rqi*>ocrObltd8KIG!ELO9n$W(jXcFl{cyY$MkUjJs(DQ{w(bFb=uy29Dde{W%= zGzsRdrxoyhIZ!3C)6DrUW&RyP=P-Sv%CBttI0DyiyM-a;R&l7(V$iZBhG5bW@`ySL!#>0|tVXxDKw{V!jd4``X3eSmo{ zPRRi{E1LJz+Je!k{w-dJrKd369A5P`A}PZ>w-X+r%Jvwqini?81Qvy(6r^SaHp(+( z@h%9aBJLhg*8p4ux~5${+4yxa9*4hD$aIYXp6-T+;)ytw7o*7rJ}E)&8A{^kcPf-) zj&ih|NL6)=a<9v0+LOpm^JZ4((w!RRT?*M%BdxG+COxAK&!O3UC3A1p|K4T29;qC) zc6n8N{((oE%vZ`Ceu68abjo|qUzT!05M_gu*gT4meuF9`b)JEioP=DIECvzlmZ(NR zZ%I@5`4)()2A&v#kkyF~Y4nx40*7vc;~=zBpSL~l?QQw}nDiFVC_frhJh(@n5C*pD zh^C<5uNbejXWMc5MmAv-UtJy|IzwiNo{3c+-6+0oc?@Z=kgvjO7o2L}_=4Wjl9tTp zK!$5AEl(Ch&Px&DEJan5DCBN?Acfj9I9iH?S$&z@Yh;r&uGZz^^QeEh@A{xd(V$0; z*KWa4@qVY|TWVm-jdnwJgU5(%2$Z|P?l(MnwmU@e(|dLffrb*wgJ!v1E(qYy>{YL8nqG%T@cYiou3DBkt#8 zZDOt$g3Y`0jB`6sO zlkYS)4xW44o*s?T%=|3=MElDMNx-#c5;Z5(|MVhVUhl}Qjh#AKjGrD1p4_*NEA=I- zfcf`%JSTw1t9+`;r~ilD*^50^Z%;E he^uhIQVF%*g0aNw=A|D#gnr{5N0*(Hua2Jke*iKw(-i;! literal 0 HcmV?d00001 diff --git a/src/assets/card_atlas.png.import b/src/assets/card_atlas.png.import new file mode 100644 index 0000000..1431080 --- /dev/null +++ b/src/assets/card_atlas.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dj3k1qd5ahoa2" +path="res://.godot/imported/card_atlas.png-574f342db327405a75c03c3a7250402c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/assets/card_atlas.png" +dest_files=["res://.godot/imported/card_atlas.png-574f342db327405a75c03c3a7250402c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/src/scenes/game.tscn b/src/scenes/game.tscn new file mode 100644 index 0000000..f964a9c --- /dev/null +++ b/src/scenes/game.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://b3cyy67wp6hd0"] + +[ext_resource type="Script" path="res://src/scripts/game.gd" id="1_vl3q8"] +[ext_resource type="Script" path="res://src/scripts/ui.gd" id="2_dljv7"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_vl3q8") + +[node name="UI" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("2_dljv7") diff --git a/src/scripts/game.gd b/src/scripts/game.gd new file mode 100644 index 0000000..8f7dd96 --- /dev/null +++ b/src/scripts/game.gd @@ -0,0 +1,389 @@ +extends Node2D + +enum Suits {HEARTS, DIAMONDS, CLUBS, SPADES} +enum Values {SIX = 6, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE} +enum GameState {SETUP, ATTACK, DEFEND, DRAW_PHASE, GAME_OVER} +enum JokerType {DOUBLE_ATTACK, TRUMP_CHANGE, DRAW_BLOCK} + +class Player: + var hand: Array = [] + var jokers_hand: Array = [] + var coins: int = 100 + var is_attacker: bool = false + + func add_joker_to_hand(joker_type: JokerType): + jokers_hand.append(joker_type) + + func has_jokers_in_hand() -> bool: + return jokers_hand.size() > 0 + + func remove_card(card): + hand.erase(card) + + func has_card_value(value) -> bool: + for card in hand: + if card.value == value: + return true + return false + +# Game Variables +var deck: Array = [] +var trump_suit: Suits +var player1: Player +var player2: Player +var current_attacker: Player +var current_defender: Player +var game_phase: GameState = GameState.SETUP +var active_jokers: Array = [] +var MAX_JOKERS: int = 3 + +# Battle Variables +var attacking_cards: Array = [] +var defending_cards: Array = [] +var table_pairs: Array = [] # [{attack: card, defend: card}] +var can_add_attack: bool = false + +# UI Reference +@onready var ui = $UI + +func _ready(): + player1 = Player.new() + player2 = Player.new() + current_attacker = player1 + current_defender = player2 + player1.is_attacker = true + + if ui: + ui.card_played.connect(_on_card_played) + ui.joker_played.connect(_on_joker_played) + ui.booster_bought.connect(_on_booster_bought) + ui.defend_button_pressed.connect(_on_defend_complete) + ui.take_cards_pressed.connect(_on_take_cards) + + start_new_game() + +func start_new_game(): + create_deck() + setup_initial_jokers() + shuffle_deck() + deal_cards() + set_trump() + game_phase = GameState.ATTACK + update_ui() + print("Spiel gestartet! ", current_attacker, " greift an") + +func create_deck(): + deck.clear() + for suit in [Suits.HEARTS, Suits.DIAMONDS, Suits.CLUBS, Suits.SPADES]: + for value in [Values.SIX, Values.SEVEN, Values.EIGHT, Values.NINE, Values.TEN, Values.JACK, Values.QUEEN, Values.KING, Values.ACE]: + deck.append({"suit": suit, "value": value, "is_joker": false}) + +func setup_initial_jokers(): + pass + +func shuffle_deck(): + deck.shuffle() + +func deal_cards(): + for i in range(6): + if deck.size() > 0: + var card = deck.pop_back() + if card.is_joker: + player1.add_joker_to_hand(card.joker_type) + else: + player1.hand.append(card) + + if deck.size() > 0: + var card = deck.pop_back() + if card.is_joker: + player2.add_joker_to_hand(card.joker_type) + else: + player2.hand.append(card) + +func set_trump(): + if deck.size() > 0: + var trump_card = deck[0] + if not trump_card.is_joker: + trump_suit = trump_card.suit + +# MAIN GAME LOGIC +func _on_card_played(card): + match game_phase: + GameState.ATTACK: + handle_attack(card) + GameState.DEFEND: + handle_defense(card) + +func handle_attack(card): + # Prüfen ob Angriff erlaubt + if not can_attack_with_card(card): + print("Angriff mit dieser Karte nicht möglich!") + return + + # Karte vom Angreifer entfernen + current_attacker.remove_card(card) + attacking_cards.append(card) + + print("Angriff mit: ", card) + + # Wechsel zu Verteidigung + game_phase = GameState.DEFEND + update_ui() + +func handle_defense(card): + if attacking_cards.size() == 0: + print("Nichts zu verteidigen!") + return + + var attack_card = attacking_cards[-1] # Letzte Angriffskarte + + if can_beat_card(attack_card, card): + # Erfolgreiche Verteidigung + current_defender.remove_card(card) + defending_cards.append(card) + + # Paar erstellen + table_pairs.append({"attack": attack_card, "defend": card}) + attacking_cards.pop_back() + + print("Verteidigt: ", attack_card, " mit ", card) + + # Prüfen ob weitere Angriffe möglich + can_add_attack = true + check_round_end() + else: + print("Karte kann nicht verteidigen!") + +func can_attack_with_card(card) -> bool: + # Erster Angriff: Jede Karte erlaubt + if attacking_cards.size() == 0 and table_pairs.size() == 0: + return true + + # Weitere Angriffe: Nur Werte die schon auf dem Tisch liegen + var table_values = [] + for pair in table_pairs: + table_values.append(pair.attack.value) + table_values.append(pair.defend.value) + for attack in attacking_cards: + table_values.append(attack.value) + + return card.value in table_values + +func can_beat_card(attacking_card, defending_card) -> bool: + # Trump schlägt alles außer höheren Trump + if defending_card.suit == trump_suit and attacking_card.suit != trump_suit: + return true + + # Gleiche Farbe: höherer Wert gewinnt + if attacking_card.suit == defending_card.suit: + return defending_card.value > attacking_card.value + + return false + +func check_round_end(): + # Alle Angriffe verteidigt + if attacking_cards.size() == 0: + if can_add_attack and current_attacker.hand.size() > 0: + # Angreifer kann weitere Karten spielen + game_phase = GameState.ATTACK + print("Weitere Angriffe möglich") + else: + # Runde erfolgreich verteidigt + end_round_defended() + else: + # Warten auf weitere Verteidigung + print("Warte auf Verteidigung...") + +func end_round_defended(): + print("Runde erfolgreich verteidigt!") + + # Karten vom Tisch entfernen + table_pairs.clear() + attacking_cards.clear() + defending_cards.clear() + can_add_attack = false + + # Rollen tauschen: Verteidiger wird Angreifer + swap_roles() + + # Karten nachziehen + draw_phase() + +func end_round_taken(): + print("Verteidiger nimmt alle Karten!") + + # Alle Karten an Verteidiger geben + for pair in table_pairs: + current_defender.hand.append(pair.attack) + current_defender.hand.append(pair.defend) + + for card in attacking_cards: + current_defender.hand.append(card) + + # Aufräumen + table_pairs.clear() + attacking_cards.clear() + defending_cards.clear() + can_add_attack = false + + # Angreifer bleibt Angreifer (Verteidiger nimmt) + # Karten nachziehen + draw_phase() + +func swap_roles(): + var temp = current_attacker + current_attacker = current_defender + current_defender = temp + + current_attacker.is_attacker = true + current_defender.is_attacker = false + + print("Rollen getauscht: ", current_attacker, " greift an") + +func draw_phase(): + game_phase = GameState.DRAW_PHASE + + # Angreifer zieht zuerst auf 6 Karten + draw_cards_to_six(current_attacker) + + # Dann Verteidiger + draw_cards_to_six(current_defender) + + # Spielende prüfen + if check_game_end(): + return + + # Nächste Runde starten + game_phase = GameState.ATTACK + update_ui() + +func draw_cards_to_six(player: Player): + while player.hand.size() < 6 and deck.size() > 0: + var card = deck.pop_back() + if card.is_joker: + player.add_joker_to_hand(card.joker_type) + # UI: Joker-Dialog anzeigen + show_joker_dialog(player, card.joker_type) + else: + player.hand.append(card) + +func show_joker_dialog(player: Player, joker_type: JokerType): + if player == player1: # Nur für menschlichen Spieler + ui.show_joker_choice(joker_type) + +func _on_joker_choice(play_immediately: bool, joker_type: JokerType): + if play_immediately: + play_joker_to_field(player1, joker_type) + # Sonst bleibt Joker auf der Hand (Risiko!) + +# UI Event Handlers +func _on_defend_complete(): + if game_phase == GameState.DEFEND: + # Verteidiger gibt auf, nimmt alle Karten + end_round_taken() + +func _on_take_cards(): + if game_phase == GameState.DEFEND: + end_round_taken() + +func _on_joker_played(joker_type): + if play_joker_to_field(player1, joker_type): + update_ui() + +func _on_booster_bought(): + var booster = buy_booster(player1) + for item in booster: + if item.type == "joker": + player1.add_joker_to_hand(item.joker_type) + elif item.type == "coins": + player1.coins += item.amount + update_ui() + +# Game End Logic +func check_game_end() -> bool: + if deck.size() == 0: + # Kein Deck mehr, prüfe wer keine Karten hat + if player1.hand.size() == 0: + if player1.has_jokers_in_hand(): + print("Spieler 1 verliert - Joker auf der Hand!") + game_phase = GameState.GAME_OVER + return true + else: + print("Spieler 1 gewinnt!") + game_phase = GameState.GAME_OVER + return true + + if player2.hand.size() == 0: + if player2.has_jokers_in_hand(): + print("Spieler 2 verliert - Joker auf der Hand!") + game_phase = GameState.GAME_OVER + return true + else: + print("Spieler 2 gewinnt!") + game_phase = GameState.GAME_OVER + return true + + return false + +# Joker System +func play_joker_to_field(player: Player, joker_type: JokerType) -> bool: + if active_jokers.size() >= MAX_JOKERS: + print("Maximale Joker-Anzahl erreicht!") + return false + + if joker_type in player.jokers_hand: + player.jokers_hand.erase(joker_type) + active_jokers.append(joker_type) + print("Joker aktiviert: ", joker_type) + apply_joker_effect(joker_type) + return true + return false + +func apply_joker_effect(joker_type: JokerType): + match joker_type: + JokerType.TRUMP_CHANGE: + print("Trump-Wechsel verfügbar!") + # UI für Trump-Auswahl + JokerType.DOUBLE_ATTACK: + print("Doppel-Angriff möglich!") + # Ermöglicht 2 Karten gleichzeitig + JokerType.DRAW_BLOCK: + print("Zieh-Block aktiv!") + # Gegner kann nicht ziehen + +func buy_booster(player: Player, cost: int = 50) -> Array: + if player.coins >= cost: + player.coins -= cost + var booster_content = [] + + for i in range(3): + if randf() < 0.3: + var joker_types = [JokerType.DOUBLE_ATTACK, JokerType.TRUMP_CHANGE, JokerType.DRAW_BLOCK] + var random_joker = joker_types[randi() % joker_types.size()] + booster_content.append({"type": "joker", "joker_type": random_joker}) + else: + booster_content.append({"type": "coins", "amount": randi() % 20 + 10}) + + return booster_content + return [] + +func update_ui(): + if ui: + ui.update_player_hand(player1.hand) + ui.update_opponent_hand(player2.hand.size()) + ui.update_joker_slots(active_jokers) + ui.update_coins(player1.coins) + ui.update_table(table_pairs, attacking_cards) + ui.update_game_state(game_phase, current_attacker == player1) + + if deck.size() > 0: + ui.update_trump(deck[0]) + +# Input for testing +func _input(event): + if event.is_action_pressed("ui_accept"): + _on_booster_bought() + + if event.is_action_pressed("ui_cancel"): + if game_phase == GameState.DEFEND: + _on_take_cards() \ No newline at end of file diff --git a/src/scripts/ui.gd b/src/scripts/ui.gd new file mode 100644 index 0000000..b122c61 --- /dev/null +++ b/src/scripts/ui.gd @@ -0,0 +1,372 @@ +extends Control + +# Signals +signal card_played(card) +signal joker_played(joker_type) +signal booster_bought +signal defend_button_pressed +signal take_cards_pressed + +# UI Components +var player_hand_container: HBoxContainer +var opponent_hand_container: HBoxContainer +var table_area: GridContainer +var trump_display: Control +var joker_slots_container: HBoxContainer +var coins_label: Label +var deck_display: Control +var game_state_label: Label +var action_buttons: HBoxContainer + +# Card Settings +var card_size: Vector2 = Vector2(80, 120) +var card_atlas: Texture2D + +func _ready(): + # Load card atlas if exists + if FileAccess.file_exists("res://src/assets/card_atlas.png"): + card_atlas = load("res://src/assets/card_atlas.png") + + setup_ui() + +func setup_ui(): + # Main layout + var main_vbox = VBoxContainer.new() + add_child(main_vbox) + main_vbox.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + + # Game state info + game_state_label = Label.new() + game_state_label.text = "Spiel wird geladen..." + game_state_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + main_vbox.add_child(game_state_label) + + # Top area (Opponent + Jokers) + var top_hbox = HBoxContainer.new() + main_vbox.add_child(top_hbox) + + setup_opponent_area(top_hbox) + setup_joker_area(top_hbox) + + # Middle area (Table + Trump) + var middle_hbox = HBoxContainer.new() + main_vbox.add_child(middle_hbox) + + setup_table_area(middle_hbox) + setup_trump_area(middle_hbox) + + # Action buttons + action_buttons = HBoxContainer.new() + action_buttons.alignment = BoxContainer.ALIGNMENT_CENTER + main_vbox.add_child(action_buttons) + + setup_action_buttons() + + # Bottom area (Player hand + Controls) + var bottom_vbox = VBoxContainer.new() + main_vbox.add_child(bottom_vbox) + + setup_controls(bottom_vbox) + setup_player_area(bottom_vbox) + +func setup_opponent_area(parent): + var area = VBoxContainer.new() + parent.add_child(area) + + var label = Label.new() + label.text = "Gegner" + area.add_child(label) + + opponent_hand_container = HBoxContainer.new() + area.add_child(opponent_hand_container) + +func setup_joker_area(parent): + var area = VBoxContainer.new() + parent.add_child(area) + + var label = Label.new() + label.text = "Joker (0/3)" + label.name = "JokerLabel" + area.add_child(label) + + joker_slots_container = HBoxContainer.new() + area.add_child(joker_slots_container) + + # Create 3 joker slots + for i in range(3): + var slot = create_joker_slot() + joker_slots_container.add_child(slot) + +func setup_table_area(parent): + var table_container = VBoxContainer.new() + parent.add_child(table_container) + + var label = Label.new() + label.text = "Spielfeld" + label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + table_container.add_child(label) + + table_area = GridContainer.new() + table_area.columns = 4 # Angriff/Verteidigung Paare + table_container.add_child(table_area) + +func setup_trump_area(parent): + var area = VBoxContainer.new() + parent.add_child(area) + + var label = Label.new() + label.text = "Trump" + area.add_child(label) + + trump_display = create_card_back() + area.add_child(trump_display) + + var deck_label = Label.new() + deck_label.text = "Deck" + area.add_child(deck_label) + + deck_display = create_card_back() + area.add_child(deck_display) + +func setup_action_buttons(): + var defend_btn = Button.new() + defend_btn.text = "Verteidigung beenden" + defend_btn.pressed.connect(_on_defend_button_pressed) + action_buttons.add_child(defend_btn) + + var take_btn = Button.new() + take_btn.text = "Karten nehmen" + take_btn.pressed.connect(_on_take_cards_pressed) + action_buttons.add_child(take_btn) + + # Initially hidden + action_buttons.visible = false + +func setup_controls(parent): + var controls = HBoxContainer.new() + parent.add_child(controls) + + coins_label = Label.new() + coins_label.text = "Münzen: 100" + controls.add_child(coins_label) + + var booster_btn = Button.new() + booster_btn.text = "Booster kaufen (50)" + booster_btn.pressed.connect(_on_booster_button_pressed) + controls.add_child(booster_btn) + +func setup_player_area(parent): + var area = VBoxContainer.new() + parent.add_child(area) + + var label = Label.new() + label.text = "Deine Karten" + area.add_child(label) + + player_hand_container = HBoxContainer.new() + area.add_child(player_hand_container) + +# Card Creation Functions +func create_card_ui(card, clickable: bool = true) -> Control: + var card_button = Button.new() + card_button.custom_minimum_size = card_size + card_button.disabled = not clickable + + if card.is_joker: + card_button.text = "JOKER\n" + str(card.joker_type) + card_button.modulate = Color.GOLD + else: + var suit_symbols = ["♥", "♦", "♣", "♠"] + var suit_text = suit_symbols[card.suit] + card_button.text = str(card.value) + "\n" + suit_text + + # Color coding + if card.suit in [0, 1]: # Hearts, Diamonds + card_button.modulate = Color.RED + else: # Clubs, Spades + card_button.modulate = Color.BLACK + + if clickable: + card_button.pressed.connect(_on_card_clicked.bind(card)) + + return card_button + +func create_card_back() -> Control: + var card_back = ColorRect.new() + card_back.color = Color.BLUE + card_back.custom_minimum_size = card_size + + var label = Label.new() + label.text = "🂠" + label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + card_back.add_child(label) + + return card_back + +func create_joker_slot() -> Control: + var slot = Panel.new() + slot.custom_minimum_size = card_size * 0.7 + + var style = StyleBoxFlat.new() + style.bg_color = Color.GRAY + style.border_width_left = 2 + style.border_width_right = 2 + style.border_width_top = 2 + style.border_width_bottom = 2 + style.border_color = Color.WHITE + slot.add_theme_stylebox_override("panel", style) + + return slot + +# Update Functions +func update_player_hand(cards: Array): + # Clear existing cards + for child in player_hand_container.get_children(): + child.queue_free() + + # Add new cards + for card in cards: + var card_ui = create_card_ui(card, true) + player_hand_container.add_child(card_ui) + +func update_opponent_hand(card_count: int): + # Clear existing cards + for child in opponent_hand_container.get_children(): + child.queue_free() + + # Add card backs + for i in range(card_count): + var card_back = create_card_back() + card_back.custom_minimum_size = card_size * 0.8 + opponent_hand_container.add_child(card_back) + +func update_table(table_pairs: Array, attacking_cards: Array): + # Clear existing table + for child in table_area.get_children(): + child.queue_free() + + # Show completed pairs + for pair in table_pairs: + var attack_card = create_card_ui(pair.attack, false) + attack_card.modulate = Color.ORANGE # Angriff + table_area.add_child(attack_card) + + var defend_card = create_card_ui(pair.defend, false) + defend_card.modulate = Color.GREEN # Verteidigung + table_area.add_child(defend_card) + + # Show undefended attacks + for card in attacking_cards: + var attack_card = create_card_ui(card, false) + attack_card.modulate = Color.RED # Unverteidigt + table_area.add_child(attack_card) + + # Empty slot for defense + var empty_slot = Panel.new() + empty_slot.custom_minimum_size = card_size + var style = StyleBoxFlat.new() + style.bg_color = Color.DARK_GRAY + empty_slot.add_theme_stylebox_override("panel", style) + table_area.add_child(empty_slot) + +func update_joker_slots(active_jokers: Array): + var label = joker_slots_container.get_parent().get_node("JokerLabel") + label.text = "Joker (" + str(active_jokers.size()) + "/3)" + + # Update slots + for i in range(3): + var slot = joker_slots_container.get_child(i) + if i < active_jokers.size(): + slot.modulate = Color.GREEN + + # Add joker label + var joker_label = Label.new() + joker_label.text = str(active_jokers[i]) + joker_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER + joker_label.vertical_alignment = VERTICAL_ALIGNMENT_CENTER + slot.add_child(joker_label) + else: + slot.modulate = Color.WHITE + +func update_coins(amount: int): + coins_label.text = "Münzen: " + str(amount) + +func update_trump(trump_card): + if trump_card and trump_display: + # Replace with actual card + trump_display.queue_free() + trump_display = create_card_ui(trump_card, false) + trump_display.modulate = Color.YELLOW + trump_display.get_parent().add_child(trump_display) + +func update_game_state(state, is_player_turn: bool): + match state: + 0: # GameState.SETUP + game_state_label.text = "Spiel wird vorbereitet..." + action_buttons.visible = false + 1: # GameState.ATTACK + if is_player_turn: + game_state_label.text = "Du bist am Zug - Wähle eine Angriffskarte" + else: + game_state_label.text = "Gegner greift an..." + action_buttons.visible = false + 2: # GameState.DEFEND + if is_player_turn: + game_state_label.text = "Gegner greift an - Verteidige oder nimm die Karten" + action_buttons.visible = true + else: + game_state_label.text = "Du greifst an - Gegner verteidigt..." + action_buttons.visible = false + 3: # GameState.DRAW_PHASE + game_state_label.text = "Karten werden nachgezogen..." + action_buttons.visible = false + 4: # GameState.GAME_OVER + game_state_label.text = "Spiel beendet!" + action_buttons.visible = false + +# Joker Dialog +func show_joker_choice(joker_type): + var dialog = AcceptDialog.new() + dialog.title = "Joker gezogen!" + + var vbox = VBoxContainer.new() + + var info_label = Label.new() + info_label.text = "Du hast einen " + str(joker_type) + " Joker gezogen!" + vbox.add_child(info_label) + + var play_btn = Button.new() + play_btn.text = "Sofort spielen" + play_btn.pressed.connect(_on_joker_play_immediate.bind(joker_type, dialog)) + vbox.add_child(play_btn) + + var keep_btn = Button.new() + keep_btn.text = "Behalten (Risiko!)" + keep_btn.pressed.connect(_on_joker_keep.bind(dialog)) + vbox.add_child(keep_btn) + + dialog.add_child(vbox) + add_child(dialog) + dialog.popup_centered() + +func _on_joker_play_immediate(joker_type, dialog): + joker_played.emit(joker_type) + dialog.queue_free() + +func _on_joker_keep(dialog): + print("Joker behalten - Vorsicht!") + dialog.queue_free() + +# Event Handlers +func _on_card_clicked(card): + card_played.emit(card) + +func _on_booster_button_pressed(): + booster_bought.emit() + +func _on_defend_button_pressed(): + defend_button_pressed.emit() + +func _on_take_cards_pressed(): + take_cards_pressed.emit()