国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++小游戲貪吃蛇源碼

這篇具有很好參考價值的文章主要介紹了C++小游戲貪吃蛇源碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

graphics.h是針對DOS下的一個C語言圖形庫 (c++也可以)

目前支持下載此頭文件的常用的有兩種:

    1. EGE (Easy Graphics Engine)

    2. EasyX Graphics Library

EGE, 全名Easy Graphics Engine, 是windows下的簡易繪圖庫,是一個類似BGI(graphics.h)的面向C/C++語言新手的圖形庫

EasyX, 全名EasyX Graphics Library, 是針對 Visual C++ 的免費繪圖庫,支持 VC6.0 ~ VC2022,簡單易用,學習成本極低,應用領域廣泛。目前已有許多大學將 EasyX 應用在教學當中

我建議Visual Studio用EasyX, Dev-C++可以用EGE

解決的方法:去 EasyX官網 下載EasyX的exe程序,點擊后直接對自己使用的VC版本進行安裝就行了,很簡單。.

C++小游戲貪吃蛇源碼,C++,c++,開發(fā)語言

Graphics.h常用用法:

    1.initgraph(width, height)和closegraph()
            
            initgraph可以創(chuàng)建一個寬度為width, 高度為height的圖形界面窗口
            
             運行結束后可以通過closegraph來關閉窗口 

            注, closegraph之前記得用getch()函數(shù)來接收用戶輸入, 防止程序剛繪畫玩就關閉窗口了

    2.line(x1,y1,x2,y2)
            從x1,y1坐標畫一條直線到x2,y2坐標

    3.setcolor和RGB
            setcolor()可以把line畫出來的直線變成另外一種顏色

            RGB可以返回setcolor的自定義參數(shù)

            RGB(r,g,b)可以修改不同濃度的紅, 綠, 藍

            EX:

                    setcolor(RGB(200,0,0))可以將line畫出來的直線變成紅色

    4.circle(x,y,radius)
            在x,y坐標點畫一個半徑為radius的圓

            EX:

                    circle(200, 200, 100);

    5.setfillcolor, bar(x1,y1,x2,y2)
            bar函數(shù)可以畫出一個矩形

            范圍為:x坐標從50-300,y坐標從100-200

            setfillcolor()可以改變Bar的填充顏色值,參數(shù)也是RGB()函數(shù)的自定義顏色

    6.fillellipse(x,y,xr,yr);
            畫一個在x, y坐標點的實心橢圓

            x軸上的半徑為xr

            y軸上的半徑為yr

            注:setfillcolor也可以改變其填充顏色值

    7.setfontbkcolor(), setfont(12, 0, "宋體")
            setfontcolor可以修改創(chuàng)建的文字的背景顏色值

            setfont(12,0,"宋體")的第一個參數(shù)是字體的高度

            第二個參數(shù)是字體的寬度, 如果填0, 那就會使用默認比例值

            第三個參數(shù)是設置文字的字體樣式

    8.outtextxy(x, y, 字符串);
            這個函數(shù)可以在坐標x,y坐標點輸出字符串

            注:字符串也可以是中文

            EX:

                    outtextxy(100, 150, "中文也是支持的");

小游戲運行效果圖:

C++小游戲貪吃蛇源碼,C++,c++,開發(fā)語言

貪吃蛇游戲源代碼:

// 貪吃蛇小游戲.cpp : 定義控制臺應用程序的入口點。
//

#include "stdafx.h"
#include <graphics.h>
#include <Windows.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include "io.h"

#define S_LEN	400	//蛇的最大節(jié)數(shù) 
#define S_SPEED 200	//蛇的速度
#define S_SIZE	20	//蛇的大小

//全局變量
int score = 0;

typedef enum Direction
{
	up = 72,
	down = 80,
	left = 75,
	right = 77
};					//蛇的方向

					//坐標結構體
struct Coordinate
{
	int x;
	int y;
};

//蛇的結構體 
struct Snake
{
	Coordinate sCo[S_LEN];	//每一節(jié)蛇的坐標
	int num;				//蛇的節(jié)數(shù)
	Direction direction;	//蛇的方向
}snake;

//食物的結構體
struct Food
{
	Coordinate fCo;
	int flag;				//食物是否被吃
}food;

//函數(shù)聲明
void InitSnake();			//初始化蛇
void Snake_Food();			//食物坐標
void Snake_Food_Paint();	//畫食物
void Snake_Paint();			//畫蛇
void Snake_Move();			//蛇移動
void Snake_Change();		//方向性移動
void Snake_Eat();			//食物是否被吃 
void Snake_Break();			//判斷是否撞自己
void Game_Over();			//結束游戲

int main(int argc, char *argv[])
{
	InitSnake();
	while (true)
	{
		while (!_kbhit())
		{
			settextcolor(RED);
			score = (snake.num - 2) * 100;
			char s[5];
			sprintf(s, "%d", score);
			outtextxy(500, 60, s);
			if (food.flag == 0)
			{
				Snake_Food();
			}
			Snake_Food_Paint();
			Snake_Break();
			Snake_Eat();
			Snake_Move();
			Sleep(S_SPEED);
		}
		Snake_Change();
	}
	return 0;
}

//初始化蛇
void InitSnake()
{
	//初始化圖形界面
	initgraph(640, 480);
	setbkcolor(RGB(168, 168, 168));
	cleardevice();

	settextcolor(RED);
	settextstyle(32, 0, "黑體");
	outtextxy(510, 20, "貪吃蛇");

	settextcolor(BLACK);
	settextstyle(16, 0, "宋體");
	outtextxy(495, 100, "分數(shù):");

	outtextxy(500, 400, "By:逃逸的卡路里");

	setcolor(RGB(46, 85, 6));
	setfillcolor(RGB(46, 85, 6));
	fillrectangle(0, 0, 480, 480);

	setcolor(RGB(199, 177, 163));
	setfillcolor(RGB(199, 177, 163));
	fillrectangle(40, 40, 440, 440);

	setcolor(RGB(102, 86, 0));
	for (int i = 0; i < 5; i++)
	{
		rectangle(39 - i, 39 - i, 441 + i, 441 + i);
	}
	setcolor(RGB(168, 147, 130));
	for (int i = 60; i < 440; i += 20)
	{
		line(i, 40, i, 440);
		line(40, i, 440, i);
	}
	setorigin(40, 40);
	setcolor(RGB(56, 89, 0));
	setfillcolor(RGB(91, 193, 45));
	fillcircle(10, 10, 9);		//第一節(jié)蛇
	setfillcolor(WHITE);
	fillcircle(8, 5, 2);
	fillcircle(8, 15, 2);
	food.flag = 0;			//食物被吃

							//蛇坐標初始化
	snake.sCo[0].x = 0 + S_SIZE;
	snake.sCo[0].y = 0;
	snake.sCo[1].x = 0;
	snake.sCo[0].y = 0;
	snake.num = 2;
	snake.direction = right;
}

//食物坐標			
void Snake_Food()
{
	int i;
	srand((unsigned)time(NULL));
	while (true)
	{
		int num = 0;
		food.fCo.x = rand() % (400 / S_SIZE)*S_SIZE;
		food.fCo.y = rand() % (400 / S_SIZE)*S_SIZE;
		for (i = 0; i < snake.num; i++)
		{
			if (snake.sCo[i].x == food.fCo.x&&snake.sCo[i].y == food.fCo.y)
			{
				num++;
			}
		}
		if (num == 0)
		{
			break;
		}
	}
	food.flag = 1;
}

//畫食物
void Snake_Food_Paint()
{
	setcolor(RED);
	setfillcolor(RED);
	fillcircle(food.fCo.x + 10, food.fCo.y + 10, 8);
}

//畫蛇
void Snake_Paint()
{
	for (int i = snake.num - 1; i >= 0; i--)
	{
		setcolor(RGB(56, 89, 0));
		setfillcolor(RGB(91, 193, 45));
		fillcircle(snake.sCo[i].x + 10, snake.sCo[i].y + 10, 9);

		if (i == 0)
		{
			setfillcolor(WHITE);
			switch (snake.direction)
			{
			case up:
				fillcircle(snake.sCo[i].x + 5, snake.sCo[i].y + 12, 2);
				fillcircle(snake.sCo[i].x + 15, snake.sCo[i].y + 12, 2);
				break;
			case down:
				fillcircle(snake.sCo[i].x + 5, snake.sCo[i].y + 8, 2);
				fillcircle(snake.sCo[i].x + 15, snake.sCo[i].y + 8, 2);
				break;
			case left:
				fillcircle(snake.sCo[i].x + 12, snake.sCo[i].y + 5, 2);
				fillcircle(snake.sCo[i].x + 12, snake.sCo[i].y + 15, 2);
				break;
			case right:
				fillcircle(snake.sCo[i].x + 8, snake.sCo[i].y + 5, 2);
				fillcircle(snake.sCo[i].x + 8, snake.sCo[i].y + 15, 2);
				break;
			}
		}
	}
	setcolor(RGB(199, 177, 163));
	setfillcolor(RGB(199, 177, 163));
	fillcircle(snake.sCo[snake.num].x + 10, snake.sCo[snake.num].y + 10, 9);
}

//蛇移動
void Snake_Move()
{
	for (int i = snake.num; i > 0; i--)
	{
		snake.sCo[i].x = snake.sCo[i - 1].x;
		snake.sCo[i].y = snake.sCo[i - 1].y;
	}
	switch (snake.direction)
	{
	case up:
		if (snake.sCo[0].y == 0)
		{
			snake.sCo[0].y = 400 - S_SIZE;
		}
		else
		{
			snake.sCo[0].y -= S_SIZE;
		}
		break;
	case down:
		if (snake.sCo[0].y == 400 - S_SIZE)
		{
			snake.sCo[0].y = 0;
		}
		else
		{
			snake.sCo[0].y += S_SIZE;
		}
		break;
	case left:
		if (snake.sCo[0].x == 0)
		{
			snake.sCo[0].x = 400 - S_SIZE;
		}
		else
		{
			snake.sCo[0].x -= S_SIZE;
		}
		break;
	case right:
		if (snake.sCo[0].x == 400 - S_SIZE)
		{
			snake.sCo[0].x = 0;
		}
		else
		{
			snake.sCo[0].x += S_SIZE;
		}
		break;
	}
	Snake_Paint();
}

//方向性移動
void Snake_Change()
{
	int ch;
	ch = getch();
	switch (ch)
	{
	case 'w':
	case 'W':
	case up:
		if (snake.direction != down)
		{
			snake.direction = up;
		}
		break;
	case 's':
	case 'S':
	case down:
		if (snake.direction != up)
		{
			snake.direction = down;
		}
		break;
	case 'a':
	case 'A':
	case left:
		if (snake.direction != right)
		{
			snake.direction = left;
		}
		break;
	case 'd':
	case 'D':
	case right:
		if (snake.direction != left)
		{
			snake.direction = right;
		}
		break;
	}
}

//食物是否被吃
void Snake_Eat()
{
	if (snake.sCo[0].x == food.fCo.x&&snake.sCo[0].y == food.fCo.y)
	{
		snake.num++;
		food.flag = 0;
	}
}

//判斷是否撞自己
void Snake_Break()
{
	for (int i = snake.num - 1; i > 3; i--)
	{
		if (snake.sCo[0].x == snake.sCo[i].x&&snake.sCo[0].y == snake.sCo[i].y)
		{
			Game_Over();
		}
	}
}

//結束游戲
void Game_Over()
{
	cleardevice();
	setcolor(WHITE);
	outtextxy(200, 160, "GAME OVER!!!");
	Sleep(10000);
	closegraph();
}

最后

希望對看到的小伙伴有幫助,有需要改進的地方,歡迎一起討論學習哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-643083.html

到了這里,關于C++小游戲貪吃蛇源碼的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C語言-------實現(xiàn)貪吃蛇小游戲

    C語言-------實現(xiàn)貪吃蛇小游戲

    Windows 這個多作業(yè)系統(tǒng)除了協(xié)調應用程序的執(zhí)行、分配內存、管理資源之外, 它同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數(shù)),可以幫應用程序達到開啟視窗、描繪圖形、使用周邊設備等目的,由于這些函數(shù)服務的對象是應用程序

    2024年04月29日
    瀏覽(26)
  • 小游戲:人生中寫的第一個小游戲——貪吃蛇(C語言)

    小游戲:人生中寫的第一個小游戲——貪吃蛇(C語言)

    ????????小編開了一個關于游戲的專欄,主要是運用easyx圖形庫進行的。 ? ? ? ?第一章:人生中寫的第一個小游戲——貪吃蛇(C語言) ????????這個游戲的代碼我在gitee上發(fā)布了,大家如果不嫌棄,可以進入這個網址進行查看和復制:https://gitee.com/rising-sun-1。 ? ? ?

    2024年02月09日
    瀏覽(32)
  • C語言實戰(zhàn)項目-貪吃蛇小游戲

    C語言實戰(zhàn)項目-貪吃蛇小游戲

    1.定義蛇對象、食物對象 2.初始化蛇、初始化食物 3.控制流程: ( 1)蛇頭和墻壁的碰撞 (2)蛇頭和蛇身體碰撞 (3)蛇頭和食物碰撞 (4)移動速度增大 4.游戲效果: ( 1)蛇身增長 (2)食物消失 -- 新食物產生 (3)分數(shù)累加 (4)移動速度增大 (5)蛇的移動 (6)顯示分

    2024年02月19日
    瀏覽(29)
  • 學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    前言 這幾年人工智能技術大發(fā)展,Python因此幾乎成了第一位的語言。實際上,多年來,它不僅在軟件工程師中得到廣泛使用,也是各行業(yè)通用的專家語言,就是說,不管孩子以后做什么,都可能用得著。準備針對我自己上小學的孩子,每周抽出些時間,通過學習他們感興趣的

    2023年04月09日
    瀏覽(34)
  • 用java寫一個貪吃蛇小游戲(源碼在最后)

    用java寫一個貪吃蛇小游戲(源碼在最后)

    涉及技能: 循環(huán)、分支 方法的抽取 數(shù)組的使用 面向對象 繼承,子類方法的重寫 接口,接口的實現(xiàn) GUI(圖像化界面編程) GUI中的組件: 7.1 窗口 7.2 彈窗 7.3 面板 7.4 文本框 7.5 列表框 7.6 按鈕 7.7 圖片 7.8 交互的事件:監(jiān)聽事件(鼠標事件,鍵盤事件) GUI技術,不流行了!!

    2024年02月03日
    瀏覽(25)
  • C語言之實現(xiàn)貪吃蛇小游戲篇(2)

    目錄 ??測試游戲test.c ??游戲頭文件包含函數(shù)聲明snake.h ??游戲實現(xiàn)snake.c 屏幕錄制 2023-12-02 204515 ? ?????最后感謝大家的閱讀,若有錯誤和不足,歡迎指正!乖乖敲代碼哦!? 代碼---------→【唐棣棣 (TSQXG) - Gitee.com】 聯(lián)系---------→【郵箱:2784139418@qq.com】

    2024年02月05日
    瀏覽(23)
  • C語言從零實現(xiàn)貪吃蛇小游戲

    C語言從零實現(xiàn)貪吃蛇小游戲

    制作不易,點贊關注一下唄?。。?文章目錄 前言 一.? 技術要點 二、 WIN32API介紹 三、 貪吃蛇游戲設計與分析? ? ? ? ?1.游戲開始前的初始化 ? ? ? ? 2.游戲運行的邏輯? 總結 當我們掌握鏈表這樣的數(shù)據(jù)結構之后,我們就可以用它來做一些小項目,比如童年小游戲貪吃蛇

    2024年02月20日
    瀏覽(26)
  • 小游戲貪吃蛇的實現(xiàn)之C語言版

    小游戲貪吃蛇的實現(xiàn)之C語言版

    找往期文章包括但不限于本期文章中不懂的知識點: 個人主頁:我要學編程(?_?)-CSDN博客 所屬專欄:C語言 目錄 游戲前期準備: 設置控制臺相關的信息? GetStdHandle GetConsoleCursorInfo? SetConsoleCursorInfo SetConsoleCursorPosition GetAsyncKeyState 貪吃蛇游戲設計與分析? 本地化 地圖,食物

    2024年04月23日
    瀏覽(22)
  • C語言小項目——小游戲貪吃蛇的實現(xiàn)

    C語言小項目——小游戲貪吃蛇的實現(xiàn)

    我們可以使用 mode命令來設置控制臺的大小,使用title命令來設置控制臺標題。 在C語言中調用庫函數(shù) system來使用這些作用于控制臺的命令 。使用代碼如下: 采用該命令后控制臺界面大概如下: ? 控制臺坐標系以控制臺左上角為原點從上往下y軸坐標增大,從左往右x軸坐標增

    2024年04月27日
    瀏覽(22)
  • 游戲開發(fā)丨基于Pygame的AI版貪吃蛇小游戲

    游戲開發(fā)丨基于Pygame的AI版貪吃蛇小游戲

    本期內容 基于pygame的AI版貪吃蛇小游戲 所需環(huán)境 python pycharm或anaconda pygame 下載地址 https://download.csdn.net/download/m0_68111267/88789665 本游戲使用Pygame模塊開發(fā),不需要玩家操縱貪吃蛇,貪吃蛇會自動吃掉屏幕上隨機出現(xiàn)的食物,每吃一個食物貪吃蛇長度增加一節(jié)。如果貪吃蛇撞到

    2024年02月20日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包