#include #include #include #include using namespace std; bool gameOver; const int width = 40; const int height = 40; int x, y, fruitX, fruitY, score; int tailX[100], tailY[100]; int ntail; int timer; // Variable to store elapsed time in seconds enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN }; eDirection dir; void setup() { gameOver = false; dir = STOP; x = width / 2; y = height / 2; fruitX = rand() % width; fruitY = rand() % height; score = 0; timer = 0; // Initialize timer } void draw() { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {0,0}); cout << "┌"; for(int i = 1; i < width + 1; i++) cout << "─"; cout << "┐\n"; for(int i = 0; i < height; i++) { for(int j = 0; j < width; j++ ) { if(j == 0) cout << "│"; if(i == y && j == x) cout << "O"; else if(i == fruitY && j == fruitX) cout << "F"; else { bool print = false; for (int k = 0; k < ntail; k++) { if (tailX[k] == j && tailY[k] == i) { cout << "@"; print = true; } } if(!print) cout << " "; } if(j == width - 1) cout << "│"; } cout << "\n"; } cout << "└"; for(int i = 1; i < width + 1; i++) cout << "─"; cout << "┘\n"; cout << "score:" << score << "\n"; cout << "Time: " << timer << "s\n"; // Display timer } void input() { if(kbhit()) { char userInput = getch(); switch(toupper(userInput)) { case 'A': case 75: dir = LEFT; break; case 'D': case 77: dir = RIGHT; break; case 'W': case 72: dir = UP; break; case 'S': case 80: dir = DOWN; break; case 27: break; } } } void logic() { int prevX = tailX[0]; int prevY = tailY[0]; int prev2X, prev2Y; tailX[0] = x; tailY[0] = y; for(int i = 1; i < ntail; i++) { prev2X = tailX[i]; prev2Y = tailY[i]; tailX[i] = prevX; tailY[i] = prevY; prevX = prev2X; prevY = prev2Y; } switch(dir){ case LEFT: x--; break; case RIGHT: x++; break; case UP: y--; break; case DOWN: y++; break; } if(x >= width) x = 0; else if(x < 0) x = width - 1; if(y >= height) y = 0; else if(y < 0) y = height - 1; for(int i = 0; i < ntail; i++) if(tailX[i] == x && tailY[i] == y) gameOver = true; if(x == fruitX && y == fruitY) { score += 10; fruitX = rand() % width; fruitY = rand() % height; ntail++; } } int main() { system("cls"); setup(); int tickCounter = 0; while(!gameOver){ draw(); input(); logic(); Sleep(100); tickCounter++; if (tickCounter == 10){ timer++; tickCounter = 0; } } return 0; }