Beispiel #1
0
        public static Vector2 SetBitPosition(Room MyRoom)
        {
            int x, y;

            x = 10 + (40 * ((MyRoom.ChamberNumber - 1) % 3));
            y = 10 + (40 * ((MyRoom.ChamberNumber - 1) / 3));

            switch (MyRoom.RoomNumber)
            {
                case 0:
                    break;
                case 1:
                    x += 5; y -= 10;
                    break;

                case 2:
                    x += 20; y += 5;
                    break;

                case 3:
                    x += 5; y += 20;
                    break;

                case 4:
                    x -= 10; y += 5;
                    break;
            }

            return new Vector2(x, y);
        }
Beispiel #2
0
        public Vector2 SetBitPositionNonStatic(Room MyRoom)
        {
            int x, y;

            x = 10 + (40 * ((MyRoom.ChamberNumber - 1) % 3));
            y = 10 + (40 * ((MyRoom.ChamberNumber - 1) / 3));

            switch (MyRoom.RoomNumber)
            {
                case 0:
                    break;
                case 1:
                    x += 5; y -= 10;
                    break;

                case 2:
                    x += 20; y += 5;
                    break;

                case 3:
                    x += 5; y += 20;
                    break;

                case 4:
                    x -= 10; y += 5;
                    break;
            }

            return new Vector2(MiniMapPos.X + buffer.X + x, MiniMapPos.Y + buffer.Y + y);
        }
Beispiel #3
0
        /// <summary>
        /// Generates array of connected rooms based on current location
        /// </summary>
        /// <param name="location"> Current location represented as a decimal (chamberNumber.roomNumber) </param> 
        /// <returns></returns>
        public Room[] loadCaveandRoom(double location)
        {
            String[] mapInfo = File.ReadAllLines(address);

            int chamberNumber = (int) location;
            int roomNumber = (int) ( ( (location - chamberNumber) * 10.0) + 0.5 );

            Room[] myRooms = new Room[9];

            for (int i = 0; i < myRooms.Length; i++)
            {
                myRooms[i] = null;
            }

            for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
            {
                myRooms[i] = new Room(0, 0);
            }

            if (roomNumber == 0)
            {
                for (int i = 1; i < 5; i++)
                {
                    myRooms[i] = new Room(chamberNumber, i);
                }
            }

            else
            {
                switch (roomNumber)
                {
                    case 1:
                        myRooms[2] = myRooms[4] = null;
                        myRooms[3].setRoomFromDecimal(chamberNumber);
                        break;
                    case 2:
                        myRooms[1] = myRooms[3] = null;
                        myRooms[4].setRoomFromDecimal(chamberNumber);
                        break;
                    case 3:
                        myRooms[2] = myRooms[4] = null;
                        myRooms[1].setRoomFromDecimal(chamberNumber);
                        break;
                    case 4:
                        myRooms[1] = myRooms[3] = null;
                        myRooms[2].setRoomFromDecimal(chamberNumber);
                        break;
                }

                string temp1 = mapInfo[(chamberNumber - 1) * 4 + (roomNumber - 1)];
                String[] temp2 = temp1.Split(' ', '\t');
                temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();
                myRooms[roomNumber].setRoomFromDecimal(Convert.ToDouble(temp2[1]));
            }

            return myRooms;
        }
Beispiel #4
0
 public MiniMapBit(Vector2 theMiniPos, Room NewRoom)
 {
     this.MiniMapPos = theMiniPos;
     this.ThisRoom = NewRoom;
     if (ThisRoom.RoomNumber == 0)
     {
         AssetName = "MiniMapFiles\\Chamber";
     }
     else
     {
         AssetName = "MiniMapFiles\\Room";
     }
     Position = SetBitPositionNonStatic(ThisRoom);
 }
Beispiel #5
0
        /// <summary>
        /// Generates array of connected rooms based on current location
        /// </summary>
        /// <param name="location"> Current location represented as a decimal (chamberNumber.roomNumber) </param> 
        /// <returns></returns>
        public Room[] getConnectedRooms(double location)
        {
            String[] mapInfo = File.ReadAllLines(address);

            int chamberNumber = (int) location;
            int roomNumber = (int) ( ( (location - chamberNumber) * 10.0) + 0.5 );

            Room[] myRooms = new Room[NUMB_OF_ROOMS + 1];

            if (roomNumber == 0)
            {
                for (int i = 1; i < 5; i++)
                {
                    myRooms[i] = new Room(chamberNumber, i);
                }
            }

            else
            {
                switch (roomNumber)
                {
                    case 1:
                        myRooms[2] = myRooms[4] = null;
                        myRooms[3] = new Room(chamberNumber, 0);
                        break;
                    case 2:
                        myRooms[1] = myRooms[3] = null;
                        myRooms[4] = new Room(chamberNumber, 0);
                        break;
                    case 3:
                        myRooms[2] = myRooms[4] = null;
                        myRooms[1] = new Room(chamberNumber, 0);
                        break;
                    case 4:
                        myRooms[1] = myRooms[3] = null;
                        myRooms[2] = new Room(chamberNumber, 0);
                        break;
                }

                string temp1 = mapInfo[(chamberNumber - 1) * 4 + (roomNumber - 1)];
                String[] temp2 = temp1.Split(' ', '\t');
                temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();
                myRooms[roomNumber] = new Room(Convert.ToDouble(temp2[1]));
            }

            return myRooms;
        }
