Linux环境下的贪吃蛇游戏——右键小蛇向右移动撞墙就死

#include<curses.h>
#include<stdlib.h>
#include<stdio.h>
void initNcurse()
{
    
    
	initscr();
	keypad(stdscr,1);
}
struct snake
{
    
    
	int hang;
	int lie;
	struct snake *next;
};

struct snake *head=NULL;
struct snake *tail=NULL;


int hasNode(int i,int j)
{
    
    
	struct snake* p;
	p=head;

	while(p!=NULL)
	{
    
    
		if(p->hang==i && p->lie==j)
		{
    
    
			return 1;
		}
		p=p->next;



	}
	return 0;



}

void gamePic()
{
    
    
	int hang;
	int lie;
	move(0,0);
	for(hang=0;hang<20;hang++)
	{
    
    
		if(hang==0)
		{
    
    
			for(lie =0;lie<20;lie++)
			{
    
    
				printw("--");
			}
			printw("\n");
		
		}
		if(hang>0 && hang<=19)
		{
    
    
			for(lie=0;lie<=20;lie++)
			{
    
    
				if(lie==0 ||lie==20)
				{
    
    
					printw("|");
				}
				else if(hasNode(hang,lie)==1)
				{
    
    
					printw("[]");
				}
				else
				{
    
    
					printw("  ");
				}
			}
			printw("\n");
			
		}
		if(hang==19)
		{
    
    
			for(lie=0;lie<20;lie++)
			{
    
    
				printw("--");
			}
			printw("\n");
			printw("Designed by QYY\n");
		}
	}
}
void addn()
{
    
    
	struct snake *new=(struct snake *)malloc(sizeof(struct snake));
	
	new->hang=tail->hang;
	new->lie=tail->lie+1;
	new->next=NULL;

	tail->next=new;
	tail=new;

}
void initsnake()
{
    
    
	struct snake *p=NULL;
	while(head!=NULL)
	{
    
    
		p=head;
		head=head->next;
		free(p);
	}
	head=(struct snake*)malloc(sizeof(struct snake));

	head->hang=1;
        head->lie=1;
        head->next=NULL;

        tail=head;

        addn();
        addn();
        addn();
}
void deletenode()
{
    
    
	struct snake* p;
	p=head;
	head=head->next;
	free(p);
}
void movsnake()
{
    
    

	addn();
	deletenode();
	if(tail->hang==0 || tail->lie==0 || tail->hang==20 || tail->lie == 20)
	{
    
    
		initsnake();
	}
}
int main()
{
    
    
	initNcurse();
	initsnake();
	gamePic();
	while(1)
	{
    
    
		int con=getch();
		if(con==KEY_RIGHT)
		{
    
    
			movsnake();
			gamePic();
		}
	}
	getch();
	endwin();
	return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43482790/article/details/114952844