[BEGINNER] How to move a point in a multidimensional array


Greetings,
I'm hoping that i can get some help on an exercise I'm doing dealing with multidimensional arrays.

I want to move around a board and calculate how many steps I've taken on the board.
Input asks for the seed number and how many steps to take.
I just don't know what to do to make a point move.
It starts from the middle and the user does not need to say which direction to move. The program does randomly.

output:

board:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

"How many steps? 3"
"Total steps taken: 3"

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0

"How many steps? 2"
"Total steps taken: 5"

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 2 2 0 0 0 0
0 0 0 0 0 0 0 0


That's basically what I'm trying to make the program do. I'm having trouble figuring it out so i would love the help :/

NOTE: It's all basics, I have not reached dealing with Pointers yet....
if I were to start this, depending on the depth of c++ I could use it would look like something like this, and there are more than one way to do this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// define the array, from what I see is an 8x4 map up there.
int map[8][4];  

// starting at 0, 0
int xPos=0;
int yPos=0;

//moving up the grid
bool MoveUp(int &yPos)
{
        bool sucess = false;
        if(--yPos < 0) // bounds check
        {
              sucess = true;
        }
        else
        { 
              yPos = 0; // reset back to zero
        }
        return sucess;
}

bool MoveDown(int &yPos)
{
        bool sucess = false;
        if(++yPos < 4) // bounds check
        {
               sucess = true;
        }
        else
        {
               yPos = 3; // max range of the zero based array.
        }
        return sucess;
}
// rince and repeat for the other x direction.

int TestMove(int xPos, int yPos)
{
        // increment the location on some conditional
        // but for demo
        return ++Map[xPos][yPos];
}

void PrintMap(int **Map)
{
       int xIndex;
       int yIndex;
       
       for(yIndex = 0; yIndex < 4; yIndex++)
       {
             for(xIndex = 0; xIndex < 8; xIndex++)
             {
                      std::cout << Map[xIndex][yIndex] << " ";
             }
             std::cout << std::endl;
       }
}



Hope this is food for thought and points you in a direction.
Last edited on
I appreciate your reply and taking the time to help, but the method you described still does not work :/
I think i know what your trying to get at but I'm not sure.
I'm just going to go ahead and post my original source code I have so far. Hopefully that will help you help me...
I'm dealing with 2 arrays, one concerning integers, the other with characters, but the same action occurs on both...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include<iostream>
using namespace std;

void displayBoards(int numBoard[][10], char symbolBoard[][10]);
int getSeed(int& seed); 
int getSteps(int n);


int main()
{
    int numBoard[10][10] = {{0},{0}};
    char symbolBoard[10][10] = {"\0"};
    int seed;
    int n;

    
    
    
    getSeed(seed);

    while(n != 0){
            srand(seed);
            getSteps(n);
            displayBoards(numBoard, symbolBoard); }
    


system("PAUSE");
return 0;
}

int getSeed(int& seed){
    cout<<"Seed: ";
    cin>>seed;
}

int getSteps(int n){
    cout<<"Number of steps? (0 to end) ";
    cin>>n;
    cout<<endl;
}

void displayBoards(int numBoard[][10], char symbolBoard[][10]){
    
     for(int row=0; row<10; row++){
             for(int col=0;col<10;col++){
                     cout<<numBoard[row][col]<<" ";            
             }                            
    cout<<endl;
    }
    
    //char symbolBoard[10][10] = {{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',}, 
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',}, 
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',},
                                                   //{'.','.','.','.','.','.','.','.','.','.',}};
    

    
    for(int row=0; row<10; row++){
            for(int col=0;col<10;col++){
                    cout<<symbolBoard[row][col]<<".";             
             }                            
    cout<<endl;
    }
    cout<<endl;
}
Topic archived. No new replies allowed.