Client 類別 - AcceptServerData 方法
public void AcceptServerData()
{
NetworkStream Ns = client.GetStream();
string str = "";
while (true)
{
byte[] bytes = new byte[108];
Ns.Read(bytes, 0, 108);
str = Encoding.Default.GetString(bytes);
if (str.StartsWith("Order")) // 收到出牌權限
{
DConsole.player1.haveOrder = true;
continue;
}
if (str.StartsWith("ClientPass")) // 其他客戶端 Pass
{
DConsole.gPlayer3LeadPoker.Clear(DConsole.backColor);
DConsole.gPlayer3LeadPoker.DrawString("不要", new Font("宋體", 20), Brushes.Red, 5, 5);
continue;
}
if (str.StartsWith("ServerPass")) // 伺服器 Pass
{
DConsole.gPlayer2LeadPoker.Clear(DConsole.backColor);
DConsole.gPlayer2LeadPoker.DrawString("不要", new Font("宋體", 20), Brushes.Red, 5, 5);
continue;
}
if (str.StartsWith("NoBiggest")) // 自己的牌被管走
{
DConsole.player1.isBiggest = false;
continue;
}
}
}
流程說明
Order:標示輪到自己出牌,設定 haveOrder = true。
ClientPass/ServerPass:在對應位置繪製「不要」提示。
NoBiggest:重置 isBiggest,表示不再擁有最大牌。
- 各指令形成閉環,除非有人出完牌,否則持續傳遞。