#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?