C语言实现的贪吃蛇游戏代码分享

本篇内容介绍了“C语言实现的贪吃蛇游戏代码分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联企业建站,十多年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于网站设计、网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

方案设计

首先初始化背景,使用全局二维数组map[][]表示实体内容,设置边界条件,即数组边界设置为WALL:

 //初始化墙 for (int i = 0; i < ROW; i++) {        map[i][0] = map[i][COL - 1] =WALL; } for (int j = 0; j < COL; j++) {        map[0][j] = map[ROW - 1][j] =WALL; }

游戏启动时设置蛇在map数组中的位置,用全局一维数组snake保存蛇位置信息。

C语言实现的贪吃蛇游戏代码分享

食物设置

在map数组内找到一格空地放置食物。为了防止每次产生的随机数相同,初始化时种子设置为time,同时这里注意出现死循环。

voidcreate_food(){     int row, col;     int cnt = 100;     do     {                 cnt--;            row = rand() % (ROW - 1) + 1;            col = rand() % (COL - 1) + 1;     } while (map[row][col] != SPACE&& cnt);     map[row][col] = FOOD;}

蛇移动方案

1、空地

移动方向前方为空地,删除蛇尾,空地置为蛇头:

case SPACE:    map[snake[SnakeSize -1].X][snake[SnakeSize - 1].Y] = SPACE; //原蛇尾位置置空    for (int i = SnakeSize - 1; i >0; i--)                                       //蛇尾到蛇头整体移动一位    {           snake[i] = snake[i - 1];    }    map[snake[0].X][snake[0].Y] =SNAKE;                                         //原蛇头位置设置为蛇身    snake[0] = next;                                                                          //下一个位置设置为蛇头    map[snake[0].X][snake[0].Y] =HEAD;                                           //更新map    break;

2、食物

更新分数及蛇尺寸信息,下一位置设置为蛇头,同时新生成食物。

case FOOD:      for (int i = SnakeSize; i > 0;i--)                                            //蛇尾到蛇头整体移动一位      {         snake[i] = snake[i - 1];                                                        }      map[snake[0].X][snake[0].Y] =SNAKE;                                         //蛇头置 蛇      snake[0] = next;                                                                          //将下一个位置赋值给蛇头      score++;              //分数加一                              SnakeSize++;       //蛇尺寸加一      map[snake[0].X][snake[0].Y] =HEAD;                                           //更新map      create_food();      break;

3、墙/蛇身/蛇头

下一位置非SPACE时游戏结束。

方向控制

读取键盘中断,忽略大小写,这里注意一点就是蛇往右运动的时候选择往左是无效操作,即忽略反向运动的命令。

主流程用while(1)死循环:

 while (1) {        t2 = GetTickCount();        DrawMap();        if (kbhit())       //获取键盘敲击事件        {           ChangeDir();   //根据输入字符设置运动方向           creep();       //根据下一位置做出决策
          t2 = GetTickCount();           t1 = t2;        }
       if (t2 - t1 > time_interval) //这里是为了保证即使用户不操作,time_interval超时后蛇同样能前进一个位置        {           creep();           t1 = t2;        } }

“C语言实现的贪吃蛇游戏代码分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


本文名称:C语言实现的贪吃蛇游戏代码分享
标题网址:http://pwwzsj.com/article/jiocso.html