Пример #1
0
 private void ChancgeCellValue(Cell cell, int value)
 {
     cell.Invoke((MethodInvoker) delegate()
     {
         cell.SetTextByValue(value);
     });
 }
Пример #2
0
        public void Button_Clicked(object sender, EventArgs e)
        {
            Cell clickedCell = sender as Cell;

            if (clickedCell.GetValue() != 0)
            {
                return;
            }
            clickedCell.SetTextByValue(2);
            int isThrereAWinner = Board.IsThrereAWinner(board.GetValues());

            if (isThrereAWinner == 2)
            {
                MessageBox.Show("You won!");
                board.Reset();
                return;
            }
            else if (isThrereAWinner == 1)
            {
                MessageBox.Show("Tie");
                board.Reset();
                return;
            }

            GetBestCellToPlay().SetTextByValue(1);
            isThrereAWinner = Board.IsThrereAWinner(board.GetValues());
            if (isThrereAWinner == 2)
            {
                MessageBox.Show("You lost!");
                board.Reset();
            }
            else if (isThrereAWinner == 1)
            {
                MessageBox.Show("Tie");
                board.Reset();
            }
        }
Пример #3
0
        public void Button_Clicked(object sender, EventArgs e)
        {
            if (!canPlay)
            {
                return;
            }
            if (!IsClientConnected())
            {
                MessageBox.Show("Lost connection");
                CloseAll();
            }
            Cell clickedCell = sender as Cell;

            if (clickedCell.GetValue() != 0)
            {
                return;
            }
            this.board.DisableAll();
            SetInfoLabelText("Opponents turn");
            clickedCell.SetTextByValue(isO ? 2 : 1);
            int whoWins = Board.IsThrereAWinner(board.GetValues());

            if (whoWins == 2)
            {
                byte[] buffer = new byte[2] {
                    100, (byte)clickedCell.GetIndex()
                };
                this.stream.Write(buffer, 0, 2);
                MessageBox.Show("You Won!");
                Reset();
                return;
            }
            else if (whoWins == 1)
            {
                byte[] buffer = new byte[2] {
                    99, (byte)clickedCell.GetIndex()
                };
                this.stream.Write(buffer, 0, 2);
                MessageBox.Show("Tie");
                Reset();
                return;
            }
            byte[] bufferIndex = new byte[2] {
                (byte)clickedCell.GetIndex(), 0
            };

            this.stream.Write(bufferIndex, 0, 2);

            byte[]           recivedBuffer = new byte[2];
            BackgroundWorker worker        = new BackgroundWorker();

            worker.DoWork += (s, a) =>
            {
                try
                {
                    this.stream.Read(recivedBuffer, 0, 2);
                }
                catch (Exception)
                {
                    recivedBuffer[0] = 202;
                }
            };
            worker.RunWorkerCompleted += (s, a) =>
            {
                if (recivedBuffer[0] == 202)
                {
                    MessageBox.Show("Opponenet disconnected, you won!");
                    CloseAll();
                }
                if (recivedBuffer[0] == 100)
                {
                    board.GetCellByIndex(recivedBuffer[1]).SetTextByValue(isO ? 1 : 2);
                    MessageBox.Show("You Lost :(");
                    Reset();
                    return;
                }
                else if (recivedBuffer[0] == 99)
                {
                    board.GetCellByIndex(recivedBuffer[1]).SetTextByValue(isO ? 1 : 2);
                    MessageBox.Show("Tie");
                    Reset();
                    return;
                }
                else
                {
                    board.GetCellByIndex(recivedBuffer[0]).SetTextByValue(isO ? 1 : 2);
                }
                SetInfoLabelText("Your turn");
                this.board.EnableAll();
            };
            worker.RunWorkerAsync();
        }