Linux下怎么用C语言实现贪吃蛇游戏
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这篇文章主要介绍"Linux下怎么用C语言实现贪吃蛇游戏",在日常操作中,相信很多人在Linux下怎么用C语言实现贪吃蛇游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年11月20日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安全错误
数据库的锁怎样保障安全
福州伺服驱动软件开发
坐标正反算软件开发
网络安全专家英文翻译
国家网络技术应急处理中心
教校网络技术本培训心得体会
长株潭工控网络安全项目 废标
启博vpn服务器 破解
excel大量的选择数据库
客户为什么需要用服务器
数据库能有多个主键吗
计算机及网络安全检查表
如何创建使用和删除数据库
代理服务器 命令行
数据库表怎么设置权限
华为网络技术初赛知识点总结
企业网络安全公司
怎么连接对方的数据库
锡盟大数据库离市区多远
软件之间与数据库无法连接
芜湖海中智臾互联网科技公司
机场 网络安全应急预案
数据库表的关键字
rac多台数据库监听器
疯狂原始人2怎么换服务器
登录数据库需要什么信息
浦东新区车载网络技术创新服务
烟台小和网络技术的发展
搭建了一个数据库
四川数据库培训哪家好
促销联盟软件开发