0% found this document useful (0 votes)
110 views27 pages

C++ Project

The document is a code project for a snake game written in C++ by a student named Amisha Sharon R.S. in 12th grade. The summary includes: 1) The code project includes the full source code for a snake game written in C++ by a student. 2) The code contains functions for drawing the snake body, food, and handling keyboard input. 3) It tracks the snake's position on the screen, speed, and score. Collision detection is included to handle eating food.

Uploaded by

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

C++ Project

The document is a code project for a snake game written in C++ by a student named Amisha Sharon R.S. in 12th grade. The summary includes: 1) The code project includes the full source code for a snake game written in C++ by a student. 2) The code contains functions for drawing the snake body, food, and handling keyboard input. 3) It tracks the snake's position on the screen, speed, and score. Collision detection is included to handle eating food.

Uploaded by

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

COMPUTER SCIENCE

THE SNAKE GAME


C++ PROJECT

NAME: AMISHASHARON R.S.


CLASS: XII - A
ADMISSION NO: 70658
ACADEMIC YEAR: 2019-20

1
Certificate
This is to certify that Miss AMISHASHARON R.S. of class
XII - A of International Indian School, Dammam has
completed her project file under my supervision. She has
taken proper care and shown utmost sincerity in completion
of this project.

I certify that this project is up to my expectations and as


per the guidelines issued by CBSE.

Internal Examiner External Examiner


Signature Signature

Name: Name:
Date: Date:

2
ACKNOWLEDGEMENT
Primarily I would thank God for making it possible to
complete this project successfully I would like to thank my
Computer Science teacher, Mrs. Smitha Rajappan, whose
valuable guidance has been the one that helped me patch
this project. Her suggestions and instructions have served as
a major contribution in the completion of this project.

Then I would like to thank my parents and friends who


have helped me with their valuable suggestions. Their
guidance has been helpful in is various phases for the
completion of this project.

CODE

3
_ #include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <iostream.h>

#include <fstream.h>

#include <string.h>

void main(void)

int gdriver = DETECT, gmode, errorcode;

void

*body,*food,*tail1,*tail2,*tail3,*tail4,*head1,*head2,*head3,*head4;

int x, y,X[5000],Y[5000],i=3,

maxx,maxy,speed=100,bo=10,t[10],score=0,hscore=20;

unsigned int size;

char a='6',b,scor[4],hs[4];

int k=2,l,r1,r2,f=0,z=100,first=0,second=1;;

r1=300;

r2=350;

4
ifstream infile("c:\tc\bin\rattle.txt");

infile.getline(hs,4);

infile.close();

hscore = atoi(hs);

/* initialize graphics and local variables */

initgraph(&gdriver, &gmode, "C:\\TURBOC3\\BGI");

/* read result of initialization */

errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */

printf("Graphics error: %s", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1); /* terminate with an error code */

maxx = getmaxx();

maxy = getmaxy();

y = 160;

x = 80;
5
for(int j=0; j<=3; j++)

X[i-j]=x-bo*(j+1);

Y[i-j]=y;

6
//body

setfillstyle(1,2);

bar(10,10,20,20);

setcolor(0);

setlinestyle(0,1,3);

line(9,9,21,21);

line(9,21,21,9);

size = imagesize(10,10,20,20);

body = malloc(size);

getimage(10,10,20,20,body);

cleardevice();

setcolor(0);

//tail1-right

t[0]=20; t[1]=10;

t[2]=10; t[3]=10;

t[4]=20; t[5]=15;

t[6]=10; t[7]=20;

t[8]=20; t[9]=21;

fillpoly(5, t);

size = imagesize(10,10,20,21);
7
tail1 = malloc(size);

getimage(10,10,20,21,tail1);

cleardevice();

//tail2-left

t[0]=10; t[1]=10;

t[2]=20; t[3]=10;

t[4]=10; t[5]=15;

t[6]=20; t[7]=20;

t[8]=10; t[9]=21;

fillpoly(5, t);

size = imagesize(10,10,20,21);

tail2 = malloc(size);

getimage(10,10,20,21,tail2);

cleardevice();

//tail3-up

t[0]=10; t[1]=20;

t[2]=10; t[3]=10;

t[4]=15; t[5]=20;

t[6]=20; t[7]=10;

t[8]=20; t[9]=21;

fillpoly(5, t);
8
size = imagesize(10,10,20,21);

tail3 = malloc(size);

getimage(10,10,20,21,tail3);

cleardevice();

//tail4-down

t[0]=10; t[1]=10;

t[2]=10; t[3]=21;

t[4]=15; t[5]=10;

t[6]=20; t[7]=21;

t[8]=20; t[9]=10;

fillpoly(5, t);

size = imagesize(10,10,20,21);

tail4 = malloc(size);

getimage(10,10,20,21,tail4);

cleardevice();

//head1-right

setlinestyle(1,1,1);

setcolor(2);

