Linux下怎么用C语言实现贪吃蛇游戏
发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,这篇文章主要介绍"Linux下怎么用C语言实现贪吃蛇游戏",在日常操作中,相信很多人在Linux下怎么用C语言实现贪吃蛇游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2024年10月05日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安全错误
数据库的锁怎样保障安全
腐蚀怎么加入不了服务器
网络安全白俄罗斯伊朗
如何做一个股票软件开发
ceie数据库
腾讯云服务器看视频
数据库的大数据量迁移
攻击网络安全性的攻击类型有
失踪儿童录入打拐数据库
数据库姓名栏乱码
科大讯飞软件开发薪水
日照安卓软件开发哪家靠谱
小型企业网络技术路线
江西软件开发解决方案咨询
数据库技术专技
二道区智能网络技术服务至上
王者荣耀总服务器在哪里
网络安全征文赛范文
无锡应用软件开发哪家好
网络编程与数据库编程注意事项
麻醉学数据库
控制管理中心和服务器关系
淮安品牌服务器
服务器增加硬盘
软件开发合同范本 下载
网络安全 三权分立
数据库设计常见表结构
我的世界宝可梦光是无限远服务器
数据库原理联合主键
数据库qps和数据流量
企业网络安全规划开题报告