温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-08-27 18:14:43 来源:亿速云 阅读:225 作者:chen 栏目:互联网科技

本篇内容介绍了“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语言实现的贪吃蛇游戏代码分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI