From 2792a2d42fa733b1e66a2e64280dcfa5b29311b1 Mon Sep 17 00:00:00 2001 From: Daniel Lehmann <3004405@stud.hs-mannheim.de> Date: Wed, 27 Mar 2024 21:35:52 +0100 Subject: [PATCH] v.0.2 Droppen funktioniert. --- board/board.gd | 13 ++++++++++ gam8234.tmp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++ game.gd | 4 ++- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 gam8234.tmp diff --git a/board/board.gd b/board/board.gd index 267fa49..8b3f7a2 100644 --- a/board/board.gd +++ b/board/board.gd @@ -63,3 +63,16 @@ func _index_atlas_coordinates_by_name(): func _index_layers_by_name(): for i in range(get_layers_count()): layer_by_name[get_layer_name(i)] = i + +func _calculate_drop_pos(grid_pos: Vector2) -> Vector2: + var x_coord = floor(grid_pos.x) # Round down to get the grid cell + var y_coord + + # Check each row from bottom to top for an empty space + for i in range(6, -1, -1): # Iterate from bottom to top + if self.get_state(Vector2(x_coord, i)) == self.empty_state: + y_coord = i + break # Exit the loop once an empty space is found + else: i = i - 1 + + return Vector2(x_coord, y_coord) diff --git a/gam8234.tmp b/gam8234.tmp new file mode 100644 index 0000000..39a0227 --- /dev/null +++ b/gam8234.tmp @@ -0,0 +1,68 @@ +[gd_scene load_steps=4 format=3 uid="uid://dmahmxghpm47w"] + +[ext_resource type="Script" path="res://game.gd" id="1_g1ie7"] +[ext_resource type="PackedScene" uid="uid://dvlk7imglgpms" path="res://board/board.tscn" id="1_ym80r"] +[ext_resource type="Texture2D" uid="uid://do2vfb2cj7fk" path="res://assets/sprites.png" id="3_0333r"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_g1ie7") + +[node name="Nummerierung links" parent="." instance=ExtResource("1_ym80r")] +position = Vector2(420, 222) +layer_0/tile_data = PackedInt32Array(65533, 1, 3, 131069, 65537, 3, 196605, 131073, 3, 262141, 196609, 3, 327677, 65537, 4, 393213, 131073, 4, 65534, 1, 3, -2, 1, 3, -1, 65537, 3, -65536, 131073, 3, -65535, 196609, 3, -65534, 65537, 4, -65533, 131073, 4) + +[node name="Board" parent="." instance=ExtResource("1_ym80r")] +position = Vector2(420, 222) +layer_0/tile_data = PackedInt32Array(65537, 1, 0, 131073, 1, 0, 131074, 1, 0, 0, 1, 0, 65536, 1, 0, 131072, 1, 0, 1, 1, 0, 2, 1, 0, 65538, 1, 0, 65534, 1, 0, 131070, 1, 0, 131071, 1, 0, 196607, 1, 0, 65535, 1, 0, 196606, 1, 0, 262142, 1, 0, 327678, 1, 0, 393214, 1, 0, 393215, 1, 0, 327680, 1, 0, 327681, 1, 0, 327682, 1, 0, 327683, 1, 0, 262147, 1, 0, 196611, 1, 0, 131075, 1, 0, 65539, 1, 0, 3, 1, 0, 196610, 1, 0, 262146, 1, 0, 262145, 1, 0, 196609, 1, 0, 262144, 1, 0, 196608, 1, 0, 327679, 1, 0, 262143, 1, 0) + +[node name="GUI" type="Node2D" parent="."] + +[node name="Title" type="Label" parent="GUI"] +offset_left = 370.0 +offset_top = 44.0 +offset_right = 709.0 +offset_bottom = 116.0 +theme_override_font_sizes/font_size = 32 +text = "Tic Tac Toe Extreme" + +[node name="NextPlayer" type="Sprite2D" parent="GUI"] +position = Vector2(1012, 245) +scale = Vector2(0.5, 0.5) +texture = ExtResource("3_0333r") +region_enabled = true +region_rect = Rect2(0, 100, 100, 100) + +[node name="NextPlayerLabel" type="Label" parent="GUI"] +offset_left = 924.0 +offset_top = 233.0 +offset_right = 966.0 +offset_bottom = 259.0 +size_flags_horizontal = 4 +text = "Next:" +metadata/_edit_use_anchors_ = true + +[node name="WonPlayer" type="Sprite2D" parent="GUI"] +position = Vector2(1009, 311) +scale = Vector2(0.5, 0.5) +texture = ExtResource("3_0333r") +region_enabled = true +region_rect = Rect2(0, 100, 100, 100) + +[node name="WonPlayerLabel" type="Label" parent="GUI"] +offset_left = 925.0 +offset_top = 300.0 +offset_right = 967.0 +offset_bottom = 326.0 +size_flags_horizontal = 4 +text = "Won:" +metadata/_edit_use_anchors_ = true + +[node name="RestartButton" type="Button" parent="GUI"] +offset_left = 926.0 +offset_top = 366.0 +offset_right = 1029.0 +offset_bottom = 397.0 +text = "Restart" +metadata/_edit_use_anchors_ = true + +[connection signal="pressed" from="GUI/RestartButton" to="." method="_on_restart_button_pressed"] diff --git a/game.gd b/game.gd index b663a9a..75e4c3f 100644 --- a/game.gd +++ b/game.gd @@ -25,7 +25,8 @@ func _process(_delta): if Input.is_action_just_pressed("Click"): var grid_pos = board.gridpos_at_mouse() if board.get_state(grid_pos) == board.empty_state: - if board.set_state(grid_pos, player_states[current_player]): + var new_pos = board._calculate_drop_pos(grid_pos) + if board.set_state(new_pos, player_states[current_player]): won = _check_win() if won=="": current_player = 1 - current_player @@ -36,6 +37,7 @@ func _process(_delta): wonPlayer.show() nextPlayer.hide() board.active = false + func _on_restart_button_pressed(): _ready()