#include #include #include #include #include #include int arr[1000][2],prev[1000][2],k; draw() { int i,x,y,x1,y1; setcolor(8); rectangle(0,0,490,480); for ( i = 0 ; i < k;i++) { x = arr[i][0]*10; y = arr[i][1]*10; setcolor(11); rectangle(x,y,x+10,y+10); } x1 = prev[k-1][0]*10; y1 = prev[k-1][1]*10; setcolor(BLACK); rectangle(x1,y1,x1+10,y1+10); } main() { char direct = 77; int gd = DETECT,gm,i,j,life,count,born,level,valid,bx,by,direct1,score = 0; int bonus,count1; k = 3; for( i = 0 ; i < k;i++) { arr[i][0] = k-1-i; arr[i][1] = 0; } clrscr(); initgraph(&gd,&gm,"e:\\proggy\\tc\\bgi"); setcolor(LIGHTMAGENTA); outtextxy(150,20,"HAVE FUN WITH SNAKES"); outtextxy(10,30,"RULES TO PLAY (play using arrow keys)"); outtextxy(10,40,"GAME STARTS WITH A"); setcolor(11); outtextxy(10,60,"SNAKE(ллл) WITH LENGTH THREE"); setcolor(LIGHTMAGENTA); outtextxy(250,60,"GO AND EAT THE "); setcolor(RED); outtextxy(10,70,"RED COLOUR REFRESHING DIET(л)"); setcolor(LIGHTMAGENTA); outtextxy(250,70,"LENGTH OF THE SNAKE INCREASES WITH MORE DIET"); setcolor(10); outtextxy(10,80,"Press ESC to quit the game"); outtextxy(10,100,"GAME GETS OVER WHEN THE SNAKE DASHES ITSELF"); setcolor(7); outtextxy(10,140,"GAME COPYRIGHT ЎЎАА KAMAL PARYANI ААЏЏ"); outtextxy(10,150,"any suggestions or queries mail at kamal8182@yahoo.co.in"); getch(); initgraph(&gd,&gm,"e:\\proggy\\tc\\bgi"); printf("Select level : \n"); printf("\n4 -- excellent"); printf("\n3 -- good"); printf("\n2 -- moderate"); printf("\n1 -- beginner"); printf("\nENTER"); scanf("%d",&level); initgraph(&gd,&gm,"e:\\proggy\\tc\\bgi"); // col = 1; // for ( i = 0; i < k;i++) count = 0; setcolor(2); outtextxy(500,196,"SCORE"); direct = 77; life = 0; randomize(); while(direct != 27) { if ( life == 0) while(valid) { valid = 0; bx = random(47); by = random(46); for(i = 0 ; i < k;i++) if(bx == arr[i][0] && by == arr[i][1]) valid = 1; } life = 1; setcolor(LIGHTMAGENTA); if(count == 200) { bonus = 1; count1 = 0; setcolor(RED); } if(bonus) { count1++; setcolor(RED); outtextxy(500,140,"PROTIENS"); } rectangle(bx*10,by*10,bx*10+10,by*10+10); count++; if(bonus) count1++; if(count1 == 40) { bonus = 0; count1 = 0; count = 0; setcolor(WHITE); outtextxy(500,140,"ллллллллллллл"); } for (i = 0; i < k;i++) { prev[i][0] = arr[i][0]; prev[i][1] = arr[i][1]; } if(kbhit()) { getch(); direct = getch(); if(abs(direct1 - direct) == 8) direct = direct1; if(abs(direct1 - direct) == 2) direct = direct1; } direct1 = direct; delay(200/level); switch(direct) { case 72 : arr[0][1]--; break; case 75 : arr[0][0]--; break; case 77 : arr[0][0]++; break; case 80 : arr[0][1]++; break; } for(i = 1 ; i < k;i++) if(arr[0][0] == arr[i][0] && arr[0][1] == arr[i][1]) { outtextxy(500,300,"GAME OVER"); getch(); exit(0); } if(arr[0][0] == bx && arr[0][1] == by) { life = 0; valid = 1; score++; if(bonus == 1) { bonus = 0; count1 = 0; count = 0; score+=4; setcolor(WHITE); outtextxy(500,140,"ллллллллллллл"); } k++; setcolor(BLACK); rectangle(bx*10,by*10,bx*10+10,by*10+10); switch(direct) { case 72 : arr[0][1] = by -1; break; case 75 : arr[0][0] = bx -1; break; case 77 : arr[0][0] = bx +1; break; case 80 : arr[0][1] = by +1; break; } } for(i = 1 ; i < k;i++) { arr[i][0] = prev[i-1][0]; arr[i][1] = prev[i-1][1]; } for(i = 0;i < k;i++) { if(arr[i][0] > 48) arr[i][0] = 0; if(arr[i][0] < 0) arr[i][0] = 48; if(arr[i][1] > 47) arr[i][1] = 0; if(arr[i][1] < 0) arr[i][1] = 46; } gotoxy(72,13); printf("%4d",score); draw(); } getch(); }