fillellipse(10,10,10,5);

setcolor(4);

//eyes
9
fillellipse(15,7,1,1);

fillellipse(15,13,1,1);

size = imagesize(10,5,20,15);

head1 = malloc(size);

getimage(10,5,20,15,head1);

//head2-left

//eyes

fillellipse(5,7,1,1);

fillellipse(5,13,1,1);

size = imagesize(0,5,10,15);

head2 = malloc(size);

getimage(0,5,10,15,head2);

cleardevice();

//head3-up

//eyes

setcolor(2);

fillellipse(12,12,5,10);

setcolor(4);

fillellipse(9,6,1,1);

fillellipse(15,6,1,1);

size = imagesize(7,2,18,12);
10
head3 = malloc(size);

getimage(7,2,18,12,head3);

//head4-down

//eyes

fillellipse(9,17,1,1);

fillellipse(15,17,1,1);

size = imagesize(7,12,18,22);

head4 = malloc(size);

getimage(7,12,18,22,head4);

cleardevice();

//food

setcolor(15);

setfillstyle(1,15);

fillellipse(10,10,3,5);

size = imagesize(5,3,15,17);

food = malloc(size);

getimage(5,3,15,17,food);

cleardevice();

11
/* repeat until a key is pressed */

maxx=getmaxx();

maxy=getmaxy();

setlinestyle(0,1,3);

setcolor(9);

rectangle(0,0,maxx,maxy);

setlinestyle(0,1,2);

line(maxx-150,0,maxx-150,maxy);

setcolor(8);

setfillstyle(1,8);

bar(maxx-147,3,maxx-3,63);

setcolor(12);

int maze=1;

if(maze==1)

setfillstyle(1,6);

bar(4,4,maxx-154,14);

bar(4,4,14,maxy-4);

bar(4,maxy-4,maxx-154,maxy-14);

bar(maxx-154-10,4,maxx-154,maxy-4);

12
settextstyle(0,0,1);

delay(300);

outtextxy(maxx-125,30,"RATTLE SNAKE");

delay(300);

setcolor(11);

setlinestyle(0,1,2);

rectangle(maxx-145,65,maxx-5,205);

outtextxy(maxx-128,70,"INSTRUCTIONS");

delay(200);

setcolor(6);

outtextxy(maxx-140,90,"Commands Key");

delay(300);

setcolor(8);

outtextxy(maxx-140,110," Move Up 8");

delay(50);

outtextxy(maxx-140,130," Move Down 5");

delay(50);

outtextxy(maxx-140,150," Move Right 6");

delay(50);

outtextxy(maxx-140,170," Move Left 4");

delay(50);

outtextxy(maxx-140,190," Exit 0");


13
delay(200);

setcolor(12);

setlinestyle(0,1,2);

rectangle(maxx-145,210,maxx-5,350);

setcolor(1);

outtextxy(maxx-130,220,"Player's Name");

setcolor(15);

outtextxy(maxx-100,230,"Yellow");

setcolor(4);

delay(200);

itoa(score,scor,10);

outtextxy(maxx-140,250,"Score");

outtextxy(maxx-50,250,scor);

delay(200);

setcolor(10);

outtextxy(maxx-140,280,"Level");

delay(200);

setcolor(13);

outtextxy(maxx-140,310,"Maze 1");

delay(200);

setcolor(14);

outtextxy(maxx-140,340,"High Score ");

outtextxy(maxx-50,340,hs);
14
for(j=0; j<=1000; j++)

putpixel(random(maxx-150),random(maxy),6);

delay(1);

while (a!='0')

// plot new image

if(a=='6')

putimage(x, y, head1, XOR_PUT);

if(a=='4')

putimage(x, y, head2, XOR_PUT);

if(a=='8')

putimage(x, y, head3, XOR_PUT);

if(a=='5')

putimage(x, y, head4, XOR_PUT);

for(j=0; j<k; j++)

putimage(X[i-j], Y[i-j], body, XOR_PUT);


15
}

if((X[i-j-1]-X[i-j])<0 && (Y[i-j-1]-Y[i-j])==0)

putimage(X[i-j], Y[i-j], tail1, XOR_PUT);

if((X[i-j-1]-X[i-j])>0 && (Y[i-j-1]-Y[i-j])==0)

putimage(X[i-j], Y[i-j], tail2, XOR_PUT);

if((X[i-j-1]-X[i-j])==0 && (Y[i-j-1]-Y[i-j])<0)

putimage(X[i-j], Y[i-j], tail3, XOR_PUT);

if((X[i-j-1]-X[i-j])==0 && (Y[i-j-1]-Y[i-j])>0)

putimage(X[i-j], Y[i-j], tail4, XOR_PUT);

delay(speed);

if(second==1)

setcolor(15);

outtextxy(maxx-140,360,"Press Any Key...");

getch();

setcolor(0);

outtextxy(maxx-140,360,"Press Any Key...");


