コード例 #1
0
    private static void ProccesGameResult(Game.Result result, Server.Client a, Server.Client b, Server.Lobby lobby)
    {
        switch (result.type)
        {
        case Game.Result.Type.Ok:
            if (result.winner != null)
            {
                Console.WriteLine("winner: {0}", result.winner.name);
            }
            else
            {
                Console.WriteLine("tie {0} between {1}", a.name, b.name);
            }
            break;

        case Game.Result.Type.Error:
            Console.WriteLine("some error while playing");

            if (a.client.Client.IsConnected() && !b.client.Client.IsConnected())
            {
                Message.Util.Send(a.client.GetStream(), new Message.OpponentDisconnected());
            }

            if (!a.client.Client.IsConnected() && b.client.Client.IsConnected())
            {
                Message.Util.Send(b.client.GetStream(), new Message.OpponentDisconnected());
            }

            break;
        }

        if (a.client.Client.IsConnected())
        {
            lobby.Enter(a);
        }
        else
        {
            Console.WriteLine("{0} disconnected while playing", a);
        }

        if (b.client.Client.IsConnected())
        {
            lobby.Enter(b);
        }
        else
        {
            Console.WriteLine("{0} disconnected while playing", b);
        }
    }
コード例 #2
0
        public void StartMatch(Client a, Client b)
        {
            Console.WriteLine("StartMatch({0}, {1})", a.name, b.name);
            a.symbol = Symbol.Circle;
            b.symbol = Symbol.Cross;

            Client[] players = new Client[2];

            if (random.NextDouble() < 0.5)
            {
                players[0] = a;
                players[1] = b;
            }
            else
            {
                players[0] = b;
                players[1] = a;
            }

            Console.WriteLine("First player is: ({0})", players[0].name);

            Console.WriteLine("Sending startMatch to player {0}", a.name);
            bool sentOk = Message.Util.Send(a.client.GetStream(), new Message.StartMatch((int)a.symbol, Array.IndexOf(players, a)));

            Console.WriteLine("send result? {0}", sentOk);

            Console.WriteLine("Sending startMatch to player {0}", b.name);
            sentOk = Message.Util.Send(b.client.GetStream(), new Message.StartMatch((int)b.symbol, Array.IndexOf(players, b)));
            Console.WriteLine("send result? {0}", sentOk);


            Game.Game newMatch = new Game.Game(players);

            Game.Result matchResult = newMatch.Play();
            GameOver(matchResult, a, b);
        }