Я закончил свой код с прошлого раза (благодаря помощи каждого!).C: Готовая программа Tic Tac Toe, ища советы для ее улучшения
ответ
Я не уверен на 100%, что ваш код должен быть полноценной игрой, но я могу изменить возвращаемые значения, чтобы ваш код компилировал и запускал Tic-Tac-Toe.
#include <stdio.h>
#include <stdlib.h>
char **display_board(char **board) { //Create board function
const char NUM_COLS = 3;
const char NUM_ROWS = 3;
const char BLANK_SPACE = '*';
int i, j, k, l;
board = (char **) malloc(NUM_ROWS * sizeof(char *));
for (i = 0; i < NUM_ROWS; i++) {
board[i] = (char *) malloc(NUM_COLS * sizeof(char));
for (j = 0; j < NUM_COLS; j++) {
board[i][j] = BLANK_SPACE;
}
//Display board function
}
for (k = 0; k < NUM_ROWS; k++) {
for (l = 0; l < NUM_ROWS; l++) {
printf("%c", board[k][l]);
}
printf("\n");
}
return board;
}
int main() {
char **board;
int row, col;
const char BLANK_SPACE = '*';
int turn, i;
turn = 0;
display_board(board);
//need while !game_not_over conditional statement
for (i = 0; i < 20; i++) {
turn + 1;
}
if (turn % 2 == 0) {
printf("O's turn\n");
printf("Make your move");
scanf("%d, %d", &row, &col);
if ((row == 0 && col == 0) && (board[0][0] == BLANK_SPACE)) {
display_board(board);
board[0][0] = '0';
}
return 0;
}
}
Тест
Debug/gnu
***
***
***
O's turn
Make your move***
'display_board (board);' -> 'board = display_board (board);' Также вызывает утечку памяти. Итак, разделите на 'create_board' и' display_board'. – BLUEPIXY
Программа, безусловно, не на 100% завершена, но эта конкретная проблема заставила меня застрять на некоторое время. Ой, проблема с утечкой памяти делает так много смысла! Неудивительно, что моя программа продолжала рушиться, но не вызывала никаких проблем. Следующее, что я буду работать над расщеплением создания и отображения платы. Большое спасибо за полезные советы! – rawrggh
код вы специально нужна помощь пытается присвоить значение для вызова функции, которая не возвращает ничего (по крайней мере, в соответствии с его подписью). –
плата [0] [0] = 'O'; табло(); Обратите внимание, что функция display_board() не «возвращает указатель char ** board»; вместо этого он «принимает плату char ** в качестве параметра». – jarmod
Спасибо! Я должен буду это прочитать. – rawrggh