Esempio n. 1
0
        /// <summary>
        /// Update the board itself to reflect the changes made to Ghosts'
        /// positions over time.
        /// </summary>
        /// <param name="ghost"> Ghost who will be put on the board's layer
        /// </param>
        public void UpdateGhostOnBoard(GhostObject ghost)
        {
            IBoardObject[] currentSpace;

            Board.TryGetValue(ghost.Position, out currentSpace);

            if (currentSpace[1] != null)
            {
                currentSpace[1] = null;
            }
            currentSpace[1] = ghost;

            RenderInfo.UpdateBoardDraw(Board);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates the board in it's inicial state.
        /// </summary>
        public GameBoard()
        {
            RedDummy    = new PortalDummyGhost(Colors.RED);
            BlueDummy   = new PortalDummyGhost(Colors.BLUE);
            YellowDummy = new PortalDummyGhost(Colors.YELLOW);

            // With (0,0) being the Bottom-Left of the screen
            // However in the console window it is the Top-Left


            // WALLS

            // Top Horizontal Wall
            for (int i = 1; i < 6; i++)
            {
                Board.Add(new Vector(i, 0), new IBoardObject[3]
                {
                    new CarpetTile(Colors.BLOCK), null, null
                });
            }

            // Bottom Horizontal Wall
            for (int i = 1; i < 6; i++)
            {
                Board.Add(new Vector(i, 6), new IBoardObject[3]
                {
                    new CarpetTile(Colors.BLOCK), null, null
                });
            }

            // Left Vertical Wall
            for (int i = 0; i <= 6; i++)
            {
                Board.Add(new Vector(0, i), new IBoardObject[3]
                {
                    new CarpetTile(Colors.BLOCK), null, null
                });
            }



            // Right Vertical Wall
            for (int i = 0; i <= 6; i++)
            {
                Board.Add(new Vector(6, i), new IBoardObject[3]
                {
                    new CarpetTile(Colors.BLOCK), null, null
                });
            }

            // PORTALS

            IBoardObject[] gridSpace;
            // Bottom Portal
            Board.Add(new Vector(3, 1), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLOCK | Colors.BLUE), null, null
            });

            // Corresponding dummy ghost.
            Board.TryGetValue(new Vector(3, 0), out gridSpace);
            gridSpace[2]       = BlueDummy;
            BlueDummy.Position = new Vector(3, 0);


            // Right Portal
            Board.Add(new Vector(5, 3), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLOCK | Colors.YELLOW), null, null
            });

            // Corresponding dummy ghost.
            Board.TryGetValue(new Vector(6, 3), out gridSpace);
            gridSpace[2]         = YellowDummy;
            YellowDummy.Position = new Vector(6, 3);

            // Top Portal
            Board.Add(new Vector(3, 5), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLOCK | Colors.RED), null, null
            });

            // Corresponding dummy ghost.
            Board.TryGetValue(new Vector(3, 6), out gridSpace);
            gridSpace[2]      = RedDummy;
            RedDummy.Position = new Vector(3, 6);


            // CARPETS

            // Top Row
            Board.Add(new Vector(1, 5), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });
            Board.Add(new Vector(2, 5), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });
            Board.Add(new Vector(4, 5), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });
            Board.Add(new Vector(5, 5), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });

            // 4th Row
            Board.Add(new Vector(1, 4), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });
            Board.Add(new Vector(2, 4), new IBoardObject[3]
            {
                new MirrorTile(), null, null
            });
            Board.Add(new Vector(3, 4), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });
            Board.Add(new Vector(4, 4), new IBoardObject[3]
            {
                new MirrorTile(), null, null
            });
            Board.Add(new Vector(5, 4), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });

            // 3rd Row
            Board.Add(new Vector(1, 3), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });
            Board.Add(new Vector(2, 3), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });
            Board.Add(new Vector(3, 3), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });
            Board.Add(new Vector(4, 3), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });

            // 2nd Row
            Board.Add(new Vector(1, 2), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });
            Board.Add(new Vector(2, 2), new IBoardObject[3]
            {
                new MirrorTile(), null, null
            });
            Board.Add(new Vector(3, 2), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });
            Board.Add(new Vector(4, 2), new IBoardObject[3]
            {
                new MirrorTile(), null, null
            });
            Board.Add(new Vector(5, 2), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });

            // 1st Row
            Board.Add(new Vector(1, 1), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });
            Board.Add(new Vector(2, 1), new IBoardObject[3]
            {
                new CarpetTile(Colors.RED), null, null
            });
            Board.Add(new Vector(4, 1), new IBoardObject[3]
            {
                new CarpetTile(Colors.BLUE), null, null
            });
            Board.Add(new Vector(5, 1), new IBoardObject[3]
            {
                new CarpetTile(Colors.YELLOW), null, null
            });



            IBoardObject[] tile;
            // Update the position properties in the tiles themselves
            for (int x = 0; x < 7; x++)
            {
                for (int y = 0; y < 7; y++)
                {
                    Board.TryGetValue(new Vector(x, y), out tile);

                    tile[0].Position = new Vector(x, y);
                }
            }


            RenderInfo.UpdateBoardDraw(Board);
        }