linux游戏贪吃蛇脚本代码,Linux环境下C语⾔实现贪吃蛇游戏下⾯是编程之家 通过⽹络收集整理的代码⽚段。
编程之家⼩编现在分享给⼤家,也给⼤家做个参考。
[[email protected] snake]$ more snake.c
#include
#include
#include
#include
#include
#define NUM 60
struct direct //⽤来表⽰⽅向的
{
int cx;
int cy;
};
typedef struct node //链表的结点
{
int cx;
int cy;
struct node *back;
struct node *next;
}node;
void initGame(); //初始化游戏
int setTicker(int); //设置计时器
void show(); //显⽰整个画⾯
void showInformation(); //显⽰游戏信息(前两⾏)
void showSnake(); //显⽰蛇的⾝体
void getOrder(); //从键盘中获取命令
void over(int i); //完成游戏结束后的提⽰信息
void creatLink(); //(带头尾结点)双向链表以及它的操作
void insertNode(int x,int y);
void deleteNode();
int hour,minute,second; //时分秒
int length,tTime,level; //(蛇的)长度,计时器,(游戏)等级struct direct dir,food; //蛇的前进⽅向,⾷物的位置node *head,*tail; //链表的头尾结点
int main()
{
initscr();
[[email protected] snake]$ more snake.c
#include
#include
#include
#include
#include
#define NUM 60
struct direct //⽤来表⽰⽅向的
{
int cx;
int cy;
};
typedef struct node //链表的结点
{
int cx;
int cy;
struct node *back;
struct node *next;
}node;
void initGame(); //初始化游戏
int setTicker(int); //设置计时器
void show(); //显⽰整个画⾯
void showInformation(); //显⽰游戏信息(前两⾏)
void showSnake(); //显⽰蛇的⾝体
void getOrder(); //从键盘中获取命令
void insertNode(int x,*tail; //链表的头尾结点
int main()
{
initscr();
initGame();
signal(SIGALRM,show);
getOrder();
endwin();
return 0;
}
void initGame()
{
cbreak(); //把终端的CBREAK模式打开
noecho(); //关闭回显
curs_set(0); //把光标置为不可见
keypad(stdscr,true); //使⽤⽤户终端的键盘上的⼩键盘srand(time(0)); //设置随机数种⼦
/
/初始化各项数据
hour = minute = second = tTime = 0;
length = 1;
< = 1;
< = 0;
ch = 'A';
< = rand() % COLS;
< = rand() % (LINES-2) + 2;
creatLink();
setTicker(20);
}
/
/设置计时器(这个函数是书本上的例⼦,有改动)
int setTicker(int n_msecs)
{
struct itimerval new_timeset;
n_usecs = ( n_msecs % 1000 ) * 1000L ;
new_timeset.it_interval.tv_sec = n_sec;
new_timeset.it_interval.tv_usec = n_usecs;
n_msecs = 1;
n_sec = n_msecs / 1000 ;
n_usecs = ( n_msecs % 1000 ) * 1000L ;
new_timeset.it_value.tv_sec = n_sec ;
new_timeset.it_value.tv_usec = n_usecs ;
return setitimer(ITIMER_REAL,&new_timeset,NULL); }
贪吃蛇的编程代码void showInformation()
{
tTime++;
if(tTime >= 1000000) //
tTime = 0;
if(1 != tTime % 50)
return;
move(0,3);
//显⽰时间
printw("time: %d:%d:%d %c",hour,second);
second++;
if(second > NUM)
{
second = 0;
minute++;
}
if(minute > NUM)
{
minute = 0;
hour++;
}
//显⽰长度,等级
for(i=0;i
addstr("-");
move(0,COLS/2-5);
printw("length: %d",length);
move(0,COLS-10);
level = length / 3 + 1;
printw("level: %d",level);
}
//蛇的表⽰是⽤⼀个带头尾结点的双向链表来表⽰的,
/
/蛇的每⼀次前进,都是在链表的头部增加⼀个节点,在尾部删除⼀个节点//如果蛇吃了⼀个⾷物,那就不⽤删除节点了
void showSnake()
{
if(1 != tTime % (30-level))
return;
//判断蛇的长度有没有改变
bool lenChange = false;
//显⽰⾷物
,);
printw("@");
//如果蛇碰到墙,则游戏结束
if((COLS-1==head->next->cx && 1==)
|| (0==head->next->cx && -1==)
|| (LINES-1==head->next->cy && 1==)
|| (2==head->next->cy && -1==))
{
over(1);
return;
}
//如果蛇头砬到⾃⼰的⾝体,则游戏结束
if('*' == mvinch(head->next->,head->next->) )
{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。