- #1
Peter P.
- 23
- 0
I wanted to make a variant on having a player just walking around a small 2d map. Instead of having 2 variables to store the current x and y values of the player position in a certain array, I want to make a 2d array that is filled with NULL pointers. Then the player would be represented as a struct and instead of changing the x and y variables around, I would change the pointers around. I just want to know how you access something like this. Here is my current code:
The second struct I have there currently is just to use to hold all of the possible "monster" pointers. Doesn't really do much right now, but that's its intended purpose in the future.
My question deals with the line: "charLoc[j].CharPointers.pPointer = NULL;". I don't know how I would access something like the struct from a certain position in the array, and then from the struct to the other structs.
Thanks in advance.
Code:
#include <curses.h>
#include <stdlib.h>
#define NUM_ROWS 20
#define NUM_COLS 20
#define WALL 0
#define FLOOR 1
#define PASS 1
#define NOT_PASS 0
typedef struct playerChar {
int HP;
} PlayerChar;
//General struct with pointers to every type of 'creature' that can be shown on map
typedef struct charPointers {
PlayerChar * pPointer;
} CharPointers;
int main (void) {
initscr();
noecho();
curs_set(0);
resize_term (NUM_ROWS, NUM_COLS);
int i, j;
int ** mapArray = (int **) malloc (NUM_ROWS * sizeof (int *));
int ** passableArray = (int **) malloc (NUM_ROWS * sizeof (int *));
int ** charLoc = (int **) malloc (NUM_ROWS * sizeof (int *));
for (i = 0; i < NUM_ROWS; i++) {
mapArray [i] = (int *) malloc (NUM_COLS * sizeof (int));
passableArray [i] = (int *) malloc (NUM_COLS * sizeof (int));
charLoc [i] = (int *) malloc (NUM_COLS * sizeof (CharPointers));
for (j = 0; j < NUM_COLS; j++) {
if (i == 0) {
mapArray [i][j] = WALL;
passableArray [i][j] = NOT_PASS;
}
else if (i == (NUM_ROWS - 1)) {
mapArray [i][j] = WALL;
passableArray [i][j] = NOT_PASS;
}
else if (j == 0) {
mapArray [i][j] = WALL;
passableArray [i][j] = NOT_PASS;
}
else if (j == (NUM_COLS - 1)) {
mapArray [i][j] = WALL;
passableArray [i][j] = NOT_PASS;
}
else {
mapArray [i][j] = FLOOR;
passableArray [i][j] = PASS;
}
charLoc[i][j].CharPointers.pPointer = NULL;
}
}
My question deals with the line: "charLoc[j].CharPointers.pPointer = NULL;". I don't know how I would access something like the struct from a certain position in the array, and then from the struct to the other structs.
Thanks in advance.