16
a='6';

second=2;

if(first==1)

setcolor(15);

outtextxy(maxx-140,360,"Congratulations ");

sound(100);

delay(300);

nosound();

getch();

setcolor(0);

outtextxy(maxx-140,360,"Congratulations ");

second++;

first=2;

// erase old image

if(a=='6')
17
putimage(x, y, head1, XOR_PUT);

if(a=='4')

putimage(x, y, head2, XOR_PUT);

if(a=='8')

putimage(x, y, head3, XOR_PUT);

if(a=='5')

putimage(x, y, head4, XOR_PUT);

for(j=0; j<k; j++)

putimage(X[i-j], Y[i-j], body, XOR PUT);

if((X[i-j-1]-X[i-j])<0 && (Y[i-j-1]-Y[i-j])==0)

putimage(X[i-j], Y[i-j], tail1, XOR_PUT);

if((X[i-j-1]-X[i-j])>0 && (Y[i-j-1]-Y[i-j])==0)

putimage(X[i-j], Y[i-j], tail2, XOR_PUT);

if((X[i-j-1]-X[i-j])==0 && (Y[i-j-1]-Y[i-j])<0)

putimage(X[i-j], Y[i-j], tail3, XOR_PUT);


18
if((X[i-j-1]-X[i-j])==0 && (Y[i-j-1]-Y[i-j])>0)

putimage(X[i-j], Y[i-j], tail4, XOR_PUT);

if(f==0)

putimage(r1,r2,food,XOR_PUT);

f=1;

z--;

if((x>=r1 && y>=r2 && x<=r1+10 && y<=r2+10) || (x<=r1 && y<=r2
&&

x>=r1-10 && y>=r2-10) || z==0)

if(z!=0)

sound(800);

delay(20);

setcolor(0);

score += 10;

outtextxy(maxx-50,250,scor);

19
itoa(score,scor,10);

if(score>hscore)

strcpy(hs,scor);

setfillstyle(1,1);

bar(maxx-140,337,maxx-20,348);

setcolor(14);

outtextxy(maxx-50,340,hs);

outtextxy(maxx-140,340,"High Score ");

if(first==0)

first=1;

setcolor(4);

outtextxy(maxx-50,250,scor);

k++;

nosound();

z=100;

putimage(r1,r2,food,XOR_PUT);

repr1:

r1=random(450);
20
if(r1<50)

goto repr1;

repr2:

r2=random(400);

if(r2<50)

goto repr2;

f=0;

i++;

X[i]=x;

Y[i]=y;

b=a;

if(kbhit())

rep:

a=getche();

if((b=='6' && a=='4') || (b=='4' && a=='6'))

a=b;
21
if((b=='8' && a=='5') || (b=='5' && a=='8'))

a=b;

if(a!='6' && a!='4' && a!='8' && a!='0' && a!='5')

a=b;

/* if(x>maxx-170)

x=0;

if(y>maxy)

y=0;*/

if(a=='8')

y -= bo;

if(a=='5')

y += bo;

if(a=='4')

x -= bo;

22
if(a=='6')

x += bo;

for(j=i+1; j<i-k; j--)

if((Y[i]>=Y[j] && Y[i]<=Y[j]+10) || (Y[i]<=Y[j] && Y[i]>=X[j]-10))

if((X[i]>=X[j] && X[i]<=X[j]+10) || (X[i]<=X[j] && X[i]>=X[j]-10))

a='0';

outtextxy(maxx-140,360,"C ");

if((X[i]>=X[j] && X[i]<=X[j]+10) || (X[i]<=X[j] && X[i]>=X[j]-10))

if((Y[i]>=Y[j] && Y[i]<=Y[j]+10) || (Y[i]<=Y[j] && Y[i]>=X[j]-10))

a='0';

}
23
outtextxy(maxx-140,360,"C ");

/* for(j=i; j<i-k; j--)

if((y>=Y[j] && y<=Y[j]+10) || (y<=Y[j] && y>=Y[j]-10))

if((x>=X[j] && x<=X[j]+10) || (x<=X[j] && x>=X[j]-10))

a='5';

if((x>=X[j] && x<=X[j]+10) || (x<=X[j] && x>=X[j]-10))

if((y>=Y[j] && y<=Y[j]+10) || (y<=Y[j] && y>=Y[j]-10))

a='5';

}
24
if(j==0)

break;

} */

/* if(x<=0)

x=maxx-170;

if(y<=0)

y=maxy;*/

if(maze==1)

if(x<=14 || x>=maxx-184 || y<=14 || y>=maxy-14)

a='0';

if(score>hscore)

25
ofstream onfile("c:\tc\bin\rattle.txt");

onfile<<scor;

onfile.close();

setcolor(15);

outtextxy(maxx-140,390," Gameover");

sound(100);

delay(400);

nosound();

getch();

/* clean up */

free(body);

closegraph();

26
27

You might also like