Beispiel #6
0
        /*
        // map object passes information about current location to cave object
        // this function generates connectivity info
        public String loadCaveandRoom (double location)
        {
            String[] mapInfo = File.ReadAllLines(@"C:\Users\jains\Documents\CaveFiles\MapDataCave1.txt");
            String connectivityInfo = "";

            int chamberNumber = (int) location;
            int roomNumber = (int) ( ( (location - chamberNumber) * 10.0) + 0.5 );

            char chamberGate = ' ';
            char externalGate = ' ';

            switch (roomNumber)
            {
                case 1:
                    chamberGate = 'S'; externalGate = 'N';
                    break;
                case 2:
                    chamberGate = 'W'; externalGate = 'E';
                    break;
                case 3:
                    chamberGate = 'N'; externalGate = 'S';
                    break;
                case 4:
                    chamberGate = 'E'; externalGate = 'W';
                    break;
            }

            connectivityInfo = chamberGate + " gate: Chamber " + chamberNumber;

            string temp1 = mapInfo[ (chamberNumber - 1) * 4 + (roomNumber - 1) ];
            String[] temp2 = temp1.Split(' ', '\t');
            temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();
            connectivityInfo += Environment.NewLine + externalGate + " gate: " + temp2[1];

            return connectivityInfo;
        }
        */
        // map object passes information about current location to cave object
        // this function generates connectivity info
        public Room[] loadCaveandRoom(double location)
        {
            String[] mapInfo = File.ReadAllLines(@"C:\Users\jains\Documents\CaveFiles\MapDataCave1.txt");
            String connectivityInfo = "";

            int chamberNumber = (int) location;
            int roomNumber = (int) ( ( (location - chamberNumber) * 10.0) + 0.5 );

            char chamberGate = ' ';
            char externalGate = ' ';

            Room[] myRooms = new Room[5];
            myRooms[0] = null;

            switch (roomNumber)
            {
                case 1:
            myRooms[2] = myRooms[4] = null;
                    myRooms[3].setDecimalNumber(ChamberNumber);
                    break;
                case 2:
            myRooms[1] = myRooms[3] = null;
                    myRooms[4].setDecimalNumber(ChamberNumber);
                    break;
                case 3:
            myRooms[2] = myRooms[4] = null;
                    myRooms[1].setDecimalNumber(ChamberNumber);
                    break;
                case 4:
            myRooms[1] = myRooms[3] = null;
                    myRooms[2].setDecimalNumber(ChamberNumber);
                    break;
            }

            string temp1 = mapInfo[ (chamberNumber - 1) * 4 + (roomNumber - 1) ];
            String[] temp2 = temp1.Split(' ', '\t');
            temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();
            myRooms[roomNumber].setDecimalNumber( temp2[1] );

            return myRooms;
        }
Beispiel #7
0
 public void newMap(int difficulty)
 {
     map = new Room[30];
     String difficultStr = difficultyText.Text;
     int difficult = 5 + (Convert.ToInt32(difficultStr)*5);
     for (int i = 0; i < map.Length; i++)
     {
         map[i] = new Room();
     }
     for (int i = 0; i < difficult; i++)
     {
         int tempRoom = gen.Next(30);
         while (map[tempRoom].getContents() == -1)
         {
             tempRoom = gen.Next(30);
         }
         map[tempRoom].setContents(-1);
     }
     int wumpusRoom = gen.Next(30);
     map[wumpusRoom].setWumpus(true);
 }
Beispiel #8
0
        // map object passes information about current location to cave object
        // this function generates connectivity info
        public String loadCaveandRoom(double location)
        {
            String[] mapInfo = File.ReadAllLines(address);
            String connectivityInfo = "";

            /* /int chamberNumber = (int) location;
            int roomNumber = (int) ( ( (location - chamberNumber) * 10.0) + 0.5 );
             *
             */

            Room MyRoom = new Room(location);

            char chamberGate = ' ';
            char externalGate = ' ';

            switch (MyRoom.RoomNumber)
            {
                case 1:
                    chamberGate = 'S'; externalGate = 'N';
                    break;
                case 2:
                    chamberGate = 'W'; externalGate = 'E';
                    break;
                case 3:
                    chamberGate = 'N'; externalGate = 'S';
                    break;
                case 4:
                    chamberGate = 'E'; externalGate = 'W';
                    break;
            }

            connectivityInfo = chamberGate + " gate: Chamber " + MyRoom.ChamberNumber;

            string temp1 = mapInfo[(MyRoom.ChamberNumber - 1) * 4 + (MyRoom.RoomNumber - 1)];
            String[] temp2 = temp1.Split(' ', '\t');
            temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();
            connectivityInfo += Environment.NewLine + externalGate + " gate: " + temp2[1];

            return connectivityInfo;
        }
Beispiel #9
0
 // for player: use for bats and for beginning
 // for wumpus: use for teleport and beginning
 public bool randomizeCharacterRoom(int temp, Room[] adjacentRooms, char c)
 {
     for (int i = 0; i < adjacentRooms.Length; i++)
     {
         if (adjacentRooms[i] != null)
         {
             if (isRoomNotOkay(adjacentRooms[i], c))
             {
                 return true;
             }
         }
     }
     return false;
 }
Beispiel #10
0
 public bool randomizeRoom(int temp, Room[] adjacentRooms, char p)
 {
     return true;
 }
Beispiel #11
0
        public Room moveInDirection(Direction d)
        {
            Room adjacentRoom = new Room(0, 0);

            if (GameState == Gstate.Menu)
            {
                // The user is in-menu.
                //Console.Out.WriteLine("");
            }
            else if (GameState == Gstate.Game)
            {
                // The user is in-game.
                // Call map to see what room and chamber player is in.
                Room MyRoom = MyMap.getPlayerRoom();
                // Call map to set adjacent rooms
                MyMap.setAdjacentRooms(MyCave.loadCaveandRoom(MyRoom.getDecimalForm()));
                // Call cave to see what room is adjacent, in given direction.
                adjacentRoom = MyMap.getAdjacentRooms()[(int)d]; /*c.getConnectedExteralRoom(1, room);*/;

                // Call map to see if the room in given direction is hazardous.
                //      If is pitted:
                if(adjacentRoom.isRoomPitted())
                    EncounterPit();
                //      If it contains Wumpus:
                if (adjacentRoom == MyMap.getWumpusRoom())
                    EncounterWumpus();
                // Actually move to the room.
                if (adjacentRoom != null)
                {
                    MyMap.setPlayerRoom(adjacentRoom);
                    // Returns player to center:
                    ////MyPlayer.Position = new Vector2(RoomSize.Center.X, RoomSize.Center.Y);
                    // OR, more realistically, the opposite side:
                    MyPlayer.Position = getEntryLocationFrom((Direction)((((int)d + 1) % 4) + 1), MyPlayer.Position);
                }
            }

            return adjacentRoom;
        }
Beispiel #12
0
 public void setWumpusRoom(int theWumpusRoom)
 {
     this.wumpusRoomInt = theWumpusRoom;
     this.wumpusRoom = new Room(theWumpusRoom);
 }
Beispiel #13
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            KBState = Keyboard.GetState();

            // In Menu
            if (MyGameControl.GameState == GameControl.Gstate.Menu)
            {
                if (MyControls == Controls.Keyboard || MyControls == Controls.Mouse)
                {
                    if (KBState.IsKeyDown(Keys.A))
                    {
                        CursorRight.AssetName = "ScreenPointers\\AnimatedCursor16";
                        CursorRight.UpdateFrame((float)gameTime.ElapsedGameTime.TotalSeconds);
                    }
                    else
                    {
                        CursorRight.AssetName = "ScreenPointers\\Cursor2";
                        CursorRight.FrameNumber = 0;
                    }
                    UpdateMouseClicks(MState);
                }
                else if (MyControls == Controls.Kinect)
                {
                    CursorRight.AssetName = "ScreenPointers\\Cursor2";
                    UpdateKinectClicks();
                }

            }
            // In Game
            if (MyGameControl.GameState == GameControl.Gstate.Game)
            {
                // Input:
                //      Keyboard and Mouse
                if (MyControls != Controls.Kinect)
                {
                    UpdateMouseCursor();
                    if (KBState.IsKeyDown(Keys.Space))
                    {
                        MyGameControl.PlayerMode = GameControl.PlayerState.Arrow;
                        CursorRight.AssetName = "ScreenPointers\\crosshair2";
                    }
                    else
                    {
                        MyGameControl.PlayerMode = GameControl.PlayerState.Movement;
                        CursorRight.AssetName = "ScreenPointers\\Cursor2";
                    }
                }
                if(MyGameControl.PlayerMode == GameControl.PlayerState.Movement)
                {
                    //      Keyboard
                    if (MyControls == Controls.Keyboard)
                    {
                        UpdateKBMovement(KBState);
                    }
                    //      Kinect and Mouse
                    if (MyControls != Controls.Keyboard)
                    {
                        UpdateMovement();
                    }
                }
                //      Mouse, Kinect, and Keyboard
                UpdateAngle();

                // Shooting
                if (MyGameControl.PlayerMode == GameControl.PlayerState.Arrow)
                {

                }

                // Entering rooms
                if (isInNSThreshold() || isInEWThreshold())
                {
                    MyGameControl.isPlayerAtDoor = true;
                    CurrentRoom = MyGameControl.moveInDirection((GameControl.Direction)(int)(getDirectionFromXY(MyGameControl.MyPlayer.Position)));
                    /*CurrentRoom.AssetName = "Rooms\\" + MyGameControl.MyMap.getPlayerRoom().ChamberNumber + "-" + MyGameControl.MyMap.getPlayerRoom().RoomNumber;
                    CurrentRoom.LoadContent(this.Content);*/
                }
                else
                {
                    MyGameControl.isPlayerAtDoor = false;
                }
                // Full Screen mode
                if (KBState.IsKeyDown(Keys.F11))
                {
                    if (graphics.IsFullScreen)
                        graphics.IsFullScreen = false;
                    else
                        graphics.IsFullScreen = true;
                    graphics.ApplyChanges();
                }
                if (MyGameControl.MyMap.getPlayerRoom().getIntegerForm() == MyGameControl.MyMap.getWumpusRoom())
                    return;
            }
            base.Update(gameTime);

            float myTheta = MyGameControl.MyPlayer.newTheta;
        }
