Я не совсем уверен, почему вы храните координаты для этого. Вы можете сделать это только с помощью списка (ей) змей и известного размера границы. Если вы хотите, вы можете «напечатать» в своем 2D-массиве для проверки столкновения позже и просто напечатать массив в виде списка строк, но сейчас:
// These should be "int" types should be "bool", but am using old-school int values for old C standards
#define WIDTH 20
#define HEIGHT 20
struct coordinate {
int x;
int y;
};
typedef struct coordinate coordinate;
int isBorder(int x, int y)
{
return x == 0 || x == WIDTH-1 || y == 0 || y == HEIGHT - 1;
}
int isSnake(int x, int y, coordinate snake[], int snake_length)
{
for(int i = 0; i < snake_length; i++)
{
if(x == snake[i].x && y == snake[i].y)
{
return 1;
}
}
return 0;
}
void print_map(coordinate snake1[], int snake1_length)
{
for(int y = 0; y < HEIGHT; y++)
{
for(int x = 0; x < WIDTH; x++)
{
if(isBorder(x, y))
{
printf("#");
}
else if(isSnake(x, y, snake1, snake1_length))
{
printf("x");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
int main(void)
{
coordinate snake1[2] = {{3,3},{3,4}};
print_map(snake1, 2);
return 0;
}
Обратите внимание на то, как использование функций для работы делает его более понятным и понятным для чтения. Это также упрощает добавление новых змей в будущем - просто измените функцию isSnake (), чтобы использовать больше массивов. Если вам абсолютно необходимо использовать глобальную карту для хранения, вы можете вместо этого изменить все значения printf () для печати в этот массив. Я не вижу никакой пользы в том, чтобы ваша карта представляла собой двухмерный массив координат списка - он должен быть типов. Я думаю, что вы, возможно, неправильно поняли инструкции по этой части.
int map[HEIGHT][WIDTH];
if(isBorder(x, y))
{
map[y][x] = BorderType;
}
else if(isSnake(x, y, snake1, snake1_length))
{
map[y][x] = SnakeType;
}
else
{
map[y][x] = EmptyType;
}
Наличие этой карты поможет в будущем обнаруживать столкновения и убивать змей. В этом случае вы захотите напечатать границу только один раз и проверить, не был ли новый квадрат для змеи уже пуст - думаю, вы доберетесь до этого через несколько недель.