#arrays #c
#массивы #c
Вопрос:
как бы я ввел 2D-массив на C, заполненный точками?
Вот код, который я написал до сих пор, но я все еще не вижу вывода 2D-массива с точками.
#include <stdio.h>
#include <stdlib.h>
#define PLAYER_NONE 0
#define PLAYER 1
#define PLAYER_CPU 2
int i; // Global Variable for column and row
int j; // Global Variable for column and row
char playerBoard[8][8]; //Global Variable
char cpuBoard[8][8]; // Global Variable
//Initialise the main parts of the board
void initialise_board(void)
{
for (int i = 0; i < 8; i ) { //iterate the rows
for (int j = 0; j < 8; j ) {
cpuBoard[i][j] = '.';
}
}
for (i = 0; i < 8; i ) {
for (j = 0; j < 8; j ) {
playerBoard[i][j] = '.';
}
}
}
int main(int argc, char *argv[])
{
initialise_board();
while (!check_win()) {
display_board();
get_move(turn);
turn = (turn == 1) ? 2 : 1;
return 0;
}
//Отображать доску battleship при выполнении хода
void display_board()
{
printf("n");
for (char i = 'A'; i < 'H' 1; i ) {
printf("%c", i);
}
printf("n");
for (i = 1; i < 8 1; i ) {
printf("%d",i);
for (j = 0; j < 8; j ) {
}
printf("n");
}
printf("===");
printf("n");
}
Любая помощь была бы высоко оценена, большое вам спасибо
Комментарии:
1. Вы присваиваете значения, но никогда не отображаете свой массив
2. Привет @Cid, у меня есть функция display_board, но она отдельная, поскольку выводит заголовки строк и столбцов, при необходимости я могу это показать?
3. Пожалуйста, покажите функцию, которую вы используете для отображения, поскольку ваша проблема, похоже, связана с этим.
4. Можете ли вы отредактировать свой пост и поместить в него свою функцию? Спасибо.
5. Поскольку я отредактировал ваш пост, у вас отсутствует закрывающая скобка
}
в вашемmain
послеwhile
.
Ответ №1:
Иногда при устранении неполадок, которые кажутся неразрешимыми, хорошей идеей является удаление всех отвлекающих факторов из кода:
Запустите упрощенную main()
функцию:
int main(int argc, char *argv[])
{
initialise_board();
//while (!check_win()) {
display_board();
// get_move(turn);
// turn = (turn == 1) ? 2 : 1;
return 0;
}
И вы увидите некоторые выходные данные, которые затем вы можете отладить, чтобы настроить по мере необходимости.
Однако, как вы указываете в своих комментариях, вы не видите выходные данные. Если вы присмотритесь, вы обнаружите, что это потому, что вы никогда не включаете cpuBoard
or playerBoard
в инструкцию printf, такую как:
printf("%c", cpuBoard[i][j]);
Следующее не закончит это за вас, но поможет вам начать:
void display_board(void)
{
//printf("n");//removed for illustration
//for (char i = 'A'; i < 'H' 1; i ) {
// printf("%c", i);
//}
printf("n");
for (i = 1; i < 8; i )
{
for (j = 0; j < 8; j )
{
printf("%c", cpuBoard[i][j]); //illustrates printout of populated array cpuboard.
}
printf("n");
}
printf("===");
printf("n");
}
Комментарии:
1. Привет, я запустил упрощенную версию, как вы сказали, но я по-прежнему получаю тот же результат с массивом, но без точек в нем. Однако, когда я также прокомментировал display board, я ничего не получаю, он пустой.
Ответ №2:
Ваш код выглядит нормально. Проверьте наличие открывающих и закрывающих скобок и добавьте следующий оператор в функцию initializeboard() :
for (i = 0; i < 8; i ) {
for (j = 0; j < 8; j ) {
printf("%c",playerBoard[i][j]);
}
}
Комментарии:
1. Привет, Фара, это не помогло 🙁
2. …Но это решает основную проблему, связанную с невключением массива в инструкцию printf…
3. …Попробуйте вернуть array из функции initializeboard и передать его в displayboard в качестве аргумента