Beispiel #14
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            KBState = Keyboard.GetState();

            // In Menu
            if (MyGameControl.GameState == GameControl.Gstate.Menu)
            {
                //if (MyGameControl.isMusicOn)
                //    MyGameControl.MySound.PlayMenu();
                //else
                //    MediaPlayer.Stop();
                if (MyControls == Controls.Keyboard || MyControls == Controls.Mouse)
                {
                    // Animating
                    if (KBState.IsKeyDown(Keys.A))
                    {
                        CursorRight.AssetName = "ScreenPointers\\AnimatedCursor16";
                        CursorRight.UpdateFrame((float)gameTime.ElapsedGameTime.TotalSeconds);
                    }
                    else
                    {
                        CursorRight.AssetName = "ScreenPointers\\Cursor2";
                        CursorRight.FrameNumber = 0;
                    }
                    // All mouse clicks related to the menu
                    UpdateMouseClicks(MState);
                }
                else if (MyControls == Controls.Kinect)
                {
                    CursorRight.AssetName = "ScreenPointers\\Cursor2";
                    UpdateKinectClicks(gameTime);
                }

                UpdateButtonIgnitesMenu();

            }
            else if (MyGameControl.GameState == GameControl.Gstate.PreGame)
            {
                UpdateMouseClicks(MState);
            }
            // In Game
            if (MyGameControl.GameState == GameControl.Gstate.Game)
            {
                // Input:
                //      Mouse
                if (MyControls == Controls.Mouse)
                {
                    UpdateMouseClicks(MState);

                    if (KBState.IsKeyDown(Keys.Space))
                    {
                        MyGameControl.PlayerMode = GameControl.PlayerState.Arrow;
                    }
                    else if (!MyGameControl.isTrivia)
                    {
                        MyGameControl.PlayerMode = GameControl.PlayerState.Movement;
                    }

                    // Shooting
                    if (MyGameControl.PlayerMode == GameControl.PlayerState.Arrow)
                    {
                        MyGameControl.MyPlayer.MyArrow.theta = MyGameControl.MyPlayer.theta;
                        if(MyGameControl.isShooting)
                            MyGameControl.MyPlayer.ShootArrow();
                        if (!MyGameControl.canMove(MyGameControl.MyPlayer.MyArrow, 0, 0, CurrentRoom) && MyGameControl.isShooting)
                        {
                            MyGameControl.shoot(getDirectionFromMouse(new Vector2(MState.X, MState.Y)));
                            MyGameControl.isShooting = false;
                        }
                    }
                    if(!MyGameControl.isShooting || !KBState.IsKeyDown(Keys.Space))
                        MyGameControl.MyPlayer.ResetArrow();
                }
                //      Keyboard
                if (MyControls == Controls.Keyboard)
                {
                    if (MyGameControl.PlayerMode == GameControl.PlayerState.Movement)
                    {
                        UpdateKBMovement(KBState);
                    }
                    if (!MyGameControl.isShooting || !KBState.IsKeyDown(Keys.Space))
                        MyGameControl.MyPlayer.ResetArrow();

                    UpdateMouseClicks(MState);
                }
                //      Kinect and Mouse
                if (MyControls != Controls.Keyboard)
                {
                    if (MyGameControl.PlayerMode == GameControl.PlayerState.Movement)
                    {
                        UpdateMovement();
                    }
                }
                // Just Kinect
                if (MyControls == Controls.Kinect)
                {
                    if (MyGameControl.PlayerMode == GameControl.PlayerState.Arrow)
                    {
                        MyGameControl.MyPlayer.MyArrow.theta = MyGameControl.MyPlayer.theta;
                        if (MyGameControl.isShooting)
                            MyGameControl.MyPlayer.ShootArrow();
                        if (!MyGameControl.canMove(MyGameControl.MyPlayer.MyArrow, 0, 0, CurrentRoom) && MyGameControl.isShooting)
                        {
                            MyGameControl.shoot(getDirectionFromArrow());
                            MyGameControl.isShooting = false;
                        }
                    }
                    if (!MyGameControl.isShooting)
                        MyGameControl.MyPlayer.ResetArrow();

                    UpdateKinectClicks(gameTime);
                }

                //      Mouse, Kinect, and Keyboard
                UpdateAngle();
                if (MyGameControl.PlayerMode == GameControl.PlayerState.Trivia)
                {
                    MyWatch.Stop();
                }
                else if(!MyWatch.IsRunning)
                {
                    MyWatch.Start();
                }

                // Entering rooms
                if ((isInNSThreshold() || isInEWThreshold()) && MyGameControl.PlayerMode != GameControl.PlayerState.Trivia)
                {
                    MyGameControl.isPlayerAtDoor = true;
                    CurrentRoom = MyGameControl.moveInDirection((GameControl.Direction)(int)(getDirectionFromXY(MyGameControl.MyPlayer.Position)));
                    MyGameControl.MyPlayer.setScore(MyGameControl.hs.scoreCalculator(MyGameControl.MyMap.moves, MyGameControl.MyPlayer.getGold(), MyGameControl.MyPlayer.getArrows()));
                    /*CurrentRoom.AssetName = "Rooms\\" + MyGameControl.MyMap.getPlayerRoom().ChamberNumber + "-" + MyGameControl.MyMap.getPlayerRoom().RoomNumber;
                    CurrentRoom.LoadContent(this.Content);*/
                }
                else
                {
                    MyGameControl.isPlayerAtDoor = false;
                }

                // Full Screen mode
                if (KBState.IsKeyDown(Keys.F11))
                {
                    if (graphics.IsFullScreen)
                        graphics.IsFullScreen = false;
                    else
                        graphics.IsFullScreen = true;
                    graphics.ApplyChanges();
                }

                if (MyGameControl.shouldResetRoom)
                {
                    CurrentRoom = MyGameControl.MyMap.getPlayerRoom();
                    //MyGameControl.shouldResetRoom = false;
                }
                if (MyGameControl.MyPlayer.getArrows() <= 0)
                {
                    EndGame(1);
                }
            }
            else if (MyGameControl.GameState == GameControl.Gstate.EndGame)
            {
                UpdateMouseCursor();
                if (MyMenu.ExitGameButton.isOver(new Vector2(MState.X, MState.Y)) && MState.LeftButton == ButtonState.Pressed)
                    ExitButtonClick();
            }
            base.Update(gameTime);

            float myTheta = MyGameControl.MyPlayer.newTheta;
        }
