⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edacioussnake.c

📁 TC2.0编写的贪吃蛇游戏
💻 C
📖 第 1 页 / 共 2 页
字号:
}
void time_0(struct time *noncetime)/*将时间设置为00:00:00.00,noncetime将作为置0前的时间存储起来*/
{
        struct time timezero;

        timezero.ti_sec=0;
        timezero.ti_min=0;
        timezero.ti_hour=0;
        timezero.ti_hund=0;
        gettime(noncetime);/*保存当前时间*/
        settime(&timezero); /*置时间为00:00:00.00*/
}
void wink()
{
        char *gamename="Edacious Snake";
        char *gameauthor="Author : Cifry";
        char *qq="OICQ   : 442044866";
        static int flag=0,num=0;
        int color;

        setviewport(gamwin_x-1,gamwin_y-1,gamwin_x+199+1,gamwin_y+199+1,0);

        if(flag==0)
        {
                color=RED;
                if(++num==5)
                {
                        flag=1;
                        num=0;
                }
        }
        else
        {
                color=BLUE;
                if(++num==5)
                {
                        flag=0;
                        num=0;
                }
         }
        setcolor(RED);
        rectangle(2,-48,197,-2);
        setfillstyle(SOLID_FILL,RED);
        bar(2,-48,197,-33);
        settextstyle(0,0,1);
        setcolor(CYAN);
        outtextxy(45,-43,gamename);
        setcolor(color);
        outtextxy(20,-27,gameauthor);
        outtextxy(20,-12,qq);

        setviewport(gamwin_x,gamwin_y,gamwin_x+199,gamwin_y+199,0);/*返回游戏窗口*/
}
void operate() /*玩家控制*/
{
        extern int key;
        key=0;
        while(1)
        {
                struct time t_end,t_time;
                wink();/*闪烁信息*/
                food();     /*投放食物*/
                {/*信息刷新*/
                        void inform_size();

                        static int cmpsize=3;
                        if(cmpsize!=snakesize)
                        {
                                cmpsize=snakesize;
                                inform_size();
                        }
                }


                if(key==0)  /*程序初始化后蛇随机移动方向*/
                {
                        int randnum;
                        time_t pip;

                        srand((unsigned) time(&pip));
                        randnum=(unsigned)rand();
                        randnum=randnum%3+1;
                        switch(randnum)
                        {
                                case 1 :key=RIGHT;goto right;
                                case 2 :key=UP;goto up;
                                case 3 :key=DOWN;goto down;
                        }
                }

                time_0(&t_time);

                while(1)  /*接受键盘按键的有效时间*/
                {
                        gettime(&t_end);
                        if(t_end.ti_hund>=difficulty){revert_time(&t_time,&t_end);break;}
                        if(bioskey(1))key=bioskey(0);
                }

                switch(key)
                {
                        case LEFT :inspect(head->x-1,head->y);break;
                        case RIGHT:right:inspect(head->x+1,head->y);break;
                        case UP   :up:inspect(head->x,head->y-1);break;
                        case DOWN :down:inspect(head->x,head->y+1);break;
                        case ESC  :goto gameover;
                }

        }
        gameover:
        {
                {/*贪吃蛇所有元素被清除*/
                        while(head->back!=NULL)
                        {
                                head=head->back;
                                free(head->front);
                                head->front=NULL;
                        }
                        free(head);
                }
                edacioussnake();
        }
}
void gamewindow() /*游戏窗口*/
{


        { /*窗口边框*/
                setcolor(RED);
                setviewport(gamwin_x-1,gamwin_y-1,gamwin_x+199+1,gamwin_y+199+1,0);
                rectangle(0,0,201,201);
        }
        wink();
        setviewport(gamwin_x,gamwin_y,gamwin_x+199,gamwin_y+199,0);

}
void aboutgame() /*关于游戏*/
{
        char *up="\30      UP";
        char *down="\31      DOWN";
        char *left="\33      LEFT";
        char *right="\32      RIGHT ";
        char *esc="ESC     EXIT";
        char *enter=" ENTER    CONFIRM";
        int row=45;

        {

                { /*窗口边框*/
                        setcolor(RED);
                        setviewport(infwin_x-1,infwin_y-1,infwin_x+199+1,infwin_y+199+1,0);
                        rectangle(0,0,201,201);
                }
                setviewport(infwin_x,infwin_y,infwin_x+199,infwin_y+199,0);

        }
        settextstyle(0,0,1);

        setcolor(GREEN);
        outtextxy(50,row+=25,up);
        outtextxy(50,row+=15,down);
        outtextxy(50,row+=15,left);
        outtextxy(50,row+=15,right);
        outtextxy(42,row+=15,esc);
        outtextxy(26,row+=15,enter);
        setcolor(RED);
        outtextxy(113,192,"Version 0.7");

}
void inform_size()/*贪吃蛇长度信息*/
{
        char *size;

        setviewport(infwin_x,infwin_y,infwin_x+199,infwin_y+199,0);
        sprintf(size,"SIZE: %d",snakesize);
        setfillstyle(SOLID_FILL,YELLOW);
        bar(102,17,188,35);
        setcolor(RED);
        outtextxy(110,24,size);
        setviewport(gamwin_x,gamwin_y,gamwin_x+199,gamwin_y+199,0);/*回到游戏窗口*/
        
}
void inform_grand(int diff)/*贪吃蛇速度信息*/
{
        char *inform;
        setviewport(infwin_x,infwin_y,infwin_x+199,infwin_y+199,0);
        sprintf(inform,"GRADE: %d",diff);
        setfillstyle(SOLID_FILL,CYAN);
        bar(12,17,99,35);
        setcolor(RED);
        outtextxy(20,24,inform);
        setviewport(gamwin_x,gamwin_y,gamwin_x+199,gamwin_y+199,0);
}
void face()/*界面*/
{
        aboutgame();
        gamewindow();
                
}
void option_display(int row,int num,int color)/*游戏难度菜单选项*/
{
        int pixel_x,pixel_y;
        char *grade;

        for(pixel_x=0+1;pixel_x<200-1;pixel_x++)
        for(pixel_y=row*20+1;pixel_y<(row*20)+20-1;pixel_y++)
        putpixel(pixel_x,pixel_y,color);

        settextstyle(0,0,1);
        setcolor(BLUE);
        sprintf(grade,"GRADE %d",num);
        outtextxy(75,row*20+8,grade);
}
void menu_display()/*游戏难度菜单显示*/
{
        int i=0;

        while(i<10)
        {
                option_display(i,i+1,DARKGRAY);
                i++;
        }
}

