当我们蛇能够实现风骚走位之后,我们就要开始设置食物,我们将食物用 “##” 这个符号来表示, 并且我们要知道,当我们食物与蛇的头部重合时,也就是食物被蛇吃掉时,“##”符号被删除,而蛇身要加长一节。当我们知道这个逻辑之后,我们可以开始写代码了。
首先定义一个随机食物的函数:
void initFood()
{
srand((unsigned)time(NULL));
int x = rand()%15+3; //引用rand ,随机生成食物的坐标
int y = rand()%15+3;
food.hang = x;
food.lie = y;
}
将食物与游戏界面函数建立起联系:
int setFood(int i, int j)
{
if(food.hang==i && food.lie==j)
{
return 1;
}
return 0;
}
void ()
{
int hang;
int lie;
move(0,0);
for(hang= 0;hang< 20;row++){
if(row == 0){
for(lie= 0;lie< 20;lie++){
printw("--");
}
printw("\n");
}
if(hang>= 0 && hang<= 19){
for(lie= 0;lie<= 20;lie++){
if(lie== 0 || lie== 20){
printw("|");
}else if(GetSnake(hang,lie)){
printw("[]");
}else if(setFood(hang,lie)){
printw("##");
}
else{
printw(" ");
}
}
printw("\n");
}
if(hang== 19){
for(lie= 0;lie< 20;lie++){
printw("--");
}
printw("\n");
printw("by szp,key=%d,food.hang=%d,food.lie=%d\n",key,food.hang,food.lie);
}
}
}
经过上面的操作,我们就已经设置好了随机出现食物的代码,接着就是怎么实现食物被蛇吃掉,然后蛇身边长:
void moveSnake()
{
addNode();
if(setFood(tail->hang,tail->lie)){ //先判断蛇头部是否与设置的随机食物是否重合
initFood();
}else{ //如果重合就加一个节点
deleteNode();
}
}
通过上面的代码慢慢的贪吃蛇就有点像是在玩游戏的感觉了,好了,今天的内容就到这里了,如果又不懂的可以关注一手,私信问我,或者可以发码原给你们参考学习哦。