0% found this document useful (0 votes)
33 views4 pages

Snake Game 1

This document contains the code for a snake game. It defines variables and functions for setting up the game, drawing the game display, getting user input, updating game logic, and running the main game loop. Key functions include Setup() to initialize the game, Draw() to display the game board and entities, Input() to get user commands, Logic() to update the snake and check for collisions, and main() to run the game loop until it is over.

Uploaded by

sotaroedits
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views4 pages

Snake Game 1

This document contains the code for a snake game. It defines variables and functions for setting up the game, drawing the game display, getting user input, updating game logic, and running the main game loop. Key functions include Setup() to initialize the game, Draw() to display the game board and entities, Input() to get user commands, Logic() to update the snake and check for collisions, and main() to run the game loop until it is over.

Uploaded by

sotaroedits
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <iostream>

#include <conio.h>
#include <windows.h>
#include <cstdlib>
#include <ctime>

using namespace std;

bool gameOver;
bool paused = false;
const int width = 40;
const int height = 25;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
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;
}

void Draw()
{
system("cls");
// Top border
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 << "|"; // Left border

if (i == y && j == x)
cout << "\033[1;32mO"; // Snake's head color (bright green)
else if (i == fruitY && j == fruitX)
cout << "\033[1;31mF"; // Fruit color (bright red)
else
{
bool print = false;
for (int k = 0; k < nTail; k++)
{
if (tailX[k] == j && tailY[k] == i)
{
cout << "\033[1;33mo"; // Snake's body color (bright
yellow)
print = true;
}
}
if (!print)
cout << " ";
}

if (j == width - 1)
cout << "|"; // Right border
}
cout << endl;
}

// Bottom border
for (int i = 0; i < width + 2; i++)
cout << "-";
cout << endl;

cout << "\033[1;37mScore:" << score << endl; // Score color (bright white)
cout << "Press 'P' to pause/unpause the game." << endl;
}

void Input()
{
if (_kbhit())
{
switch (_getch())
{
case 'a':
if (dir != RIGHT) dir = LEFT;
break;
case 'd':
if (dir != LEFT) dir = RIGHT;
break;
case 'w':
if (dir != DOWN) dir = UP;
break;
case 's':
if (dir != UP) dir = DOWN;
break;
case 'x':
gameOver = true;
break;
case 'p':
paused = !paused;
break;
}
}
}

void Logic()
{
if (!paused) {
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;
default:
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()
{
srand(time(NULL));
Setup();
while (!gameOver)
{
Draw();
Input();
Logic();
Sleep(100);
}
return 0;
}

You might also like