Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
first commit
  • Loading branch information
yigagilbert authored Mar 2, 2022
1 parent 5126a4a commit 4a67a24
Showing 1 changed file with 326 additions and 0 deletions.
326 changes: 326 additions & 0 deletions SNAKE GAME-1.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,326 @@
#include <iostream>
#include <conio.h>
#include <cstdlib> // for the rand funtion
#include <unistd.h> // for the sleep funtion

using namespace std;

bool gameover;

const int width = 30;

const int height = 17;

int x, y, fruitX, fruitY, score;

int tailX[100], tailY[100]; //snake coordinates

int nTail;

enum eDirecton {STOP = 0, LEFT,RIGHT, UP,DOWN}; // Controls

eDirecton dir;

void Setup() {
gameover = false;

dir = STOP;

x = width / 2;

y = height / 2;

fruitX = rand() % width; //display fruit in a random place

fruitY = rand() % height; score = 0;
}
void Draw() {

system("cls");

cout<<"########## SNAKE GAME ##########";
cout << endl;
cout<<"################################";
cout << endl;
cout<<"########### ENJOY ###########";
cout << endl;

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 << "#"; //walls

if (i == y && j == x)
cout << "@"; // snake tale

else if (i == fruitY && j == fruitX )
cout << "%"; // change it to change the fruit

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 << endl;
}

for (int i = 0; i< width+2; i++)
cout << "#";

cout << endl;

cout << "Score:" << score << endl ;
}
void DrawEnd(){
system("cls");
cout<<"########## thanks for ##########";
cout << endl;
cout<<"############ playing ############";
cout << endl;
cout<<"########### YOUR SCORE IS : "<< score;
cout << endl;
sleep(5);
}

void Input ()
{
if (_kbhit ()) { //get directions

switch (_getch ()) {

case 'a':
dir = LEFT;
break;

case 'd':
dir = RIGHT;
break;

case 'w':
dir = UP;
break;

case 's':
dir = DOWN ;
break;

case 'x':
gameover = true;
break;
}
}
}
void algorithm1() //game logic 1
{
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 || y >= height || y == 0 )
gameover = true;

for (int i =0; i< nTail ;i++)
if (tailX[i] == x && tailY[i] == y)
gameover = true;

if (x == fruitX && y == fruitY) {
score +=15;

fruitX = rand() % width;

fruitY = rand() % height;

nTail ++;
}
if(gameover == true){
DrawEnd();
}
}

void algorithm2() // game logic 2
{
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 ++;
}
if(gameover == true){
DrawEnd();
}
}


int main()
{
int choice;
cout<< "enter 1 for simple level and 2 for hard level";
cout << endl;
cin >> choice;
switch(choice)
{
case 1: //simple level of the game

Setup();

while (!gameover)
{

Draw ();

Input ();

algorithm2 ();
}

break;

case 2: // hard level of the game

Setup();

while (!gameover) {

Draw ();

Input ();

algorithm1 ();
}

break;

default:
cout << "Invalid input";
}
return 0;
}

0 comments on commit 4a67a24

Please sign in to comment.