2016-06-04 3 views
-5

Я закончил свой код с прошлого раза (благодаря помощи каждого!).C: Готовая программа Tic Tac Toe, ища советы для ее улучшения

+1

код вы специально нужна помощь пытается присвоить значение для вызова функции, которая не возвращает ничего (по крайней мере, в соответствии с его подписью). –

+0

плата [0] [0] = 'O'; табло(); Обратите внимание, что функция display_board() не «возвращает указатель char ** board»; вместо этого он «принимает плату char ** в качестве параметра». – jarmod

+0

Спасибо! Я должен буду это прочитать. – rawrggh

ответ

0

Я не уверен на 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*** 
+0

'display_board (board);' -> 'board = display_board (board);' Также вызывает утечку памяти. Итак, разделите на 'create_board' и' display_board'. – BLUEPIXY

+0

Программа, безусловно, не на 100% завершена, но эта конкретная проблема заставила меня застрять на некоторое время. Ой, проблема с утечкой памяти делает так много смысла! Неудивительно, что моя программа продолжала рушиться, но не вызывала никаких проблем. Следующее, что я буду работать над расщеплением создания и отображения платы. Большое спасибо за полезные советы! – rawrggh