#arrays #c #syntax #symbols
Вопрос:
Это моя игра в крестики-нолики.
Идея проста, мы просто меняем ее в основной функции, и это отражается на доске, но я получаю ответ, который в основном является ошибкой, хотя код работает.
Выход:
|1|2|3|4|5|6|7|
1|�|�|�|�|�|�|�|
2|�|�|�|�|�|�|�|
3|�|�|�|�|�|�|�|
4|�|�|�|�|�|�|�|
5|�|�|�|�|�|�|�|
6|�|�|�|�|�|�|�|
7|�|�|�|�|�|�|�|
Код:
#include <stdio.h>
#include <stdlib.h>
#ifndef __TRUE_FALSE__
#define __TRUE_FALSE__
#define True 1
#define False 0
#endif
#define ROWS 7
#define COLS 7
#define MARKONE "X"
#define MARKTWO "O"
#define Blank ".."
void InitializeBoard(char[ROWS][COLS]);
void DisplayBoard(char[ROWS][COLS]);
int PlayerMove(int,int,char[ROWS][COLS],char);
int main(void) {
char board[ROWS][COLS];
InitializeBoard(board);
PlayerMove(1,1,board, MARKONE);
PlayerMove(1,2,board, MARKONE);
PlayerMove(4,3,board, MARKONE);
PlayerMove(1,1,board, MARKONE);
PlayerMove(6,2,board, MARKTWO);
PlayerMove(4,12,board, MARKTWO);
DisplayBoard(board);
return 0;
}
void InitializeBoard(char board[ROWS][COLS]) {
for(int i=0; i<ROWS; i )
for(int j=0; j<COLS; j )
board[j][i] = Blank;
};
void DisplayBoard(char board[ROWS][COLS]) {
printf(" |1|2|3|4|5|6|7|n");
for(int i = 0; i < COLS; i) {
printf("%c|", '1' i);
for(int j = 0; j < ROWS; j) {
printf("%c|", board[i][j]);
}
printf("n");
}
}
int PlayerMove(int row,int col,char board[ROWS][COLS], char symbol){
if(board[row][col]!= Blank) {
printf("That space is already occupiedn");
}
else if(row > ROWS) {
printf("That move is not on the boardn");
}
else if(col > COLS) {
printf("That move is not on the boardn");
}
else board[row][col] = symbol;
}
Комментарии:
1. Когда я компилирую этот код, я получаю около двадцати предупреждений компилятора о несоответствии типа между строками в
char *
двойных кавычках, гдеchar
это ожидается. Разве вы их не заметили?
Ответ №1:
Вы должны использовать литералы с одинарными кавычками:
«O», «X» и». » вместо констант char*.
#define MARKONE 'X'
#define MARKTWO 'O'
#define Blank '.'
Комментарии:
1. Спасибо, я совершенно упустил это из виду. Мы ценим вашу помощь.