千家信息网

Linux下怎么用C语言实现贪吃蛇游戏

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"Linux下怎么用C语言实现贪吃蛇游戏",在日常操作中,相信很多人在Linux下怎么用C语言实现贪吃蛇游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年01月18日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安全错误 数据库的锁怎样保障安全 网络安全工程师博士 华拓互联网科技有限公司 服务器是信息系统的什么 大型数据库嵌入式系统 数据库如何用excel更改 most的网络技术 正确使用dns服务器没响应 我的勇者服务器有什么改变 自己买电脑怎么搭建服务器 常熟理工网络安全实验NAT 软件开发创业背景怎么写 银行科技 互联网转型 网络安全法律体系中司法解 王者荣耀选择服务器 杨浦区威力网络技术欢迎咨询 介绍公司软件开发能力强描述 浏览记录服务器后台能查看吗 洛神服务器管理组 计算机网络技术论文致谢朋友 数据库相关技术介绍 大学中的计算机网络技术 黑龙江远程指导软件开发 猎杀对决服务器延迟排名 软件开发要纳税多少 正确使用dns服务器没响应 网络安全管理局新闻 软件开发桌外观专利 软件开发项目客户想要技术入股 怎样才能学好计算机网络安全 软件开发教程学费多少
0