Beispiel #15
0
 private void WonPitBattle()
 {
     MyGameControl.setInitialRoom();
     MyGameControl.moveTo(MyGameControl.MyMap.getPlayerRoom(), GameControl.Direction.North);
     CurrentRoom = MyGameControl.MyMap.getPlayerRoom();
     MyGameControl.PlayerMode = GameControl.PlayerState.Movement;
     winningMessage = true;
     TempWatch.Start();
 }
Beispiel #16
0
        // map object passes information about current location to cave object
        // this function generates connectivty info
        public Room[] loadCaveandRoom(double location)
        {
            String[] mapInfo = File.ReadAllLines(@"C:\Users\jains\Documents\CaveFiles\MapDataCave3.txt");
            String connectivityInfo = "";

            int chamberNumber = (int) location;
            int roomNumber = (int)(((location - chamberNumber) * 10.0) + 0.5);

            char chamberGate = ' ';
            char externalGate = ' ';

            Room[] myRooms = new Room[5];
            myRooms[0] = null;

            for (int i=0; i<mapInfo.length; i++)
            {
            String temp1 = mapInfo[i];
            String[] temp2 = temp1.split(' ', '\t');
                temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();

                if (temp2[0] == location)
              break;
            }

            if (chamberNumber < 8)
            {
                switch (roomNumber)
                {
                    case 1:
                myRooms[2] = myRooms[4] = null;
                        myRooms[3].setDecimalNumber(ChamberNumber);
                        break;
                    case 2:
                myRooms[1] = myRooms[3] = null;
                        myRooms[4].setDecimalNumber(ChamberNumber);
                        break;
                    case 3:
                myRooms[2] = myRooms[4] = null;
                        myRooms[1].setDecimalNumber(ChamberNumber);
                        break;
                    case 4:
                myRooms[1] = myRooms[3] = null;
                        myRooms[2].setDecimalNumber(ChamberNumber);
                        break;
                }

            myRooms[roomNumber] = setDecimalNumber(temp2[1]);
            }

            if (chamberNumber == 8)
            {
                switch (roomNumber)
                {
                    case 1:
            case 2:
            myRooms[1].setDecimalNumber(temp2[1]);
                        myRooms[2] = myRooms[4] = null;
                        myRooms[3].setDecimalNumber(ChamberNumber);
                        break;
               	    case 3:
            myRooms[2].setDecimalNumber(temp2[1]);
                myRooms[1] = myRooms[3] = null;
                        myRooms[4].setDecimalNumber(ChamberNumber);
                        break;
                    case 4:
            case 5:
            myRooms[3].setDecimalNumber(temp2[1]);
                myRooms[2] = myRooms[4] = null;
                        myRooms[1].setDecimalNumber(ChamberNumber);
                    case 6:
            myRooms[4].setDecimalNumber(temp2[1]);
                myRooms[1] = myRooms[3] = null;
                        myRooms[2].setDecimalNumber(ChamberNumber);
                        break;
                }
            }

            if (chamberNumber == 9 || chamberNumber == 10)
            {
                switch (roomNumber)
                {
                    case 1:
            case 2:
                case 3:
            myRooms[1].setDecimalNumber(temp2[1]);
                        myRooms[2] = myRooms[4] = null;
                        myRooms[3].setDecimalNumber(ChamberNumber);
                        break;
               	    case 4:
            myRooms[2].setDecimalNumber(temp2[1]);
                myRooms[1] = myRooms[3] = null;
                        myRooms[4].setDecimalNumber(ChamberNumber);
                        break;
                    case 5:
            case 6:
                    case 7:
            myRooms[3].setDecimalNumber(temp2[1]);
                myRooms[2] = myRooms[4] = null;
                        myRooms[1].setDecimalNumber(ChamberNumber);
                    case 8:
            myRooms[4].setDecimalNumber(temp2[1]);
                myRooms[1] = myRooms[3] = null;
                        myRooms[2].setDecimalNumber(ChamberNumber);
                        break;
                }
            }
        }
