Linux下编写贪吃蛇游戏
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下编写贪吃蛇游戏相关推荐
- 详解Linux终端下编写“贪吃蛇”游戏
大一学习C语言的时候就想要用Turbo C编写一个视频小游戏出来,种种原因后面搁浅了,现在借着学习Linux系统编程的劲头,编写了一个终端下可以运行的贪吃蛇游戏,其中此视频游戏用到的一些知识和操作系统 ...
- linux console下的贪吃蛇游戏
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在linux下编写小游戏是很好玩的一件事情,比如说编写坦克战.贪吃蛇.堆箱子等等,这些问题都不大 ...
- python编写贪吃蛇游戏
关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!! 效果图: 首先引入pygame模块 pip install pygame ...
- matlab cat函数_如何用Matlab编写贪吃蛇游戏?(持续更新)
今后我们实验室的研究重点将会聚焦在"基于游戏的测评"和"教育游戏化"这两个主题上,因此很有必要研究实现"爆款"游戏的一些基本的技术方法.这篇 ...
- python编写贪吃蛇游戏下载,python实现简单的贪吃蛇游戏
本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮.难度.音乐.得分功能,供大家参考,具体内容如下 贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设置. 游戏实现效果 ...
- linux下实现贪吃蛇小游戏
代码开发流程:nucrse初始化->地图实现->贪吃蛇自由向右行走->双线程实现自由行走和刷新页面->实物随机分布->要死自己来结束游戏. 1.为什么我们需要使用ncur ...
- 天才啊!仅用四个整数编写一个贪吃蛇游戏!
作者 | Andrei Cioban 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 记得上次编写贪吃蛇游戏还是很多年以前的事,如今我打算尽己所能,在一些很特别的方面做到极致: 将游戏的 ...
- 【课件】使用Python写贪吃蛇游戏(pygame)
使用Python写贪吃蛇游戏(pygame) 课件地址:https://blog.csdn.net/a772304419/article/details/130087202 本地路径: cd /D/W ...
- 结对-贪吃蛇游戏-开发环境搭建过程
结对编程成员:赵建辉,马壮 搭建环境: 会 html,css,以及java开发知识. 会应用sublime,dw等编辑软件 编写程序阶段: 1.利用html搭建前端页面,构建游戏的页面框架 2.利用j ...
最新文章
- Integer 和 int 比较的特殊之处
- 基于点云曲率的图像特征提取方法
- 黑马lavarel教程---8、session
- Spring开启注解AOP的支持放置的位置
- 2021沭阳中学高考成绩查询,沭阳建陵中学2020高考喜报!
- 用node-webkit开发多平台的桌面客户端
- 公因式的概念_公因式概念论文,关于也淡化概念相关参考文献资料-免费论文范文...
- php怎么文字加粗体代码,css怎么实现字体描边效果,html字体加粗加黑代码
- linux进入运行exe命令,在Deepin V20系统中打开运行exe文件的两种方法
- 51循迹小车舵机c语言程序,红外循迹小车c程序(舵机小车).doc
- C语言题库 part.1
- 3DES加密(iOS,Android,Java)
- html左侧导航菜单多级,css3多级菜单导航栏、侧边菜单栏
- iphone横竖屏切换,旋转屏幕
- python def -> : ->什么意思
- 什么是过拟合、欠拟合现象以及如何缓解?
- C++ iomanip
- 共享单车项目、mongodb集群
- 词袋模型:DBoW原理介绍以及使用方法
- C语言求解中国余数定理,程序设计课后习题.pdf
热门文章
- 环球网校伊贵业:职业教育的破局与新局丨蓝鲸人物
- android mysql储存动态数据_Android中数据的保存
- 27岁乌克兰数学家在俄自杀,留下给疯狂世界的遗书!
- 沃达丰已在英国7城推出5G网络 部分设备由华为提供
- 用python做人脸识别_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...
- Python Mongodb 查询以及批量写、批量查
- 网络爬虫,数据处理(将br/换成换行符)
- 企业如何运用MES管理系统破除生产暗箱,打造透明化工厂?
- Ubuntu broadcom无线网卡驱动安装
- web和应用服务器的区别