c语言贪吃蛇

# include <stdio.h>
# include <malloc.h>
# include <time.h>
# include <stdlib.h>
# include <windows.h>
# include <conio.h>
void Gameover(void);
void button(void);
void Move(void);
void Disfood(void);
void Show(void);
char * snake;
int a,b;
int x[320],y[320];
int a1,b1;//记忆a,b的变量
int lenght=1;
int key=5;     
char GameMap[12][30]={    {'&','&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&'    ,'&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','&'},
                            {'&','&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&' ,'&'}};
    

int main()
{
    int i,j;
    //地图
    //蛇的初始地址
    snake=&GameMap[10][19];
    x[0]=10;
    y[0]=19;
    //蛇头
    *snake='@';
    Show();
    return 0;
}
//随机分布食物
void Disfood(void)
{
    int i,j;
    int n=0;
    int tru;
    for(i=1;i<11;i++)
    {
        for(j=1;j<29;j++)
        {
            if(GameMap[i][j]=='*')
                n++;
        }
    }
    //if(n<7)
    if(n<2)
    {
        tru=0;
        srand(time(0));
        while(tru!=1)
        {
            a=rand()%8+2;
            b=rand()%26+2;
            if(GameMap[a][b]!='@'||GameMap[a][b]!='*'||GameMap[a][b]!='#')
            {
                GameMap[a][b]='*';
                break;
            }
            else
                tru=1;
        }
    }
}
//键盘按钮
void button(void)
{
    int i,j;
    //记忆蛇头坐标
    x[1]=x[0];
    y[1]=y[0];
    if(kbhit()!=0)
    {
        key = getch();
        switch(key)
        {
            case 'b'://向左
                y[0]--;
                break;
            case 'h'://向上
                x[0]--;
                break;
            case 'n'://向下
                x[0]++;
                break;
            case 'm'://向右
                y[0]++;
                break;
        }
        Move();
     }
     if(kbhit()==0)
     {
         switch(key)
        {
            case 'b'://向左
                y[0]--;
                Move();
                break;
            case 'h'://向上
                x[0]--;
                Move();
                break;
            case 'n'://向下
                x[0]++;
                Move();
                break;
            case 'm'://向右
                y[0]++;
                Move();
                break;
        }    
    }
    
}
//蛇移动
void Move(void)
{
    int i,j;
    if(GameMap[x[0]][y[0]]=='*')
    {
        GameMap[x[0]][y[0]]='@';
        lenght++;
        for(i=1;i<lenght+1;i++)
        {
            x[i+1]=x[i];
            y[i+1]=y[i];
            GameMap[x[i]][y[i]]='#';
        }
    }
    if(GameMap[x[0]][y[0]]=='\0')
    {
        GameMap[x[0]][y[0]]='@';
        for(i=1;i<lenght;i++)
        {
            x[i+1]=x[i];
            y[i+1]=y[i];
            GameMap[x[i]][y[i]]='#';
        }
        printf("%d %d\n", x[i],y[i]);
        GameMap[x[i]][y[i]]='\0';
    }
    if(GameMap[x[0]][y[0]]=='&')
    {
        Gameover();
    }
}
void Show(void)//显示地图
{
    int i, j;
    while(1)
    {
        for(i=0;i<12;i++)
        {
            for(j=0;j<30;j++)
            {
                printf("%c",GameMap[i][j]);
            }
            printf("\n");
        }
        Disfood();
        printf("欢迎进入关山月创作的贪吃蛇1.0版!!!\n");
        printf("游戏控制:b-向左,h-向上,n-向下,m-向右\n");
        button();
        Sleep(1000);
        system("cls");  
    }
}
void Gameover(void)
{
    printf("\tGame over!\n");
    exit(-1);
}

 

这个是两年(2017)前刚学编程写的贪吃蛇,纪念一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值