示例#1
0
        public async Task <IHttpActionResult> PutBoardStats(int id, BoardStats BoardStats)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != BoardStats.BoardStatsNo)
            {
                return(BadRequest());
            }

            db.Entry(BoardStats).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!BoardStatsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#2
0
        public async Task <IHttpActionResult> GetBoardStats(int id)
        {
            BoardStats BoardStats = await db.BoardStats.FindAsync(id);

            if (BoardStats == null)
            {
                return(NotFound());
            }

            return(Ok(BoardStats));
        }
示例#3
0
        public async Task <IHttpActionResult> PostBoardStats(BoardStats BoardStats)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.BoardStats.Add(BoardStats);
            await db.SaveChangesAsync();

            return(CreatedAtRoute("DefaultApi", new { id = BoardStats.BoardStatsNo }, BoardStats));
        }
示例#4
0
        public async Task <IHttpActionResult> DeleteBoardStats(int id)
        {
            BoardStats BoardStats = await db.BoardStats.FindAsync(id);

            if (BoardStats == null)
            {
                return(NotFound());
            }

            db.BoardStats.Remove(BoardStats);
            await db.SaveChangesAsync();

            return(Ok(BoardStats));
        }
示例#5
0
        /// <summary>
        /// Construct the board
        /// </summary>
        /// <param name="graphicsDevice"></param>
        public Board(Screen screen)
        {
            Screen = screen;   

            // Create the board
            Blocks = new Block[Rows, Columns];
            for (int row = 0; row < Rows; row++)
            {
                for (int column = 0; column < Columns; column++)
                {
                    Blocks[row, column] = new Block(this, Screen, row, column);

                    // Only fill the first bottom Rows
                    if (row < initialEmptyRows)
                    {
                        Blocks[row, column].Empty();
                    }
                    else
                    {
                        Blocks[row, column].Create();
                    }
                }
            }

            // Create the next row of Blocks
            NextBlocks = new Block[Columns];
            for (int column = 0; column < Columns; column++)
            {
                NextBlocks[column] = new Block(this, Screen, Rows, column);
                NextBlocks[column].Create();
                NextBlocks[column].State = Block.BlockState.Preview;
            }

            CelebrationManager = new CelebrationManager(this);

            Renderer = new BoardRenderer(this);
            controller = new BoardController(this);
            Stats = new BoardStats(this);

            RaiseRate = (double)Stats.Level / 4;

            // Initialize buttons
            retryButton = new Button(screen, "Retry", Color.White, new Rectangle(Renderer.Rectangle.X + Renderer.Rectangle.Width / 4 - 50, Renderer.Rectangle.Y + Renderer.Rectangle.Height - 150, Renderer.Rectangle.Width / 4, 100), Color.Orange);
            retryButton.Selected += retryButton_Selected;

            doneButton = new Button(screen, "Done", Color.White, new Rectangle(Renderer.Rectangle.X + Renderer.Rectangle.Width / 2 + 50, Renderer.Rectangle.Y + Renderer.Rectangle.Height - 150, Renderer.Rectangle.Width / 4, 100), Color.Orange);
            doneButton.Selected += doneButton_Selected;
        }
示例#6
0
    public void TurnTaken()
    {
        // Check the board for few open positions to save compute time and
        // errors;
        _boardStats = BoardStats.CalcStats(_board);
        if (_boardStats[2] <= 3)
        {
            _depth = 1;
        }
        else if (_boardStats[2] <= 10)
        {
            _depth = 2;
        }

        _currentTurn = _currentTurn == 0 ? 1 : 0;

        if (WinCondition())
        {
            var go = (GameObject)Instantiate(FindObjectOfType <Setup>()._inGameSplash, new Vector3(0, 0, -20), Quaternion.identity);
            if (_boardStats[0] >= _boardStats[1])
            {
                go.GetComponentInChildren <GUIText>().text = "Black Wins! " + _boardStats[0] + ":" + _boardStats[1];
            }
            else
            {
                go.GetComponentInChildren <GUIText>().text = "White Wins! " + _boardStats[1] + ":" + _boardStats[0];
            }
        }

        _turnCount++;

        // AI makes a turn when 1
        if (_currentTurn == 1)
        {
            AIsTurn();
        }
    }