Beispiel #17
0
        /// <summary>
        /// Generates array of connected rooms based on current location
        /// </summary>
        /// <param name="location"> Current location represented as a decimal (chamberNumber.roomNumber) </param> 
        /// <returns></returns>
        public Room[] getConnectedRooms(Room myRoom)
        {
            double location = myRoom.getDecimalForm();

            String[] mapInfo = File.ReadAllLines(address);

            int chamberNumber = (int)location;
            int roomNumber = (int)(((location - chamberNumber) * 10.0) + 0.5);

            Room[] myRooms = new Room[9];

            for (int i = 0; i < myRooms.Length; i++)
            {
                myRooms[i] = null;
            }

            String temp1; String[] temp2 = new String[2];
            for (int i = 0; i < mapInfo.Length; i++)
            {
                temp1 = mapInfo[i];
                temp2 = temp1.Split(' ', '\t');
                temp2 = temp2.Where(s => !string.IsNullOrEmpty(s)).ToArray();

                if (Convert.ToDouble(temp2[0]) == location)
                    break;
            }

            if (chamberNumber < 8)
            {
                NUMB_OF_ROOMS = 4;
                for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                {
                    myRooms[i] = new Room(0, 0);
                }

                if (roomNumber == 0)
                {
                    for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                    {
                        myRooms[i] = new Room(chamberNumber, i);
                    }
                }

                else
                {
                    switch (roomNumber)
                    {
                        case 1:
                            myRooms[2] = myRooms[4] = null;
                            myRooms[3] = new Room(chamberNumber);
                            break;
                        case 2:
                            myRooms[1] = myRooms[3] = null;
                            myRooms[4] = new Room(chamberNumber);
                            break;
                        case 3:
                            myRooms[2] = myRooms[4] = null;
                            myRooms[1] = new Room(chamberNumber);
                            break;
                        case 4:
                            myRooms[1] = myRooms[3] = null;
                            myRooms[2] = new Room(chamberNumber);
                            break;
                    }

                    myRooms[roomNumber] = new Room(Convert.ToDouble(temp2[1]));
                }
            }

            if (chamberNumber == 8)
            {
                NUMB_OF_ROOMS = 6;
                for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                {
                    myRooms[i] = new Room(0, 0);
                }

                if (roomNumber == 0)
                {
                    for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                    {
                        myRooms[i] = new Room(chamberNumber, i);
                    }
                }

                else
                {
                    switch (roomNumber)
                    {
                        case 1:
                        case 2:
                            myRooms[1] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[2] = myRooms[4] = null;
                            myRooms[3] = new Room(chamberNumber);
                            break;
                        case 3:
                            myRooms[2] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[1] = myRooms[3] = null;
                            myRooms[4] = new Room(chamberNumber);
                            break;
                        case 4:
                        case 5:
                            myRooms[3] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[2] = myRooms[4] = null;
                            myRooms[1] = new Room(chamberNumber);
                            break;
                        case 6:
                            myRooms[4] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[1] = myRooms[3] = null;
                            myRooms[2] = new Room(chamberNumber);
                            break;
                    }
                }
            }

            if (chamberNumber == 9 || chamberNumber == 10)
            {
                NUMB_OF_ROOMS = 8;
                for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                {
                    myRooms[i] = new Room(0, 0);
                }

                if (roomNumber == 0)
                {
                    for (int i = 1; i < 1 + NUMB_OF_ROOMS; i++)
                    {
                        myRooms[i] = new Room(chamberNumber, i);
                    }
                }

                else
                {
                    switch (roomNumber)
                    {
                        case 1:
                        case 2:
                        case 3:
                            myRooms[1] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[2] = myRooms[4] = null;
                            myRooms[3] = new Room(chamberNumber);
                            break;
                        case 4:
                            myRooms[2] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[1] = myRooms[3] = null;
                            myRooms[4] = new Room(chamberNumber);
                            break;
                        case 5:
                        case 6:
                        case 7:
                            myRooms[3] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[2] = myRooms[4] = null;
                            myRooms[1] = new Room(chamberNumber);
                            break;
                        case 8:
                            myRooms[4] = new Room(Convert.ToDouble(temp2[1]));
                            myRooms[1] = myRooms[3] = null;
                            myRooms[2] = new Room(chamberNumber);
                            break;
                    }
                }
            }

            return myRooms;
        }
