Linux下编写贪吃蛇游戏

文章目录

    • Linux下编写贪吃蛇游戏
  • 前言
  • 一、贪吃蛇代码
  • 二、运行贪吃蛇代码

前言

本程序需要ncurses库,ubuntu下安装ncurses可以执行下面命令:
sudo apt-get install libncurses5-dev

关于curses库:终端图形库curses.h文件,由于不是C标准库,一般电脑不会自带,需要自行下载安装,ubuntu下可以这么下载 sudo apt-get install libncurses5-dev 已经替换成ncurses.h 即 new curses.h的意思,完全兼容curses。介绍下此游戏需要用到的常见的几个curses函数。
基本curse函数

函数 功能
initscr() 初始化curses库和tty
endwin() 关闭curses并重置tty
refresh() 刷新屏幕显示
mvaddch(y,x,c) 在坐标(y,x)处显示字符c
mvaddstr(y,x,str) 在坐标(y,x)处显示字符串str
cbreak() : 开启输入立即响应
noecho() 输入不回显到屏幕
curs_set(0) 使光标不可见
attrset() 开启图形显示模式
keypad(stdscr, true) 开启小键盘方向键输入捕捉支持

提示:以下是本篇文章正文内容,下面案例可供参考

一、贪吃蛇代码

代码如下
#include<curses.h>
#include<stdlib.h>
#include<pthread.h>
#define UP 1
#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()%20;int y=rand()%20;Food.hang=x;Food.lie=y;
}//初始化食物(在20x20的范围内随机生成食物)void initNcurse()
{initscr();keypad(stdscr,1);//开启小键盘方向键输入捕捉支持noecho();
}//初始化Ncurses(选择要使用的功能函数)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 deleNode()
{head=head->next;
}//删除贪吃蛇身体的头结点void initSnake()
{   struct Snake* p;dir=RIGHT;  //默认行走方向if(head!=NULL){p=head;head=head->next;free(p);}initFood();head=(struct Snake*)malloc(sizeof(struct Snake));head->hang=2;head->lie=2;head->next=NULL;tail=head;addNode();addNode();addNode();
}int hasSnakeNode(int hang,int lie)
{       struct Snake*p;p=head;while(p!=NULL){       if(p->hang==hang && p->lie==lie){return 1;}p=p->next;}return 0;
}   //判断地图上当前坐标位置是否存在贪吃蛇身体结点int hasFood(int hang,int lie)
{ if(Food.hang==hang && Food.lie==lie){return 1;}return 0;
} //判断地图上当前坐标位置是否存在食物void initMap(){int hang;int lie;move(0,0);for(hang=0;hang<20;hang++){if(hang==0){for(lie=-1;lie<20;lie++){printw("--");   }printw("\n");}if(hang>=0 || hang<=19){for(lie=-1;lie<=20;lie++){if(lie==-1||lie==20){printw("|");}else if( hasSnakeNode(hang,lie)){printw("[]");}else if( hasFood(hang,lie)){printw("##");}else{printw("  ");}} printw("\n");            }if(hang==19){for(lie=-1;lie<20;lie++){printw("--");} printw("\n");printw("sky\n");printw("food.hang=%d,food.lie=%d\n",Food.hang,Food.lie);printw("head.hang=%d,head.lie=%d\n",tail->hang,tail->lie);}  }
}//绘制地图int issnakedie()
{struct Snake* p;p=head;if(tail->hang<0 || tail->lie==-1 || 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;
}//判断												

Linux下编写贪吃蛇游戏相关推荐

  1. 详解Linux终端下编写“贪吃蛇”游戏

    大一学习C语言的时候就想要用Turbo C编写一个视频小游戏出来,种种原因后面搁浅了,现在借着学习Linux系统编程的劲头,编写了一个终端下可以运行的贪吃蛇游戏,其中此视频游戏用到的一些知识和操作系统 ...

  2. linux console下的贪吃蛇游戏

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在linux下编写小游戏是很好玩的一件事情,比如说编写坦克战.贪吃蛇.堆箱子等等,这些问题都不大 ...

  3. python编写贪吃蛇游戏

    关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!! 效果图: 首先引入pygame模块 pip install pygame ...

  4. matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)

    今后我们实验室的研究重点将会聚焦在"基于游戏的测评"和"教育游戏化"这两个主题上,因此很有必要研究实现"爆款"游戏的一些基本的技术方法.这篇 ...

  5. python编写贪吃蛇游戏下载,python实现简单的贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮.难度.音乐.得分功能,供大家参考,具体内容如下 贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设置. 游戏实现效果 ...

  6. linux下实现贪吃蛇小游戏

    代码开发流程:nucrse初始化->地图实现->贪吃蛇自由向右行走->双线程实现自由行走和刷新页面->实物随机分布->要死自己来结束游戏. 1.为什么我们需要使用ncur ...

  7. 天才啊!仅用四个整数编写一个贪吃蛇游戏!

    作者 | Andrei Cioban 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 记得上次编写贪吃蛇游戏还是很多年以前的事,如今我打算尽己所能,在一些很特别的方面做到极致: 将游戏的 ...

  8. 【课件】使用Python写贪吃蛇游戏(pygame)

    使用Python写贪吃蛇游戏(pygame) 课件地址:https://blog.csdn.net/a772304419/article/details/130087202 本地路径: cd /D/W ...

  9. 结对-贪吃蛇游戏-开发环境搭建过程

    结对编程成员:赵建辉,马壮 搭建环境: 会 html,css,以及java开发知识. 会应用sublime,dw等编辑软件 编写程序阶段: 1.利用html搭建前端页面,构建游戏的页面框架 2.利用j ...

最新文章

  1. Integer 和 int 比较的特殊之处
  2. 基于点云曲率的图像特征提取方法
  3. 黑马lavarel教程---8、session
  4. Spring开启注解AOP的支持放置的位置
  5. 2021沭阳中学高考成绩查询,沭阳建陵中学2020高考喜报!
  6. 用node-webkit开发多平台的桌面客户端
  7. 公因式的概念_公因式概念论文,关于也淡化概念相关参考文献资料-免费论文范文...
  8. php怎么文字加粗体代码,css怎么实现字体描边效果,html字体加粗加黑代码
  9. linux进入运行exe命令,在Deepin V20系统中打开运行exe文件的两种方法
  10. 51循迹小车舵机c语言程序,红外循迹小车c程序(舵机小车).doc
  11. C语言题库 part.1
  12. 3DES加密(iOS,Android,Java)
  13. html左侧导航菜单多级,css3多级菜单导航栏、侧边菜单栏
  14. iphone横竖屏切换,旋转屏幕
  15. python def -> : ->什么意思
  16. 什么是过拟合、欠拟合现象以及如何缓解?
  17. C++ iomanip
  18. 共享单车项目、mongodb集群
  19. 词袋模型:DBoW原理介绍以及使用方法
  20. C语言求解中国余数定理,程序设计课后习题.pdf

热门文章

  1. 环球网校伊贵业:职业教育的破局与新局丨蓝鲸人物
  2. android mysql储存动态数据_Android中数据的保存
  3. 27岁乌克兰数学家在俄自杀,留下给疯狂世界的遗书!
  4. 沃达丰已在英国7城推出5G网络 部分设备由华为提供
  5. 用python做人脸识别_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...
  6. Python Mongodb 查询以及批量写、批量查
  7. 网络爬虫,数据处理(将br/换成换行符)
  8. 企业如何运用MES管理系统破除生产暗箱,打造透明化工厂?
  9. Ubuntu broadcom无线网卡驱动安装
  10. web和应用服务器的区别