Beispiel #1
0
        private void MenuItemFind_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                StopGameOnline();

                tcpClientOpponent = new TcpClient();
                tcpClientOpponent.Connect(GameIPConfig.ServerIPAddress, GameIPConfig.Port);

                byte[]        data   = new byte[256];
                NetworkStream stream = tcpClientOpponent.GetStream();
                int           bytes;

                MenuItemsToggle(false);

                // open waitwindow to wait opponent
                WaitWindow waitWindow = new WaitWindow()
                {
                    Owner = this, Message = "Searching for an opponent"
                };
                bool cancelation = true;
                Task.Run(() =>
                {
                    try
                    {
                        do
                        {
                            bytes = stream.Read(data, 0, data.Length);

                            if (bytes == 1 && data[0] == readyPacket)
                            {
                                this.Dispatcher.Invoke(() =>
                                {
                                    cancelation = false;
                                    waitWindow.Close();
                                    playingOnServer = true;
                                    connectionSuccessful();
                                });
                            }
                        } while (stream.DataAvailable);
                    }
                    catch (Exception ex) { }
                });
                waitWindow.Closing += (sendr, ev) => { if (cancelation)
                                                       {
                                                           tcpClientOpponent.Close(); MenuItemsToggle(true);
                                                       }
                };
                waitWindow.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }
        }
Beispiel #2
0
        private void BtnStart()
        {
            if (isConnected)
            {
                string number = getTextboxNumberValue();
                if (number.Length < HiddenNumber.LENGTH || findRepeats(number))
                {
                    showPopup("Please enter 4 different numbers!", 2500);
                    return;
                }

                answerNumber = new HiddenNumber(number);

                if (MenuItem_YourNumber.Items.Count > 0)
                {
                    (MenuItem_YourNumber.Items[0] as MenuItem).Header = number;
                    MenuItem_YourNumber.Visibility = Visibility.Visible;
                }

                NetworkStream networkStream = tcpClientOpponent.GetStream();
                if (!playingOnServer)
                {
                    //  одновременный старт
                    networkStream.Write(new byte[] { readyPacket }, 0, 1);
                }
                else
                {
                    byte[] data = Encoding.Unicode.GetBytes(number);
                    networkStream.Write(data, 0, data.Length);
                }

                if (opponentIsReady)
                {
                    StartGame();
                    if (TURN_MODE)
                    {
                        opponentTurn();
                    }
                }
                else
                {
                    WaitWindow waitWindow = new WaitWindow()
                    {
                        Owner = this,
                        Title = "Please wait your opponent", Message = "Please wait your opponent"
                    };
                    waitWindow.ShowDialog();
                }
            }
            else
            {
                SingleGameStart();
            }
        }
Beispiel #3
0
        void waitForConnect()
        {
            try
            {
                TcpListener server = new TcpListener(IPAddress.Any, GameIPConfig.Port);

                server.Start();

                WaitWindow waitWindow = new WaitWindow()
                {
                    Owner = this, Message = "Waiting for connection on port " + GameIPConfig.Port
                };
                Thread task = new Thread(() => {
                    while (tcpClientOpponent == null)
                    {
                        //	Console.WriteLine("Ожидание подключений... ");

                        try { tcpClientOpponent = server.AcceptTcpClient(); }
                        catch (Exception ex) { break; }
                        //	Console.WriteLine("Подключен клиент. Выполнение запроса...");

                        this.Dispatcher.Invoke(() => {
                            waitWindow.Close();
                            connectionSuccessful();
                        });
                    }
                });
                task.Start();
                waitWindow.Closing += (sender, e) => { server.Stop(); };
                waitWindow.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }
        }