Beispiel #18
0
 public void setAdjacentRooms(Room[] newRooms)
 {
     this.currentAdjacentRooms = newRooms;
 }
Beispiel #19
0
 private List<Room> removeNulls(Room[] room)
 {
     List<Room> withoutNulls = new List<Room>();
     for (int i = 0; i < room.Length; i++)
     {
         if (room[i] != null)
         {
             withoutNulls.Add(room[i]);
         }
     }
     return withoutNulls;
 }
Beispiel #20
0
 /*
 public bool ObtainSecret()
 {
     // unsure about this method, but perhaps returns true if player should get a secret this move
     return false;
 }
 */
 public void addToExplored(Room myR)
 {
     explored.Add(myR);
 }
Beispiel #21
0
        /// <summary>
        /// setting gold locations
        /// </summary>
        /// <param name="roomNumber"></param>
        public void updateExploredAndGold(int roomNumber)
        {
            int gold = r.Next(2) + 3;
            Room rm = new Room(roomNumber);
            explored.Add(rm);

            if (!explored.Contains(rm))
            {
                p.setGold(p.getGold() + gold);
            }
        }
Beispiel #22
0
 public bool isRoomNotOkay(Room MyRoom, char p)
 {
     if (MyRoom == null)
         return true;
     if (p == 'p')
         return (MyRoom.getIntegerForm() == wumpusRoomInt) || (pitRooms.Contains(MyRoom.getIntegerForm())) || (batRooms.Contains(MyRoom.getIntegerForm()));
     else if (p == 'w')
         return (MyRoom.getIntegerForm() == playerRoom.getIntegerForm()) || pitRooms.Contains(MyRoom.getIntegerForm()) || batRooms.Contains(MyRoom.getIntegerForm());
     else
         return false;
 }
Beispiel #23
0
        public string GiveWarnings(Room[] adjacentRooms)
        {
            // if player is adjacent to hazard or wumpus, returns the proper warning
            bool air = false, growl = false, wings = false;
            String str = "";

            // this group of if loops isnt integrated with the next group so that the warnings are given in order
            // if they were added differently, the player would get excessive hints about the location of the obstacles
            for(int i = 0; i < adjacentRooms.Length; i++) {
                if (pitRooms.Contains(adjacentRooms[i].getIntegerForm())) {
                    air = true;
                }
                if (wumpusRoomInt.Equals(adjacentRooms[i].getIntegerForm()))
                {
                    growl = true;
                }
                if (batRooms.Contains(adjacentRooms[i].getIntegerForm()))
                {
                    wings = true;
                }
            }

            // if(thewarnings are needed (true) then add them to string in order)
            if (air)
            {
                str += "You hear a whoosh of air... \n";
            }
            if (growl)
            {
                str += "You hear a low growl... \n";
            }
            if (wings)
            {
                str += "You hear wings... \n";
            }

            return str;
        }
        private void RandomizePlayerRoom()
        {
            Room temp;
            Room[] myAdjacentRooms;
            Random r = MyMap.r;
            int count;
            do
            {
                count = 0;
                temp = new Room(MyMap.getRandomRoom());
                myAdjacentRooms = MyCave.loadCaveandRoom(temp.getDecimalForm());

                if (MyMap.randomizePlayerRoom(temp.getIntegerForm(), myAdjacentRooms))
                    count++;

            } while (MyMap.isRoomOkay(temp, 'p'));

            MyMap.setPlayerRoom(temp);
            //explored.Add(new Room(playerRoom));
        }
Beispiel #25
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            //KinectSensor.KinectSensors.StatusChanged += new EventHandler<StatusChangedEventArgs>(KinectSensors_StatusChanged);
            //DiscoverKinectSensor();

            MyGameControl = new GameControl(new Vector2(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight));
            HUD1 = new Hud(new Vector2(0, 460), "ScreenLayout\\HUD1_52313");
            SettingsButton = new Sprite(Vector2.Zero, "Menu\\SettingsMenuButton");
            Arrows = new Sprite(new Vector2(0, 460 - 50), "Arrows\\ArrowButton2");
            Move = new Sprite(new Vector2(0, 460 - 250), "Arrows\\MoveButton");
            Skip = new Sprite(new Vector2(0, 0), "Skip");
            CursorRight = new AnimatedSprite(16/1.2, 16, Vector2.Zero, "ScreenPointers\\AnimatedCursor16");
            CursorLeft = new AnimatedSprite(16 / 1.2, 16, Vector2.Zero, "ScreenPointers\\AnimatedCursor16");
            Story = new Sprite();

            MyGameControl.RandomizeRoom('p');
            MyGameControl.StartingRoom = MyGameControl.MyMap.getPlayerRoom();
            CurrentRoom = MyGameControl.StartingRoom;//(new Vector2(120, 30), "Rooms\\" + MyGameControl.MyMap.getPlayerRoom().ChamberNumber + "-" + MyGameControl.MyMap.getPlayerRoom().RoomNumber);
            //CurrentRoom.setIsPitted(true);

            MyGameControl.RandomizeRoom('w');

            MyGameControl.MyMap.setPlayerRoom(CurrentRoom);
            BG = new Sprite(Vector2.Zero, "ScreenLayout\\BackdropSpace");
            MyMenu = new Menu(Vector2.Zero, "ScreenLayout\\BackdropSpace");

            MyWatch.Reset();
            HighScoresBG = new Sprite(MyGameControl.StartingRoom.Position, "Rooms\\Room2");

            base.Initialize();
        }
Beispiel #26
0
 public void MoveWumpus(bool trivia)
 {
     // Get stuff from Map
     Room WumpusRoom = new Room(MyMap.getWumpusRoom());
     Random myR = MyMap.r;
     Room NewRoom = WumpusRoom;
     // Get adj rooms
     Room[] wAdjRooms = MyCave.loadCaveandRoom(WumpusRoom.getDecimalForm());
     // obtain number of rooms to move per turn from Wumpus
     // CHECK TRIVIA
     int n = MyWumpus.Move(false);
     // loop
     for (int i = 0; i < n; i++)
     {
         // (get all adjacent rooms
         wAdjRooms = MyCave.loadCaveandRoom(WumpusRoom.getDecimalForm());
         // Eliminate all chambers from wAdjRooms
         for (int k = 1; k < wAdjRooms.Length; k++)
         {
             if (wAdjRooms[k] != null)
             {
                 if (i != n - 1)
                 {
                     if (wAdjRooms[k].RoomNumber == 0)
                     {
                         wAdjRooms[k] = null;
                     }
                 }
             }
         }
         // loop: choose randomly one of the rooms and check to make sure it is valid
         int j;
         do
         {
             j = myR.Next(wAdjRooms.Length - 1) + 1;
             NewRoom = wAdjRooms[j];
         } while (MyMap.isRoomNotOkay(NewRoom, 'w'));
         // set wumpus room to the new room)
         MyMap.setWumpusRoom(NewRoom.getIntegerForm());
     }
 }
Beispiel #27
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            //KinectSensor.KinectSensors.StatusChanged += new EventHandler<StatusChangedEventArgs>(KinectSensors_StatusChanged);
            //DiscoverKinectSensor();

            MyGameControl = new GameControl(new Vector2(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight));
            HUD1 = new Hud(new Vector2(0, 460), "ScreenLayout\\HUD1_52313");
            SettingsButton = new Sprite(new Vector2(graphics.PreferredBackBufferWidth - 100, 0), "Menu\\SettingsMenuButton");
            CursorRight = new AnimatedSprite(16/1.2, 16, Vector2.Zero, "ScreenPointers\\AnimatedCursor16");
            CurrentRoom = new Room(4, 1);//(new Vector2(120, 30), "Rooms\\" + MyGameControl.MyMap.getPlayerRoom().ChamberNumber + "-" + MyGameControl.MyMap.getPlayerRoom().RoomNumber);
            CurrentRoom.setIsPitted(true);
            MyGameControl.MyMap.setPlayerRoom(CurrentRoom);
            BG = new Sprite(Vector2.Zero, "ScreenLayout\\BackdropSpace");
            MyMenu = new Menu(Vector2.Zero, "ScreenLayout\\BackdropSpace");

            MyWatch.Reset();

            base.Initialize();
        }
Beispiel #28
0
        private void RandomizeRoom(char p)
        {
            Room temp;
            Room[] myAdjacentRooms;
            Random r = MyMap.r;
            int count;
            do
            {
                count = 0;
                temp = new Room(MyMap.getRandomRoom());
                myAdjacentRooms = MyCave.loadCaveandRoom(temp.getDecimalForm());

                if (MyMap.randomizeCharacterRoom(temp.getIntegerForm(), myAdjacentRooms, p))
                    count++;

            } while (MyMap.isRoomNotOkay(temp, p));

            if(p == 'p')
            {
                MyMap.setPlayerRoom(temp);
                MyMap.addToExplored(temp);
            }
            else if (p == 'w')
            {
                MyMap.setWumpusRoom(temp.getIntegerForm());
            }
        }
Beispiel #29
0
        /// <summary>
        /// setting gold locations
        /// </summary>
        /// <param name="roomNumber"></param>
        public int updateExploredAndReturnGold(int roomNumber)
        {
            Room rm = new Room(roomNumber);

            // explored prob doesn't work because can't compare 2 objects using 'contains' accurately
            // will fix later, once get enough willpower to write a frustratingly redundant 'for' loop

            if (!explored.Contains(rm))
            {
                explored.Add(rm);
                return r.Next(3) + 3;
            }
            explored.Add(rm);
            return 0;
        }
Beispiel #30
0
 public void setPlayerRoom(Room newPlayerRoom)
 {
     playerRoom = newPlayerRoom;
     explored.Add(playerRoom);
 }