parent
b0fda04f99
commit
2792a2d42f
|
@ -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)
|
||||
|
|
|
@ -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"]
|
4
game.gd
4
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()
|
||||
|
|
Loading…
Reference in New Issue