parent
a56a2ed963
commit
7ea324130d
|
|
@ -10,58 +10,22 @@ config_version=5
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Tic-Tac-Toe"
|
|
||||||
run/main_scene="uid://dqveewprna0jt"
|
run/main_scene="uid://dqveewprna0jt"
|
||||||
config/features=PackedStringArray("4.7", "GL Compatibility")
|
config/features=PackedStringArray("4.7")
|
||||||
|
|
||||||
[display]
|
|
||||||
|
|
||||||
window/stretch/mode="canvas_items"
|
|
||||||
window/stretch/aspect="expand"
|
|
||||||
|
|
||||||
[file_customization]
|
[file_customization]
|
||||||
|
|
||||||
folder_colors={
|
folder_colors={
|
||||||
"res://res/": "red",
|
"res://res/": "red",
|
||||||
"res://scene/": "purple",
|
"res://scene/": "green",
|
||||||
"res://scripts/": "green"
|
"res://scripts/": "purple"
|
||||||
}
|
}
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
pad_9={
|
pad_1={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194447,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194439,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null)
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_8={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194446,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_7={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194445,"key_label":0,"unicode":55,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_6={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194444,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_5={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194443,"key_label":0,"unicode":53,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_4={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194442,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
pad_3={
|
|
||||||
"deadzone": 0.2,
|
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194441,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null)
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pad_2={
|
pad_2={
|
||||||
|
|
@ -69,19 +33,42 @@ pad_2={
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194440,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194440,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pad_1={
|
pad_3={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194439,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194441,"key_label":0,"unicode":51,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_4={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194442,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_5={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194443,"key_label":0,"unicode":53,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_6={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194444,"key_label":0,"unicode":54,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_7={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194445,"key_label":0,"unicode":55,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_8={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194446,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
pad_9={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194447,"key_label":0,"unicode":57,"location":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
[physics]
|
|
||||||
|
|
||||||
3d/physics_engine="Jolt Physics"
|
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
textures/canvas_textures/default_texture_filter=0
|
textures/canvas_textures/default_texture_filter=0
|
||||||
rendering_device/driver.windows="d3d12"
|
|
||||||
renderer/rendering_method="gl_compatibility"
|
|
||||||
renderer/rendering_method.mobile="gl_compatibility"
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://p3r88nr8pbov"
|
uid="uid://c0d0vvj7grl0p"
|
||||||
path="res://.godot/imported/Dornenkrone.png-d685e6b66b51219ea3aea986045555ab.ctex"
|
path="res://.godot/imported/Dornenkrone.png-d685e6b66b51219ea3aea986045555ab.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
|
|
@ -0,0 +1,40 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://42igluxsxh0i"
|
||||||
|
path="res://.godot/imported/Rankenkreuz.png-67e538a33ccef681a741da4733a45886.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://res/Rankenkreuz.png"
|
||||||
|
dest_files=["res://.godot/imported/Rankenkreuz.png-67e538a33ccef681a741da4733a45886.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
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/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
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
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene format=3 uid="uid://dqveewprna0jt"]
|
[gd_scene format=3 uid="uid://dqveewprna0jt"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://6afx0iw42x0b" path="res://scripts/control.gd" id="1_d4uqn"]
|
[ext_resource type="Script" uid="uid://6afx0iw42x0b" path="res://scripts/control.gd" id="1_d4uqn"]
|
||||||
[ext_resource type="Texture2D" uid="uid://p3r88nr8pbov" path="res://res/Dornenkrone.png" id="2_c2amw"]
|
[ext_resource type="Texture2D" uid="uid://c0d0vvj7grl0p" path="res://res/Dornenkrone.png" id="2_c2amw"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://42igluxsxh0i" path="res://res/Rankenkreuz.png" id="3_e5yio"]
|
||||||
|
|
||||||
[node name="TicTacToe" type="Node2D" unique_id=1284704153]
|
[node name="TicTacToe" type="Node2D" unique_id=1284704153]
|
||||||
|
|
||||||
|
|
@ -24,46 +25,217 @@ layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button7_ObenLinks" unique_id=1165030818]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button7_ObenLinks" unique_id=1859763733]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button8_ObenMitte" type="Button" parent="Control/Board" unique_id=1708324161]
|
[node name="Button8_ObenMitte" type="Button" parent="Control/Board" unique_id=1708324161]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button8_ObenMitte" unique_id=1719206029]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button8_ObenMitte" unique_id=524101128]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button9_ObenRechts" type="Button" parent="Control/Board" unique_id=88820554]
|
[node name="Button9_ObenRechts" type="Button" parent="Control/Board" unique_id=88820554]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button9_ObenRechts" unique_id=1251697558]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button9_ObenRechts" unique_id=2027318618]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button4_MitteLinks" type="Button" parent="Control/Board" unique_id=1367556442]
|
[node name="Button4_MitteLinks" type="Button" parent="Control/Board" unique_id=1367556442]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button4_MitteLinks" unique_id=1902384192]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button4_MitteLinks" unique_id=93981872]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button5_MitteMitte" type="Button" parent="Control/Board" unique_id=863510856]
|
[node name="Button5_MitteMitte" type="Button" parent="Control/Board" unique_id=863510856]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button5_MitteMitte" unique_id=482036297]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button5_MitteMitte" unique_id=103466242]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button6_MitteRechts" type="Button" parent="Control/Board" unique_id=1730224545]
|
[node name="Button6_MitteRechts" type="Button" parent="Control/Board" unique_id=1730224545]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button6_MitteRechts" unique_id=933598029]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button6_MitteRechts" unique_id=1299839229]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button1_UntenLinks" type="Button" parent="Control/Board" unique_id=417363038]
|
[node name="Button1_UntenLinks" type="Button" parent="Control/Board" unique_id=417363038]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button1_UntenLinks" unique_id=879668694]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button1_UntenLinks" unique_id=1893136245]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button2_UntenMitte" type="Button" parent="Control/Board" unique_id=2081092678]
|
[node name="Button2_UntenMitte" type="Button" parent="Control/Board" unique_id=2081092678]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button2_UntenMitte" unique_id=2135819389]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button2_UntenMitte" unique_id=1493058391]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="Button3_UntenRechts" type="Button" parent="Control/Board" unique_id=92172665]
|
[node name="Button3_UntenRechts" type="Button" parent="Control/Board" unique_id=92172665]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="PieceTexture" type="TextureRect" parent="Control/Board/Button3_UntenRechts" unique_id=420000251]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("2_c2amw")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="PieceTexture2" type="TextureRect" parent="Control/Board/Button3_UntenRechts" unique_id=846383566]
|
||||||
|
layout_mode = 0
|
||||||
|
mouse_filter = 2
|
||||||
|
texture = ExtResource("3_e5yio")
|
||||||
|
expand_mode = 1
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
[node name="StatusLabel" type="Label" parent="Control" unique_id=401811983]
|
[node name="StatusLabel" type="Label" parent="Control" unique_id=401811983]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 5
|
anchors_preset = 5
|
||||||
|
|
@ -85,6 +257,3 @@ position = Vector2(250, 230)
|
||||||
width = 8.0
|
width = 8.0
|
||||||
begin_cap_mode = 2
|
begin_cap_mode = 2
|
||||||
end_cap_mode = 2
|
end_cap_mode = 2
|
||||||
|
|
||||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=616979674]
|
|
||||||
texture = ExtResource("2_c2amw")
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ var game_over = false
|
||||||
# Referenzen zu den Nodes
|
# Referenzen zu den Nodes
|
||||||
@onready var board_grid = $Board
|
@onready var board_grid = $Board
|
||||||
@onready var status_label = $StatusLabel
|
@onready var status_label = $StatusLabel
|
||||||
@onready var win_line = $WinLine # Die neue Line2D Node
|
@onready var win_line = $WinLine
|
||||||
|
|
||||||
# Mapping von Numpad-Aktionen zu den Array-Indizes (0 bis 8)
|
# Mapping von Numpad-Aktionen zu den Array-Indizes (0 bis 8)
|
||||||
var numpad_mapping = {
|
var numpad_mapping = {
|
||||||
|
|
@ -22,25 +22,34 @@ var numpad_mapping = {
|
||||||
|
|
||||||
var buttons = []
|
var buttons = []
|
||||||
|
|
||||||
# Gewinnkombinationen global definieren, da wir sie auch für die Linie brauchen
|
# --- NEU: Beide Textur-Referenzen geladen ---
|
||||||
|
var circle_texture = load("res://res/Dornenkrone.png") # Textur für O
|
||||||
|
var cross_texture = load("res://res/Rankenkreuz.png") # Textur für X (Hier Pfad anpassen!)
|
||||||
|
# --------------------------------------------
|
||||||
|
|
||||||
var win_conditions = [
|
var win_conditions = [
|
||||||
[0, 1, 2], [3, 4, 5], [6, 7, 8], # Horizontal (0=oben, 1=mitte, 2=unten)
|
[0, 1, 2], [3, 4, 5], [6, 7, 8],
|
||||||
[0, 3, 6], [1, 4, 7], [2, 5, 8], # Vertikal (3=links, 4=mitte, 5=rechts)
|
[0, 3, 6], [1, 4, 7], [2, 5, 8],
|
||||||
[0, 4, 8], [2, 4, 6] # Diagonal (6=Hauptdiagonale, 7=Nebendiagonale)
|
[0, 4, 8], [2, 4, 6]
|
||||||
]
|
]
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
board_grid.custom_minimum_size = Vector2(500, 500)
|
board_grid.custom_minimum_size = Vector2(500, 500)
|
||||||
buttons = board_grid.get_children()
|
buttons = board_grid.get_children()
|
||||||
|
|
||||||
# Gewinnlinie am Anfang unsichtbar machen
|
|
||||||
win_line.clear_points()
|
win_line.clear_points()
|
||||||
|
|
||||||
for i in range(buttons.size()):
|
for i in range(buttons.size()):
|
||||||
buttons[i].text = EMPTY
|
|
||||||
buttons[i].size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
buttons[i].size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||||
buttons[i].size_flags_vertical = Control.SIZE_EXPAND_FILL
|
buttons[i].size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||||
buttons[i].add_theme_font_size_override("font_size", 64)
|
|
||||||
|
# Buttons komplett leeren (kein störender Text mehr)
|
||||||
|
buttons[i].text = EMPTY
|
||||||
|
|
||||||
|
# Finde die TextureRect-Node im Button und leere sie für den Start
|
||||||
|
var piece_texture = buttons[i].get_node("PieceTexture")
|
||||||
|
piece_texture.texture = null
|
||||||
|
|
||||||
buttons[i].pressed.connect(_on_button_pressed.bind(i))
|
buttons[i].pressed.connect(_on_button_pressed.bind(i))
|
||||||
|
|
||||||
update_status_label()
|
update_status_label()
|
||||||
|
|
@ -52,22 +61,31 @@ func _input(event):
|
||||||
for action in numpad_mapping.keys():
|
for action in numpad_mapping.keys():
|
||||||
if event.is_action_pressed(action):
|
if event.is_action_pressed(action):
|
||||||
var index = numpad_mapping[action]
|
var index = numpad_mapping[action]
|
||||||
if buttons[index].text == EMPTY:
|
|
||||||
|
var piece_texture = buttons[index].get_node("PieceTexture")
|
||||||
|
if piece_texture.texture == null:
|
||||||
make_move(index)
|
make_move(index)
|
||||||
|
|
||||||
func _on_button_pressed(index):
|
func _on_button_pressed(index):
|
||||||
if game_over or buttons[index].text != EMPTY:
|
var piece_texture = buttons[index].get_node("PieceTexture")
|
||||||
|
if game_over or piece_texture.texture != null:
|
||||||
return
|
return
|
||||||
make_move(index)
|
make_move(index)
|
||||||
|
|
||||||
func make_move(index):
|
func make_move(index):
|
||||||
buttons[index].text = current_player
|
var piece_texture = buttons[index].get_node("PieceTexture")
|
||||||
|
|
||||||
|
# Weist jetzt je nach Spieler die korrekte Bild-Textur zu
|
||||||
|
if current_player == PLAYER_O:
|
||||||
|
piece_texture.texture = circle_texture
|
||||||
|
else:
|
||||||
|
piece_texture.texture = cross_texture
|
||||||
|
|
||||||
var winning_combo = check_win()
|
var winning_combo = check_win()
|
||||||
if winning_combo != null:
|
if winning_combo != null:
|
||||||
status_label.text = "Spieler " + current_player + " hat gewonnen!"
|
status_label.text = "Spieler " + current_player + " hat gewonnen!"
|
||||||
game_over = true
|
game_over = true
|
||||||
animate_win_line(winning_combo) # Hier starten wir die Animation
|
animate_win_line(winning_combo)
|
||||||
elif check_draw():
|
elif check_draw():
|
||||||
status_label.text = "Unentschieden!"
|
status_label.text = "Unentschieden!"
|
||||||
game_over = true
|
game_over = true
|
||||||
|
|
@ -78,50 +96,48 @@ func make_move(index):
|
||||||
func update_status_label():
|
func update_status_label():
|
||||||
status_label.text = "Spieler " + current_player + " ist am Zug."
|
status_label.text = "Spieler " + current_player + " ist am Zug."
|
||||||
|
|
||||||
# Gibt nun die Gewinn-Kombination zurück, wenn jemand gewinnt
|
# Prüft den Gewinn vollautomatisch über die gesetzten Texturen
|
||||||
func check_win():
|
func check_win():
|
||||||
for cond in win_conditions:
|
for cond in win_conditions:
|
||||||
if buttons[cond[0]].text == current_player and \
|
var p0 = buttons[cond[0]].get_node("PieceTexture").texture
|
||||||
buttons[cond[1]].text == current_player and \
|
var p1 = buttons[cond[1]].get_node("PieceTexture").texture
|
||||||
buttons[cond[2]].text == current_player:
|
var p2 = buttons[cond[2]].get_node("PieceTexture").texture
|
||||||
return cond # Gibt das Array der 3 Buttons zurück (z.B. [0, 1, 2])
|
|
||||||
|
if current_player == PLAYER_O:
|
||||||
|
if p0 == circle_texture and p1 == circle_texture and p2 == circle_texture:
|
||||||
|
return cond
|
||||||
|
else:
|
||||||
|
if p0 == cross_texture and p1 == cross_texture and p2 == cross_texture:
|
||||||
|
return cond
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
# Prüft auf Unentschieden: Wenn alle Felder eine Textur haben, ist das Feld voll
|
||||||
func check_draw() -> bool:
|
func check_draw() -> bool:
|
||||||
for button in buttons:
|
for button in buttons:
|
||||||
if button.text == EMPTY:
|
var piece_texture = button.get_node("PieceTexture")
|
||||||
|
if piece_texture.texture == null:
|
||||||
return false
|
return false
|
||||||
return true
|
return true
|
||||||
|
|
||||||
# Berechnet die Mitte eines Buttons basierend auf seiner globalen Position
|
|
||||||
func get_button_center(button: Button) -> Vector2:
|
func get_button_center(button: Button) -> Vector2:
|
||||||
return button.global_position + (button.size / 2)
|
return button.global_position + (button.size / 2)
|
||||||
|
|
||||||
# Animiert den Strich von Button 1 zu Button 3 und geht über die Ränder hinaus
|
|
||||||
func animate_win_line(combo: Array):
|
func animate_win_line(combo: Array):
|
||||||
var start_pos = get_button_center(buttons[combo[0]])
|
var start_pos = get_button_center(buttons[combo[0]])
|
||||||
var end_pos = get_button_center(buttons[combo[2]])
|
var end_pos = get_button_center(buttons[combo[2]])
|
||||||
|
|
||||||
# 1. Richtung zwischen den beiden Punkten berechnen (Normalisierter Vektor)
|
|
||||||
var direction = (end_pos - start_pos).normalized()
|
var direction = (end_pos - start_pos).normalized()
|
||||||
|
|
||||||
# 2. Festlegen, wie viele Pixel der Strich links und rechts überstehen soll
|
|
||||||
var padding = 40.0
|
var padding = 40.0
|
||||||
|
|
||||||
# 3. Start- und Endpunkt nach außen verschieben
|
|
||||||
var extended_start = start_pos - (direction * padding)
|
var extended_start = start_pos - (direction * padding)
|
||||||
var extended_end = end_pos + (direction * padding)
|
var extended_end = end_pos + (direction * padding)
|
||||||
|
|
||||||
# Initialisiere die Punkte der Linie am neuen, erweiterten Startpunkt
|
|
||||||
win_line.clear_points()
|
win_line.clear_points()
|
||||||
win_line.add_point(extended_start)
|
win_line.add_point(extended_start)
|
||||||
win_line.add_point(extended_start) # Der zweite Punkt startet hier und wandert
|
win_line.add_point(extended_start)
|
||||||
|
|
||||||
# Erstelle den Tween für die flüssige Animation
|
|
||||||
var tween = create_tween()
|
var tween = create_tween()
|
||||||
tween.tween_method(
|
tween.tween_method(
|
||||||
func(pos): win_line.set_point_position(1, pos),
|
func(pos): win_line.set_point_position(1, pos),
|
||||||
extended_start,
|
extended_start,
|
||||||
extended_end, # Wandert bis zum erweiterten Endpunkt
|
extended_end,
|
||||||
0.4
|
0.4
|
||||||
).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
|
).set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_OUT)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue