最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++調(diào)用EasyX庫實現(xiàn)嫦娥奔月小游戲

 更新時間:2023年09月15日 14:37:20   作者:GZX墨痕  
這篇文章主要為大家詳細(xì)介紹了C++如何調(diào)用EasyX庫編寫一個簡單的嫦娥奔月小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下

引言

不羨嫦娥成神仙,月宮寒冷恨無邊;不羨吳剛桂花酒,人間美酒比蜜甜。中秋之夜慶團圓,家家戶戶笑聲歡。愿以此心寄明月,國泰民安長萬年。

前期準(zhǔn)備

這個C++項目需要調(diào)用Easyx圖形庫,可從官網(wǎng)下載使用:easyx.cn/

我們只需要將下載好的文件中的.exe文件復(fù)制粘貼到我們建立項目的地址處就可以使用了。

開始項目

在建立項目后,我們需要建立一個文件夾用來存放圖片,這里需要存放 "嫦娥"、"月亮”圖片:

完成這些之后,就可以安心敲代碼了。

我們首先需要對程序設(shè)計進行大致分析,也就是說我需要干什么、怎么干。

在這里我需要設(shè)計一款游戲,玩家通過鍵盤進行移動,月亮在玩家移動后也會隨機移動,玩家需要幫助嫦娥追到月亮。

初始化繪圖窗口后加載圖片,為了代碼的可閱讀性,這里使用棋盤的思想,設(shè)計一個棋盤,我們將月亮放在棋盤中間,將嫦娥放在棋盤左下角,宏定義棋盤格子的大小后,我們使嫦娥和月亮的坐標(biāo)最小長度都為1,將相應(yīng)的坐標(biāo)乘上格子大小就是真實坐標(biāo)了。

現(xiàn)在具體分析一下:

下面將需要全局聲明、全局變量、宏定義、頭文件貼出來:

#include <graphics.h>
#include <conio.h>
#include<iostream>
using namespace std;
#define WINDOW_LENGTH 1024    //棋盤長
#define WINDOW_WIDTH 768      //棋盤寬
#define BEGIN_X 85            //棋盤最左上角點的x坐標(biāo)
#define BEGIN_Y 85            //棋盤最左上角點的y坐標(biāo)
#define GRID_N 15             //格子數(shù)
#define GRID_LENGTH 30        //每個格子的邊長(像素數(shù))
//定義圖型變量
IMAGE pic_moon;
IMAGE pic_ren;
//定義二維棋盤數(shù)組 
int chessboard[15][15] = { 0 };
//****************核心數(shù)據(jù)*****************//
//定義判斷玩家或電腦
int last = 1;
//人物初始位置
int renX = 0;
int renY = 14;
int moonX = 7;
int moonY = 7;
int step = 0;
//判斷贏 
int num = 0;
void start();
void loadsource();
void playgame();
void wingame();
void drawpicture();

程序主要使用自定義函數(shù),主函數(shù)非常簡短:

void main()
{
	start();
}

下面是start()函數(shù)代碼:

void start()
{
	//設(shè)置初始面板
	//mciSendString("play  music\qingtian.mp3",0,0,0);
	initgraph(WINDOW_LENGTH, WINDOW_WIDTH);
	loadsource();
	playgame();
}

根據(jù)執(zhí)行順序,我們進入加載圖片的函數(shù):

void loadsource()
{
	//加載
	loadimage(&pic_moon, L"tupian\moon.png", GRID_LENGTH, GRID_LENGTH);
	loadimage(&pic_ren, L"tupian\ren.png", GRID_LENGTH, GRID_LENGTH);
}

接下來就是玩游戲的函數(shù)了,這里相比之前的函數(shù)代碼相對較長,但是也很好理解,我們將嫦娥和月亮限制在棋盤中,根據(jù)玩家的輸入嫦娥移動,使用last來使玩家和電腦依次移動,最后判斷是否勝利。

void playgame()
{
	//移動人物
	unsigned char ch;
	while (1)
	{
		drawpicture();
		if (last == 1 && renX >= 0 && renX <= 14 && renY >= 0 && renY <= 14)
		{
			ch = _getch();
			step++;
			switch (ch)
			{
			case 'a':
			case 'A':
			{
				renX--;
				last = 2;
				break;
			}
			case 'w':
			case 'W':
			{
				renY--;
				last = 2;
				break;
			}
			case 's':
			case 'S':
			{
				renY++;
				last = 2;
				break;
			}
			case 'd':
			case 'D':
			{
				renX++;
				last = 2;
				break;
			}
			}
		}
		if (renX > 14)
			renX--;
		if (renX < 0)
			renX++;
		if (renY > 14)
			renY--;
		if (renY < 0)
			renY++;
		//移動月亮
		if (last == 2)
		{
			last = 1;
			int moon_temp_X = rand() % 3;
			int moon_temp_Y = rand() % 3;
			switch (moon_temp_X)
			{
			case 0:
				break;
			case 1:
				moonX++;
				break;
			case 2:
				moonX--;
				break;
			}
			switch (moon_temp_Y)
			{
			case 0:
				break;
			case 1:
				moonY++;
				break;
			case 2:
				moonY--;
				break;
			}
		}
		if (moonX > 14)
			moonX--;
		if (moonX < 0)
			moonX++;
		if (moonY > 14)
			moonY--;
		if (moonY < 0)
			moonY++;
		wingame();
	}
}

wengame()函數(shù)非常簡短,也很簡單:

void wingame()
{
	if (renX == moonX && renY == moonY)
		num = 1;
}

我們可以在playgame()函數(shù)中看到使用了顯示圖片函數(shù),這個函數(shù)根據(jù)坐標(biāo)顯示嫦娥和月亮圖片,并每一次都重新繪制圖像,不然程序中會出現(xiàn)多個嫦娥和月亮,這是因為圖片被顯示后在程序中會一直存在,使用我們需要使用函數(shù)重新繪制圖像。可以看到這里有畫線的操作,其實在最后這是可以被注釋掉的(不注釋也不會有什么大問題,而且這可以幫助我們調(diào)整嫦娥和月亮位置),最后我們根據(jù)是否勝利進行輸出。這里同樣貼出代碼:

void drawpicture()
{
	for (int i = 0; i < GRID_N; i++)
	{
		setlinecolor(WHITE);
		line(100, 100 + i * GRID_LENGTH, 100 + GRID_LENGTH * 14, 100 + i * GRID_LENGTH);
		line(100 + i * GRID_LENGTH, 100, 100 + i * GRID_LENGTH, 100 + GRID_LENGTH * 14);
	}
	cleardevice();
	putimage(BEGIN_X + renX * GRID_LENGTH, BEGIN_Y + renY * GRID_LENGTH, &pic_ren);
	putimage(BEGIN_X + moonX * GRID_LENGTH, BEGIN_Y + moonY * GRID_LENGTH, &pic_moon);
	if (num == 1)
	{
		settextcolor(BLACK);
		setbkmode(TRANSPARENT);
		settextstyle(50, 30, L"宋體");
		outtextxy(650, 340, L"勝利,終端查看移動步數(shù)!");
		cout << "玩家勝利,共移動" << step << "步" << endl;
		Sleep(1000);
		closegraph();
	}
}

結(jié)語

游戲到這里就基本設(shè)計結(jié)束了,當(dāng)然也可以繼續(xù)修改增加一些技能什么的,這個筆者后續(xù)可能會繼續(xù)設(shè)計。下面貼出部分游戲畫面:

以上就是C++調(diào)用EasyX庫實現(xiàn)嫦娥奔月小游戲的詳細(xì)內(nèi)容,更多關(guān)于C++ EasyX游戲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言實現(xiàn)多項式的相加

    C語言實現(xiàn)多項式的相加

    這篇文章主要為大家介紹了C語言實現(xiàn)多項式的相加,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 淺談Windows系統(tǒng)下C語言編程中Glib庫的使用

    淺談Windows系統(tǒng)下C語言編程中Glib庫的使用

    這篇文章主要介紹了Windows系統(tǒng)下C語言編程中Glib庫的使用,Glib庫在多線程編程中經(jīng)??梢杂玫?需要的朋友可以參考下
    2016-02-02
  • C++全面細(xì)致講解復(fù)數(shù)類

    C++全面細(xì)致講解復(fù)數(shù)類

    本文章向大家介紹C++ 標(biāo)準(zhǔn)庫中的復(fù)數(shù)類,主要包括C++ 標(biāo)準(zhǔn)庫中的復(fù)數(shù)類使用實例、應(yīng)用技巧、基本知識點總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實現(xiàn)方法

    C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實現(xiàn)方法

    這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之哈夫曼樹的實現(xiàn)方法,簡單說明了哈夫曼樹的原理,并結(jié)合具體實例形式分析了C++實現(xiàn)哈夫曼樹的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 對C語言中sizeof細(xì)節(jié)的三點分析介紹

    對C語言中sizeof細(xì)節(jié)的三點分析介紹

    以下是對C語言中sizeof的細(xì)節(jié)進行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • 詳解C語言學(xué)習(xí)記錄之指針

    詳解C語言學(xué)習(xí)記錄之指針

    關(guān)于指針,其是C語言的重點,C語言學(xué)的好壞,其實就是指針學(xué)的好壞。其實指針并不復(fù)雜,學(xué)習(xí)指針,要正確的理解指針,本片文章能給就來學(xué)習(xí)一下
    2021-11-11
  • 指針與const限定符的使用分析

    指針與const限定符的使用分析

    本篇文章對指針與const限定符的使用進行了分析介紹。需要的朋友參考下
    2013-05-05
  • C語言詳解UDP通信的實現(xiàn)

    C語言詳解UDP通信的實現(xiàn)

    UDP協(xié)議是用戶數(shù)據(jù)報協(xié)議,面向無連接的、不穩(wěn)定、不可靠、不安全的數(shù)據(jù)報傳遞---更像是是收發(fā)短信;UDP傳輸不需要建立連接,傳輸效率更高,在穩(wěn)定的局域網(wǎng)內(nèi)環(huán)境相對可靠;UDP天然支持多客戶端
    2022-05-05
  • QT計算時間差的方法詳解

    QT計算時間差的方法詳解

    這篇文章主要為大家詳細(xì)介紹了利用QT實現(xiàn)計算兩個時間的時間差的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Qt實現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié)

    Qt實現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié)

    在Qt中提供了QSqlTableModel模型類,它為開發(fā)者提供了一種直觀的方式來與數(shù)據(jù)庫表格進行交互,本文就來介紹一下Qt實現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié),感興趣的可以了解一下
    2023-12-12

最新評論

香河县| 三门县| 蒙阴县| 旌德县| 达拉特旗| 平阳县| 抚宁县| 玛曲县| 安宁市| 株洲县| 镇巴县| 桐城市| 灯塔市| 青龙| 新宾| 通江县| 嘉义县| 临澧县| 余姚市| 黎川县| 钟祥市| 泰来县| 建德市| 丰城市| 托克逊县| 弥渡县| 南宁市| 汾阳市| 璧山县| 兰西县| 长宁县| 仙桃市| 渭南市| 防城港市| 鸡东县| 遂溪县| 崇信县| 奉贤区| 大冶市| 南皮县| 安吉县|