예제 #1
0
        private void SetValue(int minterm, Enums.eCellValue value)
        {
            if (mode == Enums.eEditMode.Edit)
            {
                switch (value)
                {
                case Enums.eCellValue.Zero:
                    if (!zeros.Contains(minterm))
                    {
                        zeros.Add(minterm);
                    }

                    if (ones.Contains(minterm))
                    {
                        ones.Remove(minterm);
                    }

                    break;

                case Enums.eCellValue.One:
                    if (zeros.Contains(minterm))
                    {
                        zeros.Remove(minterm);
                    }

                    if (!ones.Contains(minterm))
                    {
                        ones.Add(minterm);
                    }

                    break;

                case Enums.eCellValue.DontCare:
                    if (!zeros.Contains(minterm))
                    {
                        zeros.Add(minterm);
                    }

                    if (!ones.Contains(minterm))
                    {
                        ones.Add(minterm);
                    }

                    break;

                case Enums.eCellValue.Undefined:
                    if (zeros.Contains(minterm))
                    {
                        zeros.Remove(minterm);
                    }

                    if (ones.Contains(minterm))
                    {
                        ones.Remove(minterm);
                    }

                    break;
                }
            }
        }
예제 #2
0
 private bool isPlayerEndedGame(GameCell i_GameCell,
                                Enums.eCellValue i_WantedCellState)
 {
     return(rowEnded(i_GameCell, i_WantedCellState) ||
            columnEnded(i_GameCell, i_WantedCellState) ||
            diagonalEnded(i_GameCell, i_WantedCellState));
 }
예제 #3
0
        private bool rowEnded(GameCell i_GameCell, Enums.eCellValue i_WantedCellState)
        {
            bool result = true;

            for (int i = 0; i < BoradSize; i++)
            {
                if (i_GameCell != BoradGameCells[i, i_GameCell.ColumnIndex] &&
                    BoradGameCells[i, i_GameCell.ColumnIndex].Value != i_WantedCellState)
                {
                    result = false;
                    break;
                }
            }
            return(result);
        }
예제 #4
0
파일: BoardGame.cs 프로젝트: devkhan/Ex02
 internal void SetCellState(GameCell i_GameCell, Enums.eCellValue i_TheState)
 {
     i_GameCell.Value = i_TheState;
     if (i_TheState == Enums.eCellValue.Blank)
     {
         if (!FreeCellsList.Contains(i_GameCell))
         {
             FreeCellsList.Add(i_GameCell);
         }
     }
     else
     {
         LastSelectedCell = i_GameCell;
         FreeCellsList.Remove(i_GameCell);
     }
 }
예제 #5
0
        private bool diagonalEnded(GameCell i_GameCell, Enums.eCellValue i_WantedCellState)
        {
            bool firstDiagonalIsTrue = true, secondDiagonal = true;

            if (i_GameCell.RowIndex == i_GameCell.ColumnIndex)
            {
                for (int i = 0; i < BoradSize; i++)
                {
                    if (i_GameCell != BoradGameCells[i, i] && BoradGameCells[i, i].Value != i_WantedCellState)
                    {
                        firstDiagonalIsTrue = false;
                        break;
                    }
                }
            }
            else
            {
                firstDiagonalIsTrue = false;
            }
            if (i_GameCell.RowIndex + i_GameCell.ColumnIndex == BoradSize - 1)
            {
                for (int i = 0; i < BoradSize; i++)
                {
                    if (i_GameCell != BoradGameCells[i, BoradSize - 1 - i] &&
                        BoradGameCells[i, BoradSize - 1 - i].Value != i_WantedCellState)
                    {
                        secondDiagonal = false;
                        break;
                    }
                }
            }
            else
            {
                secondDiagonal = false;
            }
            return(firstDiagonalIsTrue || secondDiagonal);
        }
예제 #6
0
 private void setCellState(GameCell i_GameCell)
 {
     Enums.eCellValue cellState = CurrentPlayerTurn == Enums.ePlayer.PlayerOne
         ? k_PlayerOneValue : k_PlayerTwoValue;
     r_BoardGame.SetCellState(i_GameCell, cellState);
 }