字符游戏-贪吃蛇


用C语言变出一个WASD控制方向的贪吃蛇小游戏


地图就很简单粗暴地这样初始化:

char map[13][13] = 
{
    "************",
    "*XXXXH     *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "*          *",
    "************"
};

每移动一次地图变化一次,打印地图一次:

void Print()
{
    system("clear");
    int i,j;
    for(i = 0; i < MAP_LENGTH; i++)
    {
        for(j = 0; j < MAP_LENGTH; j++)
        {
            printf("%c",map[i][j]);
        }
    printf("\n");
    }
}

移动一次蛇和地图发生变化(x,y分别对应按了WASD中一个键后坐标蛇头坐标的变化):

void snakeMove(int x,int y)
{
    if(!is_ok(x,y))
    {
        getchar();
        printf("GAME OVER! ");
        getchar();
        return ;
    }
    if(eatfood(x,y))
    {
        Creat_Food();
    }
    int i;
    for(i = 0; i < snakeLength-1; i++)
    {
        snakeX[i] = snakeX[i+1];
        snakeY[i] = snakeY[i+1];
    }
    snakeX[snakeLength-1] += x;
    snakeY[snakeLength-1] += y;
    Clear();
    Draw();
}

蛇长度改变:

void Draw()
{
    int i;
    for(int i = 0; i < snakeLength-1; i++)
        map[snakeY[i]][snakeX[i]] = SNAKE_BODY;
    map[snakeY[snakeLength-1]][snakeX[snakeLength-1]] = SNAKE_HEAD;
}

随机创建食物:

void Creat_Food()
{
srand(time(0));
int fx,fy;
while(1)
{
    fx = rand() % 12;
    fy = rand() % 12;
    if(map[fx][fy] == ' ')
    {
        map[fx][fy] = '$';
        break;
    }
}
}

吃食物:

int eatfood(int x, int y)
{
    int headX = snakeX[snakeLength-1]+x;
    int headY = snakeY[snakeLength-1]+y;
    if(map[headY][headX] == '$')
    {
        snakeLength++;
        snakeX[snakeLength-1] = headX;
        snakeY[snakeLength-1] = headY;
        return 1;
    }
return 0;
}

其他的应该就不难了
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值