C贪吃蛇代码详解(ncurse)

本文详细讲解如何使用C语言结合ncurses库实现贪吃蛇游戏。内容涵盖ncurses的基本用法、链表数据结构的构建以及指针操作技巧,通过实例代码解析整个游戏的实现过程。
摘要由CSDN通过智能技术生成
#include<curses.h>		//使用 ncurses 必须调用它的函数库 
#include<stdlib.h>
#include<time.h>

#define UP		1		//宏定义  UP 与 1 等效 
#define DOWN 	-1
#define LEFT	2
#define RIGHT	-2
struct Snake      		//结构体 
{
   
	int hang;
	int lie;
	struct Snake *next;
};

struct Snake *head;		//定义结构体类型的指针 head 
struct Snake *tail;		//定义结构体类型的指针 tail
int key;
int dir;

struct Snake food;     	//定义结构体类型   food 

void initNcurse()		//初始化 Ncurses (Ncurses 是一套编程库) 
{
   
	initscr();			// Ncurses界面的初始化函数  
						//获取包括大小和特征在内的终端类型,并设置终端支持的 curses 环境。
	keypad(stdscr,1);	//使用keypad(stdscr,TURE) 就为“标准屏幕”(stdscr)激活了功能键。 
						// TURE-> ture-> 1
						 
	noecho();			//调用 noecho()函数 禁止输入的字符出现在屏幕上。(防止界面中出现一些乱码)
						//echo()函数  允许输入的字符出现在屏幕上。
} 

void initFood()			//初始化食物 
{
   	
	food.hang = rand()%20;	//rand()%20  取余,取出来的余数是小于20的 
	food.lie = rand()%20;
}

int hasSnakeNode(int i,int j)	//通过判断此时贪吃蛇身子的位置是否与gamPic() 中的位置相同 来决定返回 0 or 1 
{
   
	struct Snake *p;	//定义结构体类型的指针 p  
	p = head;
	
	while(p != NULL)	//判断 P 存放的地址是否为空 
	{
   
		if(p->hang ==i && p->lie == j)	//判断结构体类型的指针 P 指向的 hang 与 lie 是否与 gamePic() 中的hang 与 lie 都相等 
		{
   
			return 1;					//相等 则返回 1  (在C语言中 1 代表真 ture) 
		}
		p = p->next;					//链表下移动, 指针 P 指向链表的的下一个 结构体 
	}
	return 0;				// p 存放的地址为空( NULL ), 返回 0 (在C语言中 0 代表假 fack) 
}

int hasFood(int i,int j)	//该函数是用来判断当 hang==i lie==j 时,是否打印出食物 打印就返回 1, 不打印就返回 0				
{
   							//有返回值的 返回类型用 int ; 不需要返回值的 返回类型用 void (void 是无类型) 
 
	if(food.hang == i && food.lie == j){
   //判断结构体 food 的 hang 与 lie 是否与 gamePic() 中的hang 与 lie 都相等 
		return 1;			//相等 则返回 1  (在C语言中 1 代表真 ture)  
	}
	return 0;				
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值