c/c++语言开发共享C语言实现贪吃蛇游戏代码

目录一、实现效果二、部分代码解释总结一、实现效果键位:使用wasd四个键位来控制方向,按q键退出(注意在终用英文输入法实现键控)规则:蛇每吃一个豆会得10分,同时身体边长、移速加快当蛇碰到墙壁或咬到自

目录
  • 一、实现效果
  • 二、部分代码解释
  • 总结

一、实现效果

键位:使用wasd四个键位来控制方向,按q键退出(注意在终用英文输入法实现键控)

规则:蛇每吃一个豆会得10分,同时身体边长、移速加快

当蛇碰到墙壁或咬到自身时游戏结束,同时会输出游戏得分

C语言实现贪吃蛇游戏代码

C语言实现贪吃蛇游戏代码

二、部分代码解释

(1)用结构体定义蛇和豆

typedef struct snakes  {  	int x;  	int y;  	struct snakes *next;  }snake;     snake *head,*tail;     struct food  {  	int x;  	int y;  }food;

(2)打印墙壁

void creatgraph()               {  	int i;  	for (i = 0; i<58; i += 2)//打印上下边框  	{  		gotoprint(i, 0);  		gotoprint(i, 26);  	}  	for (i = 1; i < 26; i++)  	{  		gotoprint(0, i);  		gotoprint(56, i);  	}  	head = (snake*)malloc(sizeof(snake));  	head->x = 16;  	head->y = 15;  	//gotoprint(head->x, head->y);  	tail = (snake*)malloc(sizeof(snake));  	snake *p = (snake*)malloc(sizeof(snake));  	snake *q = (snake*)malloc(sizeof(snake));  	p->x = 16;  	p->y = 16;  	q->x = 16;  	q->y = 17;  	head->next = p;  	p->next = q;  	q->next = tail;  	//gotoprint(p->x, p->y);  	//gotoprint(q->x, q->y);  	tail->next = null;  	tail->x = 4;  	tail->y = 2;	  }     void gotoxy(int x, int y)  {  	coord pos;  	handle houtput;  	pos.x = x;  	pos.y = y;  	houtput = getstdhandle(std_output_handle);  	setconsolecursorposition(houtput, pos);  }     void gotoprint(int x, int y)  {  	gotoxy(x, y);  	printf("■");  }     void gotodelete(int x, int y)  {  	gotoxy(x, y);  	printf("  ");  }

(3)生成豆

void creatfood()  {  	srand((int)time(null));  	lable:  	food.y = rand() % (25 - 1 + 1) + 1;  	food.x = rand() % (54 - 2 + 1) + 2;  	if (food.x % 2 != 0)  	{  		food.x = food.x+1;  	}  	snake *judge = head;  	while (1)    	{  		if (judge->next == null) break;  		if (food.x == judge->x&&food.y == judge->y)  		{  			goto lable;  		}  		judge = judge->next;  	}  	gotoxy(food.x, food.y);  	printf("⊙");  }

(4)点击控制函数

int clickcontrol()  {  	char c;  	while (1)  	{  		if (judge()==0) return 0;  		if (_kbhit())  		{  			click = _getch();  		}  		movingbody();  		eating();  	}  	return 1;  }

(5)移动控制

void movingbody()  {  	int count = 0;  	int a = head->x, b = head->y;  	snake *p = head;  	while (1)  	{  		if (p->next == null) break;  		gotodelete(p->x, p->y);  		count++;  		p = p->next;  	}  	switch (click)  	{  		case up:  			head->y -= 1;  			changebody(a,b);  			break;  		case down:  			head->y += 1;  			changebody(a,b);  			break;  		case left:  			head->x -= 2;  			changebody(a,b);  			break;  		case right:  			head->x += 2;  			changebody(a,b);  			break;  		case stop:  			_getch();  			break;  	}  	p = head;  	while (1)  	{  		if (p->next == null) break;  		gotoprint(p->x, p->y);  		p = p->next;  	}  	p = head;  	gotoxy(0, 28);  	if (count <= 10) speed = 150;  	else if (count > 10 && count <= 20) speed = 100;  	else if (count > 20 && count <= 40) speed = 50;  	else speed = 10;  	sleep(speed);  }

(6)更改蛇身

void changebody(int a,int b)  {  	snake *p = head->next;  	int mid1, mid2,_mid1,_mid2;  	mid1 = p->x;  	mid2 = p->y;  	while (1)  	{  		if (p->next->next == null) break;  		  		_mid1 = p->next->x;  		_mid2 = p->next->y;  		p->next->x = mid1;  		p->next->y = mid2;  		mid1 = _mid1;  		mid2 = _mid2;   		p = p->next;  	}  	p = head->next;  	{  		p->x = a;  		p->y = b;  	}  }

总结

到此这篇关于c语言实现贪吃蛇游戏代码的文章就介绍到这了,更多相关c语言贪吃蛇游戏内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享C语言实现贪吃蛇游戏代码,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1045438.html

(0)
上一篇 2022年2月7日
下一篇 2022年2月7日

精彩推荐