Search This Blog

How to make snack game in c graphics





#include<stdio.h>

#include<dos.h>

#include<ctype.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#define TOP 1

#define DOWN 2

#define LEFT 3

#define RIGHT 4

void score(int s=1)

{

    static unsigned long sc=0;

    window(70,22,78,23);

    if(s)

    {

        sc=sc+100;

        cprintf("      ");

        window(70,22,78,23);

        cprintf("%ld",sc);

    }

    else

        sc=0;

}

void status(char *s,int c=WHITE)

{

    window(70,23,78,25);

    textcolor(c);

    cprintf("%s",s);

    for(int x=strlen(s);x<7;x++)

    cprintf(" ");

    textcolor(WHITE);

}

void main()

{

    clrscr();

    _setcursortype(_NOCURSOR);

    textcolor(WHITE);

    cprintf("\n   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ");

    for(int i=0;i<17;i++)

    cprintf("   ³                                                                         ³  ");

    cprintf("   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  ");

    cprintf("   ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿   Press 'x' to Exit            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿  ");

    cprintf("   ³  S N A K E  G A M E  ³   Press 'p' to Pause and Play  ³ SCORE : 0       ³  ");

    cprintf("   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ                                ³ STATUS: Playing ³  ");

    cprintf("                                                           ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ  ");

    int snkx[20],snky[20],d=LEFT,p=0,sz=6,restart=1;

    while(1)

    {

        if(restart)

        {

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

            snkx[i]=30+i*2;

            for(i=6;i<20;i++)

            snkx[i]=0;

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

            snky[i]=9;

            sz=6;

            p=0;

            d=LEFT;

            restart=0;

            score();

            window(6,3,76,19);

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

            cprintf("  ");

        }

        int x,y;

        if(p!=1)

        {

            randomize();

            do{

                        x=random(70)+6;

                    }while(x%2==1);

                    y=random(16)+3;

            p=1;

            window(x,y,x+1,y+1);

            textcolor(LIGHTGREEN);

            cprintf("%c",1);

            textcolor(WHITE);

        }

        while(!kbhit())

        {

            status("Playing",LIGHTGREEN);

            window(snkx[sz-1],snky[sz-1],snkx[sz-1]+2,snky[sz-1]+2);

            cprintf(" ");

            for(i=0;i<sz-1;i++)

            {

                window(snkx[i],snky[i],snkx[i]+1,snky[i]+1);

                cprintf("");

            }

            for(i=sz-1;i>=1;i--)

            {

                snkx[i]=snkx[i-1];

                snky[i]=snky[i-1];

            }

            switch(d)

            {

                case RIGHT : snkx[0]+=2; break;

                case LEFT  : snkx[0]-=2; break;

                case TOP   : snky[0]-=1; break;

                case DOWN  : snky[0]+=1;

            }

            delay(200);

            if(x==snkx[0] && y==snky[0])

            {

                int f=0;

                do{

                    do{

                        x=random(70)+6;

                    }while(x%2==1);

                    y=random(16)+3;

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

                        if(snkx[i]==x && snky[i]==y)

                            f=1;

                }while(f);

                p=1;

                window(x,y,x+1,y+1);

                textcolor(LIGHTGREEN);

                cprintf("%c",1);

                textcolor(WHITE);

 

                score();

                sz++;

 

                switch(d)

                {

                    case RIGHT : snkx[sz-1]+=2;

                                 snky[sz-1]=snky[sz-2];

                                 break;

                    case LEFT  : snkx[sz-1]-=2;

                                 snky[sz-1]=snky[sz-2];

                                 break;

                    case TOP   : snky[sz-1]-=1;

                                 snkx[sz-1]=snkx[sz-2];

                                 break;

                    case DOWN  : snky[sz-1]+=1;

                                 snkx[sz-1]=snkx[sz-2];

                }

            }

            int sflag=0;

            for(i=0;i<sz-1;i++)

                if(snkx[sz-1]==snkx[i] && snky[sz-1]==snky[i])

                {

                    sflag=1;

                    break;

                }

            if(snkx[0]<5 || snkx[0]>76 || snky[0]<3 || snky[0]>19)

                sflag=1;

            if(sflag)

            {

                textcolor(LIGHTRED);

                for(i=1;i<sz;i++)

                {

                    window(snkx[i],snky[i],snkx[i]+1,snky[i]+1);

                    cprintf("");

                }

                status("Stoped",LIGHTRED);

                score(0);

                restart=1;

                break;

            }

        }

        char ch=getch();

        switch(tolower(ch))

        {

            case 'x' : return;

            case 'p' :

                        status("Paused");

                        getch();

                        break;

            case 0 : {

                        char chh=getch();

                        switch(chh)

                        {

                            case 72 :{

                                    if(d==LEFT || d== RIGHT)

                                    d=TOP;

                                    } break;

                            case 80 :{

                                    if(d==LEFT || d== RIGHT)

                                    d=DOWN;

                                    } break;

                            case 75 :{

                                    if(d==TOP || d==DOWN)

                                    d=LEFT;

                                    } break;

                            case 77 :{

                                    if(d==TOP || d==DOWN)

                                    d=RIGHT;

                                    }

                        }

                    } break;

        }

    }

}   // main




Share this article :

0 comments:

Post a Comment