From 53e56845dc6518b48fef7875f7c87208176370ae Mon Sep 17 00:00:00 2001 From: Tiger Date: Sun, 22 Feb 2026 12:55:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=90=AD=E5=BB=BA=E5=A4=9A=E4=BA=BA?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/autoload/MultiGame.gd | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/scripts/autoload/MultiGame.gd b/scripts/autoload/MultiGame.gd index 6f7dc69..4dbf8a8 100644 --- a/scripts/autoload/MultiGame.gd +++ b/scripts/autoload/MultiGame.gd @@ -2,7 +2,12 @@ extends Node var peer = ENetMultiplayerPeer.new() var players: Array +var cards: Array var player_num +var player_cards: Dictionary +var player_turns: Dictionary + +var round: int func add_player(id: int): if players.size() < player_num: @@ -24,10 +29,54 @@ func create_client(ip: String) -> void: func _on_peer_connected(id: int) -> void: players.append(id) + player_cards[id] = [] func _on_peer_disconnected(id: int) -> void: for i in range(players.size()): if players[i] == id: players.pop_at(i) + player_cards.erase(id) break +func start_game() -> void: + if players.size() != player_num: + return + deal_cards() + round = 1 + +func extract() -> String: + var index = randi() % cards.size() + var card = cards[index] + cards.pop_at(index) + return card + +func deal_cards() -> void: + for i in range(player_num): + player_cards[players[i]].append(extract()) + +func next_round() -> void: + settle() + round += 1 + +func settle() -> void: + pass + +@rpc +func begin_round() -> void: + var id = multiplayer.get_remote_sender_id() + if round == 1 and 0 <= player_turns[id] <= 1: + for i in range(3): + if player_cards[id].size() >= 8: + break + player_cards[id].append(extract()) + else: + for i in range(2): + if player_cards[id].size() >= 8: + break + player_cards[id].append(extract()) + +@rpc +func get_cards() -> Array: + var sender_id = multiplayer.get_remote_sender_id() + var data: Array = player_cards.get(sender_id, [-1]) + return data