void setgame()/*游戏难度设置*/
{
        int row=0;

        setviewport(gamwin_x,gamwin_y,gamwin_x+199,gamwin_y+199,0);
        clearviewport();/*清除窗口内容*/
        menu_display();

        option_display(row,1,LIGHTGRAY);
        difficulty=90;
        inform_grand(row+1);/*信息反馈*/
        inform_size();

        while(1)
        {
                int key;
                key=bioskey(0);
                if(key==UP&&row!=0)
                {
                        option_display(row,row+1,DARKGRAY);
                        row-=1;
                        option_display(row,row+1,LIGHTGRAY);
                }

                if(key==DOWN&&row!=9)
                {
                        option_display(row,row+1,DARKGRAY);
                        row+=1;
                        option_display(row,row+1,LIGHTGRAY);
                }
                if(key==ENTER){clearviewport();break;}
                if(key==ESC)exit(0);

                if(difficulty!=diff[row])
                {
                difficulty=diff[row];
                inform_grand(row+1);/*信息反馈*/

                }
        }
}
void edacioussnake() /*贪吃蛇游戏*/
{
        initmap();/*地图初始化*/
        inisnake();/*贪吃蛇初始化*/
        face();/*界面设计*/
        setgame();/*游戏设置*/
        operate();/*游戏运行*/

}
void userinigraph()/*自定义图形检测*/
{
        int gdriver,gmode,errorcode;
        gdriver=VGA;
        gmode=VGAHI;
        initgraph(&gdriver,&gmode,"");
        errorcode = graphresult();
        if (errorcode !=0)
        {
                printf("\n\t\t\tGame    : Edacious Snake\n");
                printf("\t\t\tAuthor  : Cifry\n");
                printf("\n\terror:\t%s\n", grapherrormsg(errorcode));
                getch();
                exit(1);
        }
}
int main()
{
        userinigraph();  /*图形检测*/
        edacioussnake(); /*贪吃蛇游戏*/
        closegraph();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -