亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言實(shí)現(xiàn)貪吃蛇游戲代碼

 更新時(shí)間:2022年02月07日 09:52:18   作者:鴻蒙之始  
大家好,本篇文章主要講的是C語言實(shí)現(xiàn)貪吃蛇游戲代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下

一、實(shí)現(xiàn)效果

鍵位:使用wasd四個(gè)鍵位來控制方向,按q鍵退出(注意在終用英文輸入法實(shí)現(xiàn)鍵控)

規(guī)則:蛇每吃一個(gè)豆會(huì)得10分,同時(shí)身體邊長、移速加快

當(dāng)蛇碰到墻壁或咬到自身時(shí)游戲結(jié)束,同時(shí)會(huì)輸出游戲得分

二、部分代碼解釋

(1)用結(jié)構(gòu)體定義蛇和豆

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)點(diǎn)擊控制函數(shù)

int ClickControl()
{
	char c;
	while (1)
	{
		if (Judge()==0) return 0;
		if (_kbhit())
		{
			click = _getch();
		}
		MovingBody();
		Eating();
	}
	return 1;
}

(5)移動(dòng)控制

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;
	}
}

總結(jié)

到此這篇關(guān)于C語言實(shí)現(xiàn)貪吃蛇游戲代碼的文章就介紹到這了,更多相關(guān)C語言貪吃蛇游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言Make命令用法講解

    C語言Make命令用法講解

    本文詳細(xì)講解了C語言Make命令用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C語言中scanf與scanf_s函數(shù)的使用詳解

    C語言中scanf與scanf_s函數(shù)的使用詳解

    本文主要介紹了C語言中scanf與scanf_s函數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++?DLL注入工具(完整源碼)

    C++?DLL注入工具(完整源碼)

    這篇文章主要介紹了C++?DLL注入工具的相關(guān)資料,并向大家分享了完整的源碼,具有一定的參考價(jià)值,希望對(duì)正在工作或?qū)W習(xí)的你有所幫助
    2022-02-02
  • C語言實(shí)現(xiàn)Floyd算法

    C語言實(shí)現(xiàn)Floyd算法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)Floyd算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言中 值傳遞和指針傳遞實(shí)例詳解

    C語言中 值傳遞和指針傳遞實(shí)例詳解

    這篇文章主要介紹了C語言中 值傳遞和指針傳遞實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • QT編寫地圖實(shí)現(xiàn)設(shè)備點(diǎn)位的示例代碼

    QT編寫地圖實(shí)現(xiàn)設(shè)備點(diǎn)位的示例代碼

    在地圖應(yīng)用的相關(guān)項(xiàng)目中,在地圖上標(biāo)識(shí)一些設(shè)備點(diǎn),并對(duì)點(diǎn)進(jìn)行交互這個(gè)功能用的最多的,于是需要一套機(jī)制可以動(dòng)態(tài)的添加、刪除、清空、重置。本文將詳細(xì)介紹這些功能如何實(shí)現(xiàn),需要的可以參考一下
    2022-01-01
  • 基于Matlab圖像處理的公路裂縫檢測(cè)實(shí)現(xiàn)

    基于Matlab圖像處理的公路裂縫檢測(cè)實(shí)現(xiàn)

    隨著公路的大量投運(yùn),公路日常養(yǎng)護(hù)和管理已經(jīng)成為制約公路運(yùn)營水平提高的瓶頸,特別是路面狀態(tài)采集、檢測(cè)維護(hù)等工作更是對(duì)傳統(tǒng)的公路運(yùn)維模式提出了挑戰(zhàn)。這篇文章主要介紹了如何通過Matlab圖像處理實(shí)現(xiàn)公路裂縫檢測(cè),感興趣的可以了解一下
    2022-02-02
  • C語言實(shí)例講解選擇語句的使用

    C語言實(shí)例講解選擇語句的使用

    選擇語句是C語言中的重要組成部分,該部分也比較基礎(chǔ),本文將通過最通俗易懂的方式來為大家做出講解。相信通過本文的學(xué)習(xí),讓大家一舉拿下C語言選擇語句的知識(shí)點(diǎn)
    2022-05-05
  • Linux中使用VS Code編譯調(diào)試C++項(xiàng)目詳解

    Linux中使用VS Code編譯調(diào)試C++項(xiàng)目詳解

    最近因?yàn)轫?xiàng)目的需求,需要在Linux下開發(fā)C++相關(guān)項(xiàng)目,經(jīng)過一番摸索最終實(shí)現(xiàn)了,下面這篇文章就給大家簡(jiǎn)單總結(jié)了一下如何通過VS Code進(jìn)行編譯調(diào)試的一些注意事項(xiàng)。有需要的朋友們可以參考借鑒,下面來跟著小編一起看看吧。
    2016-12-12
  • C++元編程語言初步入門詳解

    C++元編程語言初步入門詳解

    這篇文章主要為大家介紹了C++元編程語言初步入門的詳解示例,文中包含詳細(xì)的基本概念及運(yùn)用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10

最新評(píng)論