初始化 -> 接受用户输入,确定前进方向 -> 处理 ->输出
已经写完第二步了,编译链接成功,但./a.out后 显示:Segmentation fault (core dumped)
咋回事?哪里有错么?
另外下面怎么写请给些建议,谢谢。
代码: 全选
#include<stdio.h>
#include<ncurses.h>
#include<stdlib.h>
#include<time.h>
struct snake //蛇的每一个节点都是个struct
{
int y;int x; //y:哪行 x:哪列
struct snake* next;
};
struct snake* snake_head;
struct snake* dot;
int dir; //蛇前进的方向 1:左 2:上 3:右 4:下
void main()
{
//initialization
int space[42][62]={0}; //游戏平台为42*62的平面
int i,j,c;
for(i=0,j=41,c=0;c<62;c++);
space[i][c]=space[j][c]=3; //3代表边框
for(c=0,j=61,i=1;i<41;i++)
space[i][c]=space[i][j]=3; //这两个for画出边框
//接下来初始化蛇的位置:从(3,4)到(3,5),刚开始时头在(3,5)
//注:上行注释括号中数字是数组下标。蛇的活动范围是40*60的长方形
snake_head->y=3;
snake_head->x=5;
dot=malloc(sizeof(struct snake));
dot->y=3;
dot->x=4;
snake_head->next=dot;
dot->next=NULL;
dir=3;
initscr();
WINDOW* win=newwin(42,62,0,0);
keypad(win,TRUE); //允许使用方向键
noecho();
curs_set(0);
srand(time(NULL));
halfdelay(5);
//初始化完成,蛇头在(3,5),蛇身仅有一点(3,4)
//初始前进方向是右
while(1)
{
//input
setbuf(stdin,NULL); //清空输入缓冲区
int ch=wgetch(win);
if(ch==KEY_UP)
dir=2;
else if(ch==KEY_DOWN)
dir=4;
else if(ch==KEY_LEFT)
dir=1;
else if(ch==KEY_RIGHT)
dir=3;
//至此,蛇前进的方向确定了!
//process //这步在wrefresh()之前刷新蛇的位置
//output //输出整个2维空间,不用多说
}
endwin();
}