extends Node2D var current_player: int = 0 var player_states := ["Circle", "Cross"] var won := "" var tile_size : Vector2 = Vector2(32, 32) # Annahme: 32x32 Pixel pro Tile var tileset_texture : Texture = preload("res://assets/sprites.png") @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() 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(grid_pos) == 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() 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 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 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 _update_dice_sprite(zahl) print(zahl) #Debug ausgabe, später löschen lol return zahl #Funktion um Knop 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 8 #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 308