C语言处理贪吃蛇游戏蛇的长度,c语言贪吃蛇详解4.食物的投放与蛇的变长

本文介绍了如何使用C语言编写贪吃蛇游戏,重点讲解了食物的随机投放和蛇变长的实现。通过check函数判断投放点是否合适,food函数生成食物,以及在蛇头碰到食物时更新蛇的长度。文章还添加了暂停功能,增加游戏体验。
摘要由CSDN通过智能技术生成

c语言贪吃蛇详解4.食物的投放与蛇的变长

前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解。我将分几步来教大家写一个贪吃蛇小游戏。由于大家c语言未学完,这个教程只涉及数组和函数等知识点。

通过前几次的教程,我们已经做出来了能上下左右跑的小蛇了。现在我们就先来做下食物投放吧。

食物投放的基本思想是在地图上随机找一个没有蛇身也没有障碍物的地方,然后把这个地方的地图数组值标记为-1(前面我们让空地为0,障碍物为1)。

我们先来写一个函数来判断一个点是不是符合上面的条件。

int check(int ii,int jj) //判断这个点能不能放食物,可以放返回1,不能放返回0

{if(a[ii][jj]==1) //如果有障碍物,返回0

return 0;inti;for(i=0; i

{if(ii==s[i]0&&jj==s[i][1]) //如果和其中一个蛇身重合,就返回0

return 0;

}if(ii==0||ii==H-1||jj==0||jj==W-1) //如果在边界上面,返回0

return 0;return 1; //最后筛选 过后的是符合条件的点

}

要使用随机数,先

#include

然后由于要根据时间设置随机数种子,所以要

#include

在init函数里面写这句代码

srand((unsigned)time(NULL)); //设置随机数种子为现在的时间

然后写一个food函数,实现投放一个食物

voidfood()

{inti,j;do{

i=rand()%H; //生成0~H-1之间的一个数

j=rand()%W;

}while(check(i,j)==0); //生成点直到满足条件

a[i][j]=-1; //标记为食物

gotoxy(i,j);

printf("$"); //画出食物

}

然后在main里面的循环前面调用一次food,实现开始游戏时有一个食物。然后检查蛇头与食物是否重合,如果重合,就调用一次food,投放一个食物。

intmain()

{

init();//程序开始时的初始化操作

drawMap(); //画地图

food();while(1)

{

drawSnake();//画蛇

Sleep(WAIT_TIME); //等待一段时间

key();

move();//移动蛇(主要是修改蛇身数组的数据)

if(a[s[0][0]][s[0][1]]==-1) //如果蛇头碰到食物,就重新投放食物,并且把食物点重置为0

{

food();

a[s[0][0]][s[0][1]]=0;

}

}

getchar();return 0;

}

让我们来看看效果

090ad0e1f2210b7c62bd3fba4a5b6d3b.gif

到现在为止的代码:

#include #include#include#include#include

#define H 23

#define W 75

#define WAIT_TIME 500

//定义direction的每个值代表的方向

#define UP 0

#define DOWN 1

#define LEFT 2

#define RIGHT 3

int a[H][W]; //地图数组

int s[H*W][2]; //蛇身坐标数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值