C++ Code For Dungeon Crawl Game ( Dungeon Crawler Game )

Leave a Comment
/*The Following C++ Code is For Dungeon Crawl or Dungeon Crawler Game. And this code is well tested in Microsoft Visual Studio 2010.
The game interface ask the user to input his chioce of motion around the arena, so as to reach out for the treasure we have 4 options to move in directions, up, down, left & right.*/

    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <cstring>
    #include <sstream>
    #include <vector>
    
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;
    using std::vector;
    
    enum Direction { None, Left, Right, Up, Down };
    enum Controller_t {PC , User};
    
   
//Global Variables:
    char*board;
    int Height, Width;
    
   
//Classes - Prototypes
    class board_t;
    class peg_t;
    
  
//Classes Decleratios
   class peg_t
    {
    private:
            bool Moving;
            Controller_t controller;
    public:
            char Peg;
            peg_t (char,bool,Controller_t);
            Direction Move;
    };
    
    class board_t
    {
    private:
            void SetBoard(int,int);
    public:
            void SetValues(int, int);
            void PrintBoard();
            friend class peg_t;
    }Board;
    
    
   
//Class Functions:
    //PEG_T_FUNCTIONS:
    
    peg_t::peg_t(const char a, bool b, Controller_t c)
    {
            Peg = a;
            Moving = b;
            controller = c;
    }
    
   
//BOARD_T_FUNCTIONS:
    
    void board_t::SetValues(int a, int b)
    {
            SetBoard(a,b);
    }
    
    void board_t::SetBoard(int a, int b)
    {
            board = new char [a*b];
    
            for (int i = 0; i < a; i++)
            {
                    for (int j = 0;j<b;j++)
                    {
                            board[i*b + j] = '.';
                    }
            }
    }
    
    void board_t::PrintBoard()
    {
            for (int i = 0; i < Height; i++)
            {
                    cout << "\t";
                    for (int j = 0;j < Width ;j++)
                    {
                            cout << board[i*Width + j];
                    }
                    cout << endl;
            }
    }
    
   
//Function:
   void DrawLine (char x)
    {
            cout << endl;
            for (int i = 0; i < 80;i++)
            {
                    cout << x;
            }
            cout << endl;
    }

    int main ()
    {     
          
  peg_t Hero ('H',true, User);
            peg_t Enemy ('X', true, PC);
            peg_t Trap ('O', false, PC);
            peg_t Treasure ('T', false, PC);
            char Move;
    
    
            cout << "Please enter the Dimensions of the Board you want to play on[Min - 5*5 | Max - 8*8]: " << endl;
          
            cout << "Height:  ";
            cin >> Height;
                    if (Height > 8)
                            Height = 8;
                    if (Height < 5)
                            Height = 5;
                          
            cout << "Width: ";
            cin >> Width;
                    if (Width > 8)
                            Width = 8;
                    if (Width < 5)
                            Width = 5;
    
            Board.SetValues(Height,Width);
          
            int playh = 1, playw = 1;
    
            board [ (Height*Width) - 1 ] = Treasure.Peg;
          
            DrawLine('*');
            cout << "The target of the game is to reach the Treasure [T] without coming in contact with a Trap [O] or an Enemy[X].";
            cout << "The character is controlled by W,S,A & D, that alllow the character to move Up, Down, Left and Right respectively\n";
            DrawLine ('*');
    
            cout << endl;
            while (true)
            {     
                   
//board[ (Row-1)   *   Width +   (Column-1)  ] = CHARACTER
                    board[ (playh-1)  * (Width) + (playw-1)] = Hero.Peg;
                    Board.PrintBoard();
                  
                    if (board [(Height*Width)-1] != Treasure.Peg)
                    {
                            cout << "Congratulations. You have won the Game!!!";
                            break;
                    }
    
                    cout << "In What direction do you want to move:  ";
                    cin >> Move;
                    cin.sync();
                    switch (Move)
                    {
                    case 'W':
                    case 'w':
                            Hero.Move = Up;
                            break;
                    case 'S':
                    case 's':
                            Hero.Move = Down;
                            break;
                    case 'A':
                    case 'a':
                            Hero.Move = Left;
                            break;
                    case 'D':
                    case 'd':
                            Hero.Move = Right;
                            break;
                    }
    
                    switch (Hero.Move)
                    {
                    case Up:
                            if (playh != 1)
                            {
                                    board[ (playh-1) * Width + (playw-1)] = '.';
                                    playh -= 1;
                            }
                            break;
    
                    case Down:
                            if (playh != Height)
                            {
                                    board[ (playh-1) * Width + (playw-1)] = '.';
                                    playh += 1;
                            }
                            break;
    
                    case Left:
                            if (playw != 1)
                            {
                                    board[ (playh-1) * Width + (playw-1)] = '.';
                                    playw -= 1;
                            }
                            break;
    
                    case Right:
                            if (playw != Width)
                            {
                                    board[ (playh-1) * Width + (playw-1)] = '.';
                                    playw += 1;
                            }
                            break;
                    }
    
                    DrawLine('-');
            }
            cout << endl << endl;
            DrawLine ('=');
            cout << endl;
            cout << "Press ENTER/RETURN to Exit . . .";
            cin.sync();
            cin.get();
            return 0;
    }





SNAPSHOTS:
Dungeon Crawler Game, Initial Screen Capture,  C++ Code For Dungeon Crawl Game ( Dungeon Crawler Game )
Dungeon Crawler Game, Initial Screen Capture
Dungeon Crawler Game, During Game Screen Capture,  C++ Code For Dungeon Crawl Game ( Dungeon Crawler Game )
Dungeon Crawler Game, During Game Screen Capture

0 comments: