void CellClicked(object sender, InputEventArgs e) { if (!currentTurn) { return; } var cell = sender as TTTCell; if (cell.Owner == PlayerID.None) { numMoves++; currentTurn = !currentTurn; cell.Owner = player; writer.Write("move"); writer.Write(cell.Row); writer.Write(cell.Column); if (CheckWinner(cell.Row, cell.Column, player)) { MessageBox.Show("Congratulations, You Have Won the Game."); writer.Write("playagain"); var dialog = new PlayAgainDialog(); if (dialog.ShowDialog() == true) { writer.Write(dialog.ResponseText); } else { writer.Write("no"); } } } }
private void HandleRequest() { netStream = socket.GetStream(); reader = new BinaryReader(netStream); writer = new BinaryWriter(netStream); while (socket.Connected) { var cmd = reader.ReadString(); switch (cmd) { case "move": numMoves++; var r = reader.ReadInt32(); var c = reader.ReadInt32(); Application.Current.Dispatcher.Invoke(() => { board[r, c].Owner = opponent; }); currentTurn = !currentTurn; if (CheckWinner(r, c, opponent)) { Application.Current.Dispatcher.Invoke(() => { MessageBox.Show("Sorry, You Have Lost the Game."); }); writer.Write("playagain"); Application.Current.Dispatcher.Invoke(() => { var dialog = new PlayAgainDialog(); if (dialog.ShowDialog() == true) { writer.Write(dialog.ResponseText); } else { writer.Write("no"); } }); } break; case "chat": var msg = "Opponent> " + reader.ReadString() + "\n"; Application.Current.Dispatcher.Invoke(() => { ChatLog.Text += msg; }); break; case "playagain": var playagain = reader.ReadString(); if (playagain == "yes") { Application.Current.Dispatcher.Invoke(() => { Reset(); }); } else { socket.Close(); } break; } } }