Untitled
unknown
plain_text
2 years ago
2.4 kB
4
Indexable
using System.Net.Sockets;
using System.Net;
using TicTacToe;
public class GameServer
{
private TcpListener listener;
private List<NetworkPlayer> players = new List<NetworkPlayer>();
private int port; // Nastav port podle potřeby
private bool isRunning = false;
public GameServer(int port)
{
this.port = port;
listener = new TcpListener(IPAddress.Any, port);
}
public void Start()
{
isRunning = true;
listener.Start();
Console.WriteLine("Server started, listening on port " + port);
Thread clientAcceptThread = new Thread(AcceptClients);
clientAcceptThread.Start();
}
private void AcceptClients()
{
while (isRunning)
{
if (!listener.Pending())
{
Thread.Sleep(500); // choose a number (in milliseconds) that makes sense
continue; // skip to next iteration of loop
}
TcpClient client = listener.AcceptTcpClient();
NetworkPlayer player = new NetworkPlayer(client);
players.Add(player);
if (players.Count >= 2)
{
StartGame(players[0], players[1]);
players.Clear();
}
}
}
private void StartGame(NetworkPlayer player1, NetworkPlayer player2)
{
// Send a message to each player to start the game
player1.SendMessage("START");
player2.SendMessage("START");
// Create a new game
Game game = new Game();
// Wait for each player to send their moves
while (true)
{
string move1 = player1.ReceiveMessage();
string move2 = player2.ReceiveMessage();
// Process the moves
game.MakeMove(move1, Game.SquareState.X);
game.MakeMove(move2, Game.SquareState.O);
// Check the game state
if (game.IsGameOver())
{
// If the game is over, break the loop
break;
}
}
}
public void Stop()
{
isRunning = false;
foreach (var player in players)
{
player.Disconnect();
}
listener.Stop();
Console.WriteLine("Server stopped");
}
}
Editor is loading...