Giter Site home page Giter Site logo

projet's Introduction

Projet

#include <stdio.h> #include <time.h> #include <stdlib.h> #include <conio.h> #include<time.h> #include<ctype.h> #include <time.h> #include <windows.h> #include <process.h>

#define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77

int length; int bend_no; int len; char key; void record(); void load(); int life; void Delay(long double); void Move(); void Food(); int Score(); void Print(); void gotoxy(int x, int y); void GotoXY(int x,int y); void Bend(); void Boarder(); void Down(); void Left(); void Up(); void Right(); void ExitGame(); int Scoreonly();

struct coordinate { int x; int y; int direction; };

typedef struct coordinate coordinate;

coordinate head, bend[500],food,body[30];

int main() {

system("color 1D");
char key;

Print();

system("cls");

load();

length=5;

head.x=25;

head.y=20;

head.direction=RIGHT;

Boarder();

Food(); //to generate food coordinates initially

life=3; //number of extra lives

bend[0]=head;

Move();   //initialing initial bend coordinate

return 0;

}

void Move() { int a,i;

do
{

    Food();
    fflush(stdin);

    len=0;

    for(i=0; i<30; i++)

    {

        body[i].x=0;

        body[i].y=0;

        if(i==length)

            break;

    }

    Delay(length);

    Boarder();

    if(head.direction==RIGHT)

        Right();

    else if(head.direction==LEFT)

        Left();

    else if(head.direction==DOWN)

        Down();

    else if(head.direction==UP)

        Up();

    ExitGame();

}
while(!kbhit());

a=getch();

if(a==27)

{

    system("cls");

    exit(0);

}
key=getch();

if((key==RIGHT&&head.direction!=LEFT&&head.direction!=RIGHT)||(key==LEFT&&head.direction!=RIGHT&&head.direction!=LEFT)||(key==UP&&head.direction!=DOWN&&head.direction!=UP)||(key==DOWN&&head.direction!=UP&&head.direction!=DOWN))

{

    bend_no++;

    bend[bend_no]=head;

    head.direction=key;

    if(key==UP)

        head.y--;

    if(key==DOWN)

        head.y++;

    if(key==RIGHT)

        head.x++;

    if(key==LEFT)

        head.x--;

    Move();

}

else if(key==27)

{

    system("cls");

    exit(0);

}

else

{

    printf("\a");

    Move();

}

}

