999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

連連看游戲的設計與實現

2021-03-14 00:50:58呂橙萬珊珊
現代計算機 2021年36期
關鍵詞:引擎界面設置

呂橙,萬珊珊

(北京建筑大學電氣與信息工程學院,北京 100044)

0 引言

“連連看”是一款風靡很多年的單機版小游戲,游戲規則簡單,玩家可以將2 個相同圖案的圖片連接起來,連接線不多于3 根直線,即圖片間連線的轉角不超過2,就可以成功消除此對圖片。該游戲改造成網絡游戲后,一方面增強了該游戲的競技性和合作性,把單機版中在規定時間內完成的游戲改變成了玩家之間的相互制約、相互競爭,也可以多人組隊合作完成游戲;另一方面增強了該游戲的趣味性,游戲的類型從簡單的寵物連連看拓展為多種形式,有果蔬連連看、奧特曼連連看、喜洋洋連連看、TWINS連連看、QQ連連看和植物大戰僵尸連連看等等。

(1)勝利條件:消除全部圖片,按剩余圖片排名;其它玩家全部輸掉。

(2)失敗條件:30 秒內未成功消除一對圖片;有玩家消除全部圖片。

(3)名稱說明

重排:將我方游戲池中的所有卡片重新排列一次。冰凍:禁止對手選擇游戲池中的卡片,時間限制為5 秒。炸彈:隨機炸掉一對符合消除條件的卡片。障礙:使對方游戲池中無卡片處隨機增加6 對卡片。墨鏡:使對方游戲池全部暗掉。反轉:使對方游戲池里的卡片左右位置調換。

文獻[1]著重闡述了基于Android 平臺的連連看游戲界面的設計。文獻[2]針對深度優先搜索查找算法進行了詳細闡述。文獻[3]采用JDK7.0,和MyEclipse 10 完成了連連看游戲的設計與實現。文獻[4]則從人臉識別的角度講述了連連看游戲的開發方法和過程。文獻[5]則從課程思政角度講述了中國風連連看游戲的設計與實現。

連連看游戲常用于學生課設、實驗等實踐環節,面向對象通常是計算機或計算機相近專業的高年學生。而對于低年級學生或初學者來說,利用編程實現這類游戲存在著明顯的困難。本文利用Visual studio 2019 軟件的EasyX 圖形庫實現了連連看游戲。

1 連連看游戲總體設計

1.1 游戲功能分析

1.1.1 初始化游戲界面

該部分主要是數據的初始化、通過鼠標點擊事件選擇游戲類型,以及生成隨機數,并通過隨機數加載圖片形成連連看初始的界面。

1.1.2 圖片的選擇、判斷與消除

該功能主要是通過鼠標點擊事件選取所要消除的兩個相同圖片,然后對選中的圖片進行判斷:如果兩張圖片的圖案相同,且連接線不多于3根直線,即圖片間連線的轉角不超過2,則消除此對圖片,否則,不能消除,并給出“嘟聲”警告。

1.1.3 游戲的提示

如果游戲界面中所有的圖片全部消除,則提示“游戲結束”信息。如果當前狀態沒有任何可連通的相同圖片時,則判斷當前是否可以重排,并給出相關提示信息。如果玩家點擊“提示”按鈕,則可以獲取系統幫助,繼續游戲。

1.2 程序模塊劃分

1.2.1 游戲初始化模塊

該模塊是確定游戲運行的初始狀態,主要包括進行游戲界面繪制、音樂和音效設置、難度設置、寵物類型設置、算法設置等等。

1.2.2 游戲引擎模塊

該模塊是程序運行的框架,主要包括連線消牌、炸彈函數、游戲重繪、最優路徑提示、贈送時間、游戲循環設置等等。

1.2.3 游戲控制模塊

該模塊是游戲的執行部分,主要由游戲執行、游戲結束、當前界面是否有解、玩家時間是否耗盡、提示信息是否顯示、統計玩家積分等等。

連連看游戲功能如圖1 所示。

圖1 連連看游戲功能

2 連連看游戲功能詳細設計與代碼實現

2.1 初始化模塊

該模塊是命名為Initial.h的頭文件,所用到的函數如表1所示。

表1 初始化模塊用到的主要函數

其中,初始化函數的主要功能是隨機加載圖片,核心代碼如下:

void intial()

srand((unsigned)time(NULL));

int i,j;

int sort;

score=0;

p1.x=BLANK_STATE;

p1.y=BLANK_STATE;

p2.x=BLANK_STATE;

p2.y=BLANK_STATE;

//p1,p2兩點設在畫面之外,看不見

pen=::CreatePen(PS_SOLD,3,RGB(255,0,0));

fram_sign=false;

clue_sign=false;

//清空map二維數組

for(int i=0;i

for(int j=0;j

map[i][j]=0;

//把中間全置成-1。-1 代表沒有圖,>0 代表有圖,圖的序號

for(int i=0;i

for(int j=0;j

map[i+2][j+2]=-1;

num++; //總共需要的圖片數量

//初始化map二維數組

int m_a[1000]={0};

for(int i=1;i<=num/2;i++)//保 證 圖 片 成 對 出現,所以取一半

while(1)

sort=rand()%39+1;

if(sort_num[sort-1]<2) //每個圖片不超過2張,總共不超過4張

m_a[i]=sort; //放進地圖中

m_a[i+num/2]=m_a[i];

sort_num[sort-1]++;//該圖片數量加1

break;

int sum=num;

int k=0;

for(int i=0;i

for(int j=0;j

if(map[i][j]==-1)

k=rand()%sum+1; //隨機數產生下一個m_a的下標

map[i][j]=m_a[k]; //放進地圖中

//某張圖片賦值給map 后,就刪掉,后面的圖片依次前移

for(int p=k;p<=sum-1;p++)

m_a[p]=m_a[p+1];

sum--;

2.2 游戲引擎模塊

該模塊是命名為GameEngine.h 的頭文件,主要包含游戲引擎類的設計和相關函數的設計。游戲引擎類的設計如下:

class GameEngine

private:

protected:

static GameEngine *m_pGameEngin;//指向自身的指針

HINSTANCE m_hInstance;//實例句柄

HWND m_hWnd;//窗口句柄

TCHAR m_szWindowsClass[32];//窗口類名

TCHAR m_szWndTitle[32];//窗口標題

Int m_iWidth,m_iHeight;//窗口的寬和高

int m_iFrameDelay;//游戲周期的間隔時間

bool start_sign;//游戲開始標記

public:

GameEngine(HINSTANCE hInstance,LPTSTR sz?WindowClass,LPTSTR szTitle,int iWidth,int iHeight,int IDelay);

virtual~GameEngine();

//訪問方法

static GameEngine * GetEngine(){return m_pGa?meEngine;}

HINSTANCE GetInstance (){return m_hIn?stance;}

HWND GetWnd(){return m_hWnd;}

void SetWnd(HWND hWnd){ m_hWnd =hWnd;}

LPTSTR GetTitle(){return m_szWndTitle;}

int GetWidth(){return m_iWidth;}

void SetWidth(){m_iWidth=iWidth;}

int GetHeight(){return m_iHeight;}

void SetHeight (int iHeight){m_iHeight =iHeight;}

int GetDelay(){return m_iFrameDelay;}

void SetDelay(int iDelay){m_iFrameDelay = iDe?lay;}

void SetStart(bool sign){start_sign=sign;}

bool getStart(){return start_sign;}

//初始化函數

BOOL initiallize(int cmdShow);

//消息處理

LRESULT HandleEvent(HWND hWnd, UINT message,WPARAM wParam,LPARAM lParam);

};

該模塊用到的函數如表2所示。

表2 游戲引擎模塊用到的主要函數

其中,WinMain 函數是游戲的主函數,其核心代碼如下:

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hpreInstance,LPSTR lpcmdline,int iShowCmd)

Msg msg;

static int iticktrigger=0;//設置開始時間為0

int itickcount;

if(!GameInitial(hInstance))//創建GameEngine 類對象g_pGame

return 0;

if(! GameEngine:: GetEngine()->Initiallize(SW_SHOWNORMAL)) //對窗口類對象wndclass 進行賦值并注冊,創建窗口

return 0;

::ZeroMemory(&msg,sizeof(msg));

GameStartBg(); //繪制游戲背景

while(msg.message!=WM_QUIT)

if(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))

::TranslateMessage(&msg);

::DispatchMessage(&msg);

else

::Sleep(1);

itickcount = ::GetTickCount();//返回從程序開始到現在的執行ms數

if(itickcount-iticktrigger>0)

if(GameEngine::GetEngine()->getStart()==true)//如果獲取到的start_sign為真,開始游戲

GamePaint(); //游戲重繪

GameCycle(); //游戲循環

iticktrigger = itickcount + GameEngine::GetEn?gine()->GetDelav();

//設置下一次重繪時間

2.3 游戲控制模塊

該模塊是Game.cpp 的C++文件,所用到函數如表3所示。

表3 游戲控制模塊用到的主要函數

其中,判斷是否連通是重點,其核心代碼如下:

//判斷選中的兩個圖片是否可以連接

bool IsLink(int xl,int yl,int x2,int y2)

{

//x直連

if(x1==x2)

{

if(X1_Lin_X2(x1,y1,y2))

return true;

}

//Y直連i(y1=y2)

if(Y1_Link_Y2(x1,x2,y1))

return true;

//一個拐角

if(0neCormerLink(x1,y1,x2,y2))

return true:

//兩個拐角

if(TwoCornerLink(x1,yl,x2,y2))

return true;

retun false;

}

3 連連看游戲的測試與運行

游戲實現了連連看游戲的基本功能,可以通過鼠標點擊,實現連連看消牌操作,并統計積分。運行界面如圖2所示。

圖2 連連看游戲的運行界面

4 結語

本文以連連看游戲為原型,利用C++語言和Visual Studio 2019 完成了游戲的基本運行,包括游戲的初始化設置、游戲引擎模塊和游戲控制模塊,游戲界面友好、操作簡單,基本上滿足了學生課設要求,提高學生的興趣,帶給學生具有挑戰性的游戲類編程體驗。

猜你喜歡
引擎界面設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
人機交互界面發展趨勢研究
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 欧美精品亚洲精品日韩专区va| 欧美笫一页| 国产主播一区二区三区| 国产剧情无码视频在线观看| 午夜啪啪福利| 日韩精品成人在线| 在线国产91| 欧美一区二区啪啪| 亚洲精品波多野结衣| 欧美午夜视频| 精品久久人人爽人人玩人人妻| 国产精品久久自在自线观看| 又黄又爽视频好爽视频| 人妻无码AⅤ中文字| 精品乱码久久久久久久| 99手机在线视频| 久久无码av三级| 国产精品 欧美激情 在线播放 | 毛片最新网址| 国产精品国产三级国产专业不| 国产欧美在线| 亚洲天堂网在线视频| 一级毛片高清| 久草视频福利在线观看| 噜噜噜久久| 黄色三级毛片网站| 亚洲黄色网站视频| 亚洲一区二区三区麻豆| 自拍偷拍欧美日韩| 国产欧美精品午夜在线播放| 在线观看国产精品一区| 精品自窥自偷在线看| 国产成人精品综合| 日本日韩欧美| 日本欧美中文字幕精品亚洲| 亚洲国产精品日韩av专区| 国产交换配偶在线视频| 亚洲国产一成久久精品国产成人综合| 一本久道久综合久久鬼色| 91精品啪在线观看国产91九色| 2020久久国产综合精品swag| 欧美亚洲一区二区三区在线| 亚洲欧洲日产国产无码AV| 精品国产91爱| 欧美视频在线不卡| 少妇被粗大的猛烈进出免费视频| 亚洲欧美一级一级a| 日日拍夜夜嗷嗷叫国产| 日本不卡在线播放| 91精品久久久久久无码人妻| 天天色天天操综合网| 亚洲欧美一区二区三区麻豆| 91国内在线观看| 国产精品免费电影| 国产激爽大片高清在线观看| 激情影院内射美女| 国产精品微拍| 日韩欧美网址| 久久综合五月| 久久77777| 色婷婷亚洲十月十月色天| 日本亚洲成高清一区二区三区| 91一级片| 精品一区二区三区无码视频无码| 99久久国产精品无码| 色综合a怡红院怡红院首页| 国产va在线观看| 国产黄色片在线看| 精品国产三级在线观看| 国产女同自拍视频| 国产香蕉国产精品偷在线观看| 亚洲天堂精品在线| 日韩精品专区免费无码aⅴ| 亚洲第一区精品日韩在线播放| 国产第八页| 国产精品午夜福利麻豆| 欧美黄网在线| 91美女视频在线| 欧美精品成人| 99爱在线| 72种姿势欧美久久久大黄蕉| 亚洲国产成人超福利久久精品|