Linux下怎么用C语言实现贪吃蛇游戏
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Linux下怎么用C语言实现贪吃蛇游戏",在日常操作中,相信很多人在Linux下怎么用C语言实现贪吃蛇游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2026年11月01日Linux下怎么用C语言实现贪吃蛇游戏
这篇文章主要介绍"Linux下怎么用C语言实现贪吃蛇游戏",在日常操作中,相信很多人在Linux下怎么用C语言实现贪吃蛇游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Linux下怎么用C语言实现贪吃蛇游戏"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
代码展示
#include#include #define up 1 //1与-1的目的是使用abs()函数防止一上一下#define down -1#define left 2#define right -2struct snake{ //创建一个结构体 int hang; int lie; struct snake *next;};struct snake *head = null; //全局定义一个头和尾struct snake *tail= null;int key; //定义一个按键的整形变量int dir;//定义一个方向的整形变量struct snake food;void initfood(){ //定义一个食物## 可以随机生成 int x = rand(); int y = rand(); food.hang = x; food.lie = y;}void initncurse(){ initscr(); keypad(stdscr,1); noecho();}int hassnakenode(int i, int j){ //显示蛇身体 struct snake *p; p = head; while(p != null){ if(p->hang == i && p ->lie == j){ return 1; } p = p->next; } return 0;}int hasfood(int i,int j){ //有食物 if(food.hang == i && food.lie == j){ return 1; } return 0;}void gamepic(){ //游戏图形化展示 int hang; int lie; move(0,0); for(hang=0;hang<20;hang++){ if(hang == 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(hassnakenode(hang,lie)){ printw("[]"); }else if(hasfood(hang,lie)){ printw("##"); } else{ printw(" "); } } printw("\n"); } if(hang == 19){ for(lie=0;lie<20;lie++){ printw("--"); } printw("\n"); printw("by ricko"); } }}void addnode(){ //加头并且方向 struct snake *new = (struct snake *)malloc(sizeof(struct snake)); new->next = null; switch(dir){ case up: new->hang = tail->hang-1; new->lie = tail->lie; break; case down: new->hang = tail->hang+1; new->lie = tail->lie; break; case left: new->hang = tail->hang; new->lie = tail->lie-1; break; case right: new->hang = tail->hang; new->lie = tail->lie+1; break; } tail->next = new; tail = new;}void initsnake(){ //初始化蛇 struct snake *p; dir = right; while(head != null){ p = head; head = head->next; free(p); } initfood(); head = (struct snake *)malloc(sizeof(struct snake)); head->hang = 1; head->lie = 1; head->next = null; tail = head; addnode(); addnode(); addnode(); addnode();}void delenode(){ //删除最后节点 struct snake *p; p = head; head = head->next; free(p);}int ifsnakedie(){ //在撞到边界以及自己迟到自己的时候会输出一个1让自己复活 struct snake *p; p = head; if(tail->hang < 0 || tail->lie == 0 || tail->hang == 20 || tail->lie == 20){ return 1; } while(p->next != null){ if(p->hang == tail->hang && p->lie == tail->lie){ return 1; } p = p->next; } return 0;}void movesnake(){ //蛇的移动 addnode(); if(hasfood(tail->hang,tail->lie)){ //如果吃到食物就不删除最后的节点 initfood(); }else{ delenode(); } if(ifsnakedie()){ initsnake(); }}void refreshjiemian(){ //刷新界面 线程 while(1){ movesnake(); gamepic(); refresh(); usleep(150000); //刷新频率 }}void turn(int direction){ //防止方向键按了上又按下 if(abs(dir) != abs(direction)){ dir = direction; }}void changedir(){ //改变方向 while(1){ key = getch(); switch(key){ case key_down: turn(down); break; case key_up: turn(up); break; case key_left: turn(left); break; case key_right: turn(right); break; } }}int main(){ pthread_t t1; //定义线程1 pthread_t t2; initncurse(); //初始化ncurse initsnake(); //初始化蛇 gamepic(); //初始化界面 pthread_create(&t1,null,refreshjiemian,null);//启动线程里面的函数 pthread_create(&t2,null,changedir,null); while(1);//线程3 getch(); endwin(); return 0;}
对代码进行编译
gcc snake.c -lcurses -lpthread
生成a.out运行文件
运行代码
./a.out
图片展示
到此,关于"Linux下怎么用C语言实现贪吃蛇游戏"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
语言
线程
学习
代码
方向
食物
函数
变量
更多
界面
节点
帮助
生成
运行
实用
接下来
个头
全局
图形
图片
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
百单网互联网科技有限公司
上海睿民互联网科技有限公司
新华互联网科技学校
科技平台互联网
互联网巨头科技公司
科技互联网技术
互联网科技金融
碳银互联网科技
互联网金融科技创新
易通互联网络科技有限公司
哈尔滨秒房互联网科技有限公司
互联网金融科技展
长沙茂晟互联网科技有限公司
智帮互联网科技公司最近动向
半导体是互联网高科技吗
万物互联网智能科技
张家口科技产业互联网平台
北京品多多互联网科技有限公司
互联网科技自媒体灵感
南京欣网互联网络科技
科技股互联网
互联网最新的科技
兼蜜互联网科技
大白互联网科技
银川新华互联网科技学校地址
广州慧亚互联网科技怎么样
南山科技园互联网公司有哪些
锡山区互联网智能科技产品供应
互联网大会出现的黑科技