void gotoxy(int x, int y) {

COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

} void GotoXY(int x, int y) { HANDLE a; COORD b; fflush(stdout); //vide le tampon de sortie b.X = x; b.Y = y; a = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(a,b); } void load() { int row,col,r,c,q; gotoxy(36,14); printf("loading..."); gotoxy(30,15); for(r=1; r<=20; r++) { for(q=0; q<=100000000; q++); //to display the character slowly printf("%c",177); } getch(); } void Down() { int i; for(i=0; i<=(head.y-bend[bend_no].y)&&len<length; i++) { GotoXY(head.x,head.y-i); { if(len==0) printf("v"); else printf("*"); } body[len].x=head.x; body[len].y=head.y-i; len++; } Bend(); if(!kbhit()) head.y++; } void Delay(long double k) { Score(); long double i; for(i=0; i<=(10000000); i++); } void ExitGame() { int i,check=0; for(i=4; i<length; i++) //starts with 4 because it needs minimum 4 element to touch its own body { if(body[0].x==body[i].x&&body[0].y==body[i].y) { check++; //check's value increases as the coordinates of head is equal to any other body coordinate } if(i==length||check!=0) break; } if(head.x<=10||head.x>=70||head.y<=10||head.y>=30||check!=0) { life--; if(life>=0) { head.x=25; head.y=20; bend_no=0; head.direction=RIGHT; Move(); } else { system("cls"); printf("All lives completed\nBetter Luck Next Time!!!\nPress any key to quit the game\n"); record(); exit(0); } } } void Food() { if(head.x==food.x&&head.y==food.y) { length++; time_t a; a=time(0); srand(a); food.x=rand()%70; if(food.x<=10) food.x+=11; food.y=rand()%30; if(food.y<=10)

        food.y+=11;
}
else if(food.x==0)/*to create food for the first time coz global variable are initialized with 0*/
{
    food.x=rand()%70;
    if(food.x<=10)
        food.x+=11;
    food.y=rand()%30;
    if(food.y<=10)
        food.y+=11;
}

} void Left() { int i; for(i=0; i<=(bend[bend_no].x-head.x)&&len<length; i++) { GotoXY((head.x+i),head.y); { if(len==0) printf("<"); else printf("*"); } body[len].x=head.x+i; body[len].y=head.y; len++; } Bend(); if(!kbhit()) head.x--;

} void Right() { int i; for(i=0; i<=(head.x-bend[bend_no].x)&&len<length; i++) { //GotoXY((head.x-i),head.y); body[len].x=head.x-i; body[len].y=head.y; GotoXY(body[len].x,body[len].y); { if(len==0) printf(">"); else printf(""); } /body[len].x=head.x-i; body[len].y=head.y;/ len++; } Bend(); if(!kbhit()) head.x++; } void Bend() { int i,j,diff; for(i=bend_no; i>=0&&len<length; i--) { if(bend[i].x==bend[i-1].x) { diff=bend[i].y-bend[i-1].y; if(diff<0) for(j=1; j<=(-diff); j++) { body[len].x=bend[i].x; body[len].y=bend[i].y+j; GotoXY(body[len].x,body[len].y); printf(""); len++; if(len==length) break; } else if(diff>0) for(j=1; j<=diff; j++) { /GotoXY(bend[i].x,(bend[i].y-j)); printf("");/ body[len].x=bend[i].x; body[len].y=bend[i].y-j; GotoXY(body[len].x,body[len].y); printf(""); len++; if(len==length) break; } } else if(bend[i].y==bend[i-1].y) { diff=bend[i].x-bend[i-1].x; if(diff<0) for(j=1; j<=(-diff)&&len<length; j++) { /GotoXY((bend[i].x+j),bend[i].y); printf("");/ body[len].x=bend[i].x+j; body[len].y=bend[i].y; GotoXY(body[len].x,body[len].y); printf(""); len++; if(len==length) break; } else if(diff>0) for(j=1; j<=diff&&len<length; j++) { /GotoXY((bend[i].x-j),bend[i].y); printf("");/ body[len].x=bend[i].x-j; body[len].y=bend[i].y; GotoXY(body[len].x,body[len].y); printf(""); len++; if(len==length) break; } } } } void Boarder() { system("cls"); int i; GotoXY(food.x,food.y); /displaying food/ printf(""); for(i=10; i<71; i++) { GotoXY(i,10); printf("!"); GotoXY(i,30); printf("!"); } for(i=10; i<31; i++) { GotoXY(10,i); printf("!"); GotoXY(70,i); printf("!"); } } void Print() { //GotoXY(10,12); printf("\tWelcome to the mini project Snake game.(press any key to continue)\n"); getch(); system("cls"); printf("\tGame instructions:\n"); printf("\n-> Use arrow keys to move the snake.\n\n-> You will be provided foods at the several coordinates of the screen which \n"); printf(" you have to eat. Everytime you eat a food the length of the snake will be \n"); printf("increased by 1 element and thus the score.\n\n-> Here you are provided with 3 lives. Your life will decrease as you hit \n"); printf("the wall or snake's body.\n\n-> You can pause the game in its middle by pressing any key. \n"); printf(" To continue the paused game press any other key once again\n\n-> If you want to exit press esc. \n\nPress any key to play game..."); if(getch()==27) exit(0); } void record() { char plname[20],nplname[20],cha,c; int i,j,px; FILE info; info=fopen("record.txt","a+"); getch(); system("cls"); printf("Enter your name\n"); scanf("%[^\n]",plname); //********************** for(j=0; plname[j]!='\0'; j++) //to convert the first letter after space to capital { nplname[0]=toupper(plname[0]); if(plname[j-1]==' ') { nplname[j]=toupper(plname[j]); nplname[j-1]=plname[j-1]; } else nplname[j]=plname[j]; } nplname[j]='\0'; //***************************** //sdfprintf(info,"\t\t\tPlayers List\n"); fprintf(info,"Player Name :%s\n",nplname); //for date and time

time_t mytime;
mytime = time(NULL);
fprintf(info,"Played Date:%s",ctime(&mytime));
//**************************
fprintf(info,"Score:%d\n",px=Scoreonly());//call score to display score
//fprintf(info,"\nLevel:%d\n",10);//call level to display level
for(i=0; i<=50; i++)
    fprintf(info,"%c",'_');
fprintf(info,"\n");
fclose(info);
printf("Wanna see past records press 'y'\n");
cha=getch();
system("cls");
if(cha=='y')
{
    info=fopen("record.txt","r");
    do
    {
        putchar(c=getc(info));
    }
    while(c!=EOF);
}
fclose(info);

} int Score() { int score; GotoXY(20,8); score=length-5; printf("SCORE : %d",(length-5)); score=length-5; GotoXY(50,8); printf("Life : %d",life); return score; } int Scoreonly() { int score=Score(); system("cls"); return score; } void Up() { int i; for(i=0; i<=(bend[bend_no].y-head.y)&&len<length; i++) { GotoXY(head.x,head.y+i); { if(len==0) printf("^"); else printf("*"); } body[len].x=head.x; body[len].y=head.y+i; len++; } Bend(); if(!kbhit()) head.y--; }

projet's People

Contributors

manal21 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.