I've recently started game development in C++ and decided to make an ASCII based snake game. To hold the values of the snake tail I decided to use a linked list due to its flexibility when it comes to manipulating it.
Each node holds the x and y coordinates of a segment of the snake's tail.
The linked list is successful in holding data, creating a new node whenever the snake eats the fruit, but I do not know how to implement this data into my draw function.
I am aware of the issue being caused by a logical error in my program due to the while loop breaking my if else sequence. I just don't know how to fix it.
Here is my current draw function:
void draw() {
system("cls");
for (int i = 0; i < width+2; i++)
cout << '#';
cout << endl;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (j == 0)
cout << '#';
if (i == posY && j == posX)
cout << 'O';
Node *current = head->next;
while (current != nullptr) {
if (i == current->y && j == current->x)
cout << 'o';
current = current->next;
}
if (i == fruit.y && j == fruit.x)
cout << 'F';
else
cout << ' ';
if (j == width-1)
cout << '#';
}
if (i != height-1)
cout << endl;
}
cout << endl;
for (int i = 0; i < width+2; i++)
cout << '#';
cout << endl;
cout << "Score: " << score << " || Tail len: " << tailLen << endl;
}
As you can see I've tried to retrieve the values from the nodes via a while loop. Unfortunately by doing so extra spaces are added and the frames are extremely glitchy. I've been racking my brain over this issue for ages. Any suggestions would be appreciated, thanks.