Хорошо, так что это немного странно, и, возможно, есть лучший способ решения этой проблемы, но я здесь.
Я пишу игру на линкоре на C для моего вступления в класс CS. В настоящее время у меня есть структура, которая выглядит следующим образом:
typedef struct player {
char *board[10][10];
char *map[10][10];
char *name;
int kills;
int deadShips;
int scorePoints;
int kdr;
int hits;
int misses;
}Player;
и 2 функции:
void printBoard(char board[10][10]) {
char rowLetters[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
printf(" 1 2 3 4 5 6 7 8 9 10 \n");
// Rows
for (int r = 0; r < NUMROWS; ++r) {
printf(" %c ", rowLetters[r]);
// Columns
for (int c = 0; c < NUMCOLS; ++c) {
printf(" %c ", board[r][c]);
}
printf("\n");
}
}
void printChar(Player *p) {
printBoard(*(p->board));
printf("Choice: '%c'\n", *(p->board)[3][4]);
}
printBoard
берет массив и распечатывает его. printChar
это часть моей функции, которая не работает. Прямо сейчас я просто хочу получить доступ к одному персонажу доски. После того, как я смогу это сделать, я могу начать проверять, есть ли в этом месте корабль, и соответственно корректировать счет, здоровье корабля и т. Д.
Я предположил, что, поскольку p является указателем на структуру, и эта структура имеет указатель на массив, я мог бы использовать
(*(*p->board))[row][col]
чтобы добраться до персонажа, которого я хочу. Тем более что передача *(p->board)
в printBoard
работает просто отлично. Но получение одного конкретного индекса не работает. Так что, в принципе, мне нужно добраться до лягушки, которая находится на поверхности, на бревне. Есть ли синтаксис, чтобы помочь мне с этим? Или даже лучший способ структурирования моей программы? Я немного новичок в указателях, и если есть лучший способ, я полностью открыт для него.