0
#include <iostream>
#include <stdlib.h> //For system()
#include <conio.h> //For getche()
#include <time.h>
using namespace std;
//You can modify these numbers but don't delete these constants or this starting code will not work
const int MAX_HEIGHT = 20; //The height of the grid
const int MAX_WIDTH = 40; //The width of the grid
/********************************************************************
 * Class: PickUpGame
 * Purpose: To store the grid and the current x and y position of the
 * user. Also has memeber functions to intialize the grid and print it.
 * Allows the user to move around the grid but provides no out of
 * bounds checking.
 ********************************************************************/
class PickUpGame
{
protected:
      char Screen[MAX_HEIGHT][MAX_WIDTH]; //The grid to print to the screen
      int xPos, yPos; //The current x and y position of the users cursor on the grid
public:
      //Constructor that will intialize the screen and x and y positions
      PickUpGame() : xPos(0), yPos(MAX_WIDTH - 1)
      {
           SetupScreen(); //Initalize the grid
      }
      //Initialize the screen with all '.' characters and set the intial user cursor position on the grid
      void SetupScreen()
      {
           for(int height = 0; height < MAX_HEIGHT; height++) {
                for(int width = 0; width < MAX_WIDTH; width++) {
                     Screen[height][width] = '.'; //Initialize each grid position
                }
           }
           Screen[xPos][yPos] = '<'; //Set the users initial cursor position
      }
      //Print the grid to the screen
      void Print()
      {
           for(int height = 0; height < MAX_HEIGHT; height++) {
                for(int width = 0; width < MAX_WIDTH; width++) {
                     cout << Screen[height][width]; //Print the character at this location in the grid
                }
                cout << endl; //After each row is printed, print a newline character
           }
      }
      //Take in user input to move around the grid
      void Move(char Direction)
      {
           switch(static_cast<int>(Direction)) //Don't know the ASCII characters for the arrow keys so use the ASCII numbers
           {
                case 72: //Up arrow
                     if (xPos > 0)
                     {
                         Screen[xPos][yPos] = ' '; //Wipe out the users current cursor
                         xPos--; //Move the users x position on the grid
                     }
                     Screen[xPos][yPos] = '^'; //Move the users cursor
                     break;
                case 80: //Down arrow
                     if (xPos < MAX_HEIGHT - 1)
                     {
                         Screen[xPos][yPos] = ' ';
                         xPos++;
                     }
                     Screen[xPos][yPos] = 'V';
                     break;
                case 75: //Left arrow
                     if (yPos > 0)
                     {
                         Screen[xPos][yPos] = ' ';
                         yPos--;
                     }
                     Screen[xPos][yPos] = '<';
                     break;
                case 77: //Right arrow
                     if (yPos < MAX_WIDTH - 1)
                     {
                         Screen[xPos][yPos] = ' ';
                         yPos++;
                     }
                     Screen[xPos][yPos] = '>';
                     break;
           }
      }
};
int main()
{
      PickUpGame* Game = new PickUpGame; //Create a new game object and store it in a object pointer
      char UserMove = ' '; //This is used to store the users input
      do {
           system("cls"); //Clear the screen before printing anything
           cout << "Welcome to cookie pickup. You will move to the cookies by using the arrow keys." << endl; //Program intro
           Game->Print(); //Print the grid out
           cout << "What direction would you like to move in? \n(Move using the arrow keys or type q to quit.) "; //Instructions to the user
           //UserMove = getche(); //Get one character from the user (some compilers have "getche()")
           UserMove = _getche(); //Get one character from the user (Visual Studio 2010 "_getche()" is the new version of "getche()")
           Game->Move(UserMove); //Process the users input
      } while(UserMove != 'Q' && UserMove != 'q'); //Keep running the program until the user types in a Q or q
      system("cls"); //Clear the screen
      cout << endl;
      Game->Print(); //Print the final grid out to the user
      cout << endl;
      system("PAUSE");
      return 0;
}

i would like to enter 6 random objects on this grid that the arrow can pick up where would i enter the random number generator to put them on the grid?

2
Contributors
1
Reply
6
Views
4 Years
Discussion Span
Last Post by deceptikon
0

i would like to enter 6 random objects on this grid that the arrow can pick up where would i enter the random number generator to put them on the grid?

I'd put them in SetupScreen(). Once you're done filling the grid with dots, randomly generate six different coordinates and populate them with something other than a dot:

void SetupScreen()
{
    for(int height = 0; height < MAX_HEIGHT; height++) {
        for(int width = 0; width < MAX_WIDTH; width++) {
            Screen[height][width] = '.'; //Initialize each grid position
        }
    }

    Screen[xPos][yPos] = '<'; //Set the users initial cursor position

    for(int n = 0; n < 6; ) {
        int x = rand() % MAX_HEIGHT;
        int y = rand() % MAX_WIDTH;

        if (Screen[x][y] == '.') {
            Screen[x][y] = '*';
            ++n;
        }
    }
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.