extends Node2D var current_player: int = 0 var player_states := ["Circle", "Cross"] var won := "" var five_wins = false var count = 0 @onready var board := $Board as Board @onready var nextPlayer := $GUI/NextPlayer as Sprite2D @onready var wonPlayer := $GUI/WonPlayer as Sprite2D @onready var diceButton := $GUI/DiceButton as Button @onready var diceSprite = $GUI/DiceSprite as Sprite2D # Called when the node enters the scene tree for the first time. func _ready(): current_player = 0 board.reset() won = "" wonPlayer.hide() nextPlayer.region_rect.position.x = current_player * 300 nextPlayer.show() _update_dice_sprite(0) board.active = true # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): if won == "": if Input.is_action_just_pressed("Click"): var grid_pos = board.gridpos_at_mouse() if board.get_state(Vector2(grid_pos.x, 0)) == board.empty_state: var new_pos = board._calculate_drop_pos(grid_pos) if board.set_state(new_pos, player_states[current_player]): won = _check_win() #count = count + 1 if won=="": current_player = 1 - current_player nextPlayer.region_rect.position.x = current_player * 300 else: print("Winner: ", won) wonPlayer.region_rect.position.x = player_states.find(won) * 300 wonPlayer.show() nextPlayer.hide() board.active = false #if count > 7: #board.delete_row(5) zum testen des entfernens func _on_restart_button_pressed(): _ready() var _checks = [ [Vector2i(-1,0), Vector2i(1,0)], [Vector2i(0,-1), Vector2i(0,1)], [Vector2i(-1,-1), Vector2i(1,1)], [Vector2i(-1,1), Vector2i(1,-1)], ] func _check_win() -> String: for cell in board.get_used_cells(board.layer_by_name[board.state_layer]): var state = board.get_state(cell) for check in _checks: for i in range(3): var same = true if five_wins: for j in range(5): if board.get_state(cell + check[0] * (i + j)) != state: same = false break else: for j in range(4): if board.get_state(cell + check[0] * (i + j)) != state: same = false break if same: return state return "" #Generiert die Zufallszahl von 1-6 func _roll_dice(): var zahl = randi() % 6 + 1 var animation_help var zahl_davor for i in range(6): if animation_help == zahl_davor: zahl_davor = randi() % 6 + 1 _update_dice_sprite(zahl_davor) animation_help = zahl_davor await get_tree().create_timer(0.25).timeout _update_dice_sprite(zahl) print(zahl) #Debug ausgabe, später löschen lol return zahl #Funktion um Knopf und Methode zu verbinden func _on_dice_button_pressed(): _roll_dice() #Sucht sich für die entsprechende Augenzahl #die X und Y-Koordinaten in der Tilemap func _update_dice_sprite(result :int): diceSprite.region_rect.position.x = _get_dice_pos_x(result) diceSprite.region_rect.position.y = _get_dice_pos_y(result) #X-Koordinaten der Augenzahlen in der Tilemap func _get_dice_pos_x(result: int) -> int: match result: 1: return 8 2: return 108 3: return 208 4: return 308 5: return 108 6: return 208 return 208 #Y-Koordinaten in der Tilemap func _get_dice_pos_y(result: int) -> int: match result: 1: return 308 2: return 308 3: return 308 4: return 308 5: return 410 6: return 410 return 410 #Nach dem Glücksradereignis wird die Siegesbedingung auf 5 gewinnt geändert func _five_wins() -> void: print("5 Gewinnt aktiv") #Debug five_wins = true #Nach dem Glücksradereignis tauschen die Spieler die Symbole func _change_symbols() -> void: current_player = 1 - current_player nextPlayer.region_rect.position.x = current_player * 300 #Nach dem Glücksradereignis gewinnt der Spieler sofort func _instant_win(): print("Winner: ", won) wonPlayer.region_rect.position.x = player_states.find(won) * 300 wonPlayer.show() nextPlayer.hide() board.active = false #Zum Testen der Events func _on_test_pressed(): _five_wins()