您好,登錄后才能下訂單哦!
小編給大家分享一下易語(yǔ)言中Ex_DirectUI如何自繪掃雷游戲,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
MineMartix
.版本 2 .支持庫(kù) spec .程序集 MineMartix, Ex_控件基類, , ExDUI擴(kuò)展組件_掃雷按鈕 .程序集變量 m_顏色, 整數(shù)型 .程序集變量 m_透明度, 整數(shù)型 .程序集變量 m_Rect, RectF .程序集變量 m_hIcon, 整數(shù)型, , , 圖像句柄 .程序集變量 m_單擊回調(diào)指針, 整數(shù)型 .程序集變量 m_Mine, 邏輯型 .程序集變量 m_Pos, PointF .程序集變量 m_Num, 整數(shù)型, , , 周圍雷數(shù)量 .程序集變量 m_pFont, 整數(shù)型, , , 字體指針 .程序集變量 m_GPs, Gdip_文本格式 .程序集變量 m_ClickdColor, 整數(shù)型, , , 點(diǎn)擊后顏色 .程序集變量 m_CurrentColor, 整數(shù)型, , , 當(dāng)前顏色 .子程序 _初始化, , , 當(dāng)基于本類的對(duì)象被創(chuàng)建后,此方法會(huì)被自動(dòng)調(diào)用 .子程序 _銷毀, , , 當(dāng)基于本類的對(duì)象被銷毀前,此方法會(huì)被自動(dòng)調(diào)用 .子程序 Obj, 整數(shù)型 .參數(shù) hWnd, 整數(shù)型 .參數(shù) msg, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .判斷開(kāi)始 (msg = #事件_初始化) m_pFont = 字體_創(chuàng)建 (“微軟雅黑”, 12) m_GPs.創(chuàng)建 (#文本格式標(biāo)志_不換行) m_ClickdColor = RGB2ARGB (#黑色, 80) 重畫(huà) () 調(diào)試輸出 (hWnd, msg) .判斷 (msg = #事件_銷毀) 圖像_銷毀 (m_hIcon) .判斷 (msg = #事件_繪畫(huà)) Paint (hWnd, 1) .判斷 (msg = #事件_動(dòng)畫(huà)開(kāi)始) 動(dòng)畫(huà)類型 (#動(dòng)畫(huà)類型_默認(rèn)) .判斷 (msg = #事件_動(dòng)畫(huà)結(jié)束) 動(dòng)畫(huà)幀數(shù) (0) .判斷 (msg = #事件_進(jìn)入組件) 動(dòng)畫(huà)幀數(shù) (16, 10) Paint (hWnd, 2) .判斷 (msg = #事件_離開(kāi)組件) 動(dòng)畫(huà)幀數(shù) (16, 10) Paint (hWnd, 1) .判斷 (msg = #事件_左鍵按下) 動(dòng)畫(huà)幀數(shù) (16, 10) Paint (hWnd, 3) .判斷 (msg = #事件_左鍵放開(kāi)) 動(dòng)畫(huà)幀數(shù) (16, 10) Paint (hWnd, 2) .如果真 (m_CurrentColor ≠ #黑色) .如果真 (m_單擊回調(diào)指針 ≠ 0) 調(diào)用子程序_ (m_單擊回調(diào)指針, m_Pos.x, m_Pos.y) .如果真結(jié)束 .如果真結(jié)束 .默認(rèn) .判斷結(jié)束 返回 (-1) .子程序 Paint .參數(shù) hObj, 整數(shù)型 .參數(shù) Status, 整數(shù)型, , 1.正常 2.點(diǎn)燃 2.按下 .局部變量 m_ps, Exs_PaintStruct .局部變量 color, 整數(shù)型 Ex_BeginPaint (hObj, m_ps, , 真) .如果真 (Status = 1) 圖形_填充_矩形 (m_ps.mGraphics, m_ps.Rcf, RGB2ARGB (m_CurrentColor, m_透明度)) ' 畫(huà)正常狀態(tài) .如果真結(jié)束 .如果真 (Status = 2) 圖形_填充_矩形 (m_ps.mGraphics, m_ps.Rcf, RGB2ARGB (m_CurrentColor, 180)) ' 畫(huà)點(diǎn)燃狀態(tài) .如果真結(jié)束 .如果真 (Status = 3) 圖形_填充_矩形 (m_ps.mGraphics, m_ps.Rcf, RGB2ARGB (m_CurrentColor, m_透明度 + 40)) ' 畫(huà)按下?tīng)顟B(tài) .如果真結(jié)束 .如果真 (m_hIcon ≠ 0) 圖形_繪圖 (m_ps.mGraphics, m_hIcon, m_ps.Rcf, 真) ' 畫(huà)雷圖片 .如果真結(jié)束 .如果真 (m_Num ≠ 0) .如果真 (m_Num = 1) color = RGB2ARGB (#藍(lán)色) .如果真結(jié)束 .如果真 (m_Num = 2) color = RGB2ARGB (#綠色) .如果真結(jié)束 .如果真 (m_Num = 3) color = RGB2ARGB (#紅色) .如果真結(jié)束 .如果真 (m_Num = 4) color = RGB2ARGB (#紫色) .如果真結(jié)束 .如果真 (m_Num = 5) color = RGB2ARGB (#紅褐) .如果真結(jié)束 .如果真 (m_Num = 6) color = RGB2ARGB (#天藍(lán)) .如果真結(jié)束 .如果真 (m_Num = 7) color = RGB2ARGB (#白色) .如果真結(jié)束 .如果真 (m_Num = 8) color = RGB2ARGB (#深灰) .如果真結(jié)束 圖形_畫(huà)文本 (m_ps.mGraphics, MakeRCF (m_ps.Rcf.left + 3, m_ps.Rcf.top, m_ps.Rcf.Width, m_ps.Rcf.Height), A2W (到文本 (m_Num)), m_pFont, color, m_GPs.取指針 (), #文本效果_描邊, RGB2ARGB (#白色, 120)) ' 畫(huà)標(biāo)題 .如果真結(jié)束 圖形_描邊_矩形 (m_ps.mGraphics, m_ps.Rcf, #邊框_單線式, RGB2ARGB (#白色), 1) ' 畫(huà)邊框 Ex_EndPaint (hObj, m_ps) .子程序 Create, 整數(shù)型, 公開(kāi) .參數(shù) 窗口句柄, 整數(shù)型 .參數(shù) 左邊, 整數(shù)型 .參數(shù) 頂邊, 整數(shù)型 .參數(shù) 寬度, 整數(shù)型 .參數(shù) 高度, 整數(shù)型 .參數(shù) 顏色, 整數(shù)型, , rgb .參數(shù) 透明度, 整數(shù)型 m_顏色 = 顏色 m_CurrentColor = m_顏色 m_透明度 = 透明度 m_Rect.left = 左邊 m_Rect.top = 頂邊 m_Rect.Width = 寬度 m_Rect.Height = 高度 返回 (初始化 (窗口句柄, m_Rect, 1020150, 真, , #鼠標(biāo)指針_手型)) .子程序 SetIcon, , 公開(kāi) .參數(shù) Icon, 字節(jié)集 .如果真 (Icon = { 0 }) .如果真 (m_hIcon ≠ 0) 圖像_銷毀 (m_hIcon) m_hIcon = 0 .如果真結(jié)束 重畫(huà) () .如果真結(jié)束 m_hIcon = 圖像_創(chuàng)建自字節(jié)集 (Icon) 重畫(huà) () .子程序 SetClickEvents, , 公開(kāi) .參數(shù) pcbk, 整數(shù)型 m_單擊回調(diào)指針 = pcbk .子程序 SetXY, , 公開(kāi), 設(shè)置坐標(biāo) .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 m_Pos.x = x m_Pos.y = y .子程序 SetMine, , 公開(kāi), 設(shè)置為雷 m_Mine = 真 .子程序 CleanMine, , 公開(kāi), 清除雷 m_Mine = 假 .子程序 CheckMine, 邏輯型, 公開(kāi), 檢測(cè)是否為雷 返回 (m_Mine) .子程序 SetMineNum, , 公開(kāi), 設(shè)置周圍雷數(shù)量 .參數(shù) Num, 整數(shù)型 m_Num = Num 重畫(huà) () .子程序 SetStatus, , 公開(kāi) .參數(shù) Status, 整數(shù)型, , 0.未點(diǎn)擊狀態(tài) 1.點(diǎn)擊后狀態(tài) .如果真 (Status = 0) m_CurrentColor = m_顏色 .如果真結(jié)束 .如果真 (Status = 1) m_CurrentColor = #黑色 .如果真結(jié)束 重畫(huà) () .子程序 GetStatus, 整數(shù)型, 公開(kāi) .如果真 (m_CurrentColor = m_顏色) 返回 (0) .如果真結(jié)束 .如果真 (m_CurrentColor = #黑色) 返回 (1) .如果真結(jié)束 返回 (0)
自繪掃雷游戲
此功能需要加載Ex_DirectUI 2.0模塊
.版本 2 .支持庫(kù) eAPI .程序集 窗口程序集1 .程序集變量 Ex, Ex_DirectUI .程序集變量 Martix, MineMartix, , "10,10" .程序集變量 Mine, PointF, , "0" .程序集變量 ScorePos, PointF, , "0" .程序集變量 Btn, 按鈕_Ex .程序集變量 TimeBtn, 超級(jí)按鈕_Ex .程序集變量 ScoreBtn, 超級(jí)按鈕_Ex .程序集變量 restartBtn, 超級(jí)按鈕_Ex .程序集變量 Frame, 分組框_Ex .程序集變量 Time, 整數(shù)型 .程序集變量 Score, 整數(shù)型 .子程序 __啟動(dòng)窗口_創(chuàng)建完畢 .局部變量 i, 整數(shù)型 .局部變量 j, 整數(shù)型 Ex.掛接皮膚 (取窗口句柄 (), , #銀白, 1 + 2 + 4, 150, , 0, , , , , 假) Frame.創(chuàng)建 (取窗口句柄 (), 16, 66, 180, 180) .計(jì)次循環(huán)首 (10, i) .計(jì)次循環(huán)首 (10, j) Martix [i] [j].Create (取窗口句柄 (), j × 16 + 10, i × 16 + 60, 16 + 1, 16 + 1, #天藍(lán), 100) ' 掃雷按鈕矩陣 Martix [i] [j].SetXY (i, j) Martix [i] [j].SetClickEvents (到整數(shù) (&Martix_Click)) ' 掛接單擊事件 .計(jì)次循環(huán)尾 () .計(jì)次循環(huán)尾 () TimeBtn.創(chuàng)建 (取窗口句柄 (), 16, 30, 76, 30, “Time:001”) restartBtn.創(chuàng)建 (取窗口句柄 (), 92, 30, 30, 30, “重置”) restartBtn.掛接事件 (10244, &Init) ScoreBtn.創(chuàng)建 (取窗口句柄 (), 122, 30, 73, 30, “Score:000”) Btn.掛接事件 (10244, &Init) Init () Ex.置進(jìn)入特效 (7) Ex.置退出特效 (2) .子程序 RandPoint, PointF, , 生成隨機(jī)不重復(fù)坐標(biāo) .參數(shù) 最大值, 整數(shù)型 .參數(shù) 數(shù)量, 整數(shù)型 .局部變量 nPoint, PointF, 靜態(tài), "0" .局部變量 i, 整數(shù)型 .計(jì)次循環(huán)首 (數(shù)量, i) nPoint.x = 取隨機(jī)數(shù) (1, 最大值) nPoint.y = 取隨機(jī)數(shù) (1, 最大值) .計(jì)次循環(huán)尾 () .子程序 Init .局部變量 x, 整數(shù)型 .局部變量 y, 整數(shù)型 .局部變量 i, 整數(shù)型 .局部變量 Point, PointF 時(shí)鐘1.時(shí)鐘周期 = 0 Score = 0 Time = 0 ScoreBtn.標(biāo)題 (“Score:000”) TimeBtn.標(biāo)題 (“Time:000”) 置隨機(jī)數(shù)種子 () .計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (Mine), i) ' 清除雷 Martix [Mine [i].x] [Mine [i].y].SetIcon ({ 0 }) Martix [Mine [i].x] [Mine [i].y].CleanMine () Martix [Mine [i].x] [Mine [i].y].重畫(huà) () .計(jì)次循環(huán)尾 () .計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (ScorePos), i) ' 清除已經(jīng)點(diǎn)過(guò)的方格 Martix [ScorePos [i].x] [ScorePos [i].y].SetStatus (0) Martix [ScorePos [i].x] [ScorePos [i].y].SetMineNum (0) Martix [ScorePos [i].x] [ScorePos [i].y].重畫(huà) () .計(jì)次循環(huán)尾 () 清除數(shù)組 (Mine) 清除數(shù)組 (ScorePos) .計(jì)次循環(huán)首 (10, i) ' 隨機(jī)埋雷 x = 取隨機(jī)數(shù) (1, 10) y = 取隨機(jī)數(shù) (1, 10) Martix [x] [y].SetMine () Point.x = x Point.y = y 加入成員 (Mine, Point) .計(jì)次循環(huán)尾 () .子程序 Martix_Click .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .局部變量 i, 整數(shù)型 .如果真 (時(shí)鐘1.時(shí)鐘周期 = 0) 時(shí)鐘1.時(shí)鐘周期 = 1000 .如果真結(jié)束 .如果 (ClickMine (x, y) = 真) 增加分?jǐn)?shù) (x, y) .計(jì)次循環(huán)首 (10, i) Martix [Mine [i].x] [Mine [i].y].SetIcon (#MinePic) .計(jì)次循環(huán)尾 () 時(shí)鐘1.時(shí)鐘周期 = 0 信息框_Ex (取窗口句柄 (), “您輸了! 分?jǐn)?shù):” + 到文本 (取數(shù)組成員數(shù) (ScorePos)), , , , , , , , , , 真, , #銀白, 120, 0, , , 假, , 7, 2) Init () .否則 .如果 (Score < 90) 自動(dòng)區(qū)域 (x, y) .否則 時(shí)鐘1.時(shí)鐘周期 = 0 信息框_Ex (取窗口句柄 (), “恭喜通關(guān)! 時(shí)間:” + 到文本 (Time), , , , , , , , , , 真, , #銀白, 120, 0, , , 假, , 7, 2) Init () .如果結(jié)束 .如果結(jié)束 .子程序 ClickMine, 邏輯型, , 點(diǎn)擊方格,點(diǎn)到雷返回真 .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .如果真 (Martix [x] [y].GetStatus () = 0) 增加分?jǐn)?shù) (x, y) Martix [x] [y].SetStatus (1) .如果真 (Martix [x] [y].CheckMine () = 真) 返回 (真) .如果真結(jié)束 返回 (假) .如果真結(jié)束 返回 (假) .子程序 增加分?jǐn)?shù) .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .局部變量 Point, PointF Point.x = x Point.y = y 加入成員 (ScorePos, Point) Martix [x] [y].SetMineNum (計(jì)算雷數(shù) (x, y)) Score = Score + 1 ScoreBtn.標(biāo)題 (“Score:” + 格式化文本 (“%.3d”, Score)) .子程序 計(jì)算雷數(shù), 整數(shù)型, , 計(jì)算九宮格內(nèi)的雷數(shù) .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .局部變量 Num, 整數(shù)型 .如果真 (x ≠ 1) .如果真 (Martix [x - 1] [y].CheckMine () = 真) ' 左邊 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (x < 10) .如果真 (Martix [x + 1] [y].CheckMine () = 真) ' 右邊 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (y ≠ 1) .如果真 (Martix [x] [y - 1].CheckMine () = 真) ' 上邊 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (y < 10) .如果真 (Martix [x] [y + 1].CheckMine () = 真) ' 下邊 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (x ≠ 1 且 y ≠ 1) .如果真 (Martix [x - 1] [y - 1].CheckMine () = 真) ' 左上角 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (x < 10 且 y < 10) .如果真 (Martix [x + 1] [y + 1].CheckMine () = 真) ' 右下角 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (x ≠ 1 且 y < 10) .如果真 (Martix [x - 1] [y + 1].CheckMine () = 真) ' 左下角 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 .如果真 (x < 10 且 y ≠ 1) .如果真 (Martix [x + 1] [y - 1].CheckMine () = 真) ' 右上角 Num = Num + 1 .如果真結(jié)束 .如果真結(jié)束 返回 (Num) .子程序 自動(dòng)區(qū)域 .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .如果真 (計(jì)算雷數(shù) (x, y) = 0) .如果真 (x ≠ 1) ClickMine (x - 1, y) .如果真結(jié)束 .如果真 (x < 10) ClickMine (x + 1, y) .如果真結(jié)束 .如果真 (y ≠ 1) ClickMine (x, y - 1) .如果真結(jié)束 .如果真 (y < 10) ClickMine (x, y + 1) .如果真結(jié)束 .如果真 (x ≠ 1 且 y ≠ 1) ClickMine (x - 1, y - 1) .如果真結(jié)束 .如果真 (x < 10 且 y < 10) ClickMine (x + 1, y + 1) .如果真結(jié)束 .如果真 (x ≠ 1 且 y < 10) ClickMine (x - 1, y + 1) .如果真結(jié)束 .如果真 (x < 10 且 y ≠ 1) ClickMine (x + 1, y - 1) .如果真結(jié)束 ClickMine (x, y) .如果真結(jié)束 .子程序 _時(shí)鐘1_周期事件 Time = Time + 1 TimeBtn.標(biāo)題 (格式化文本 (“Time:%.3d”, Time))
運(yùn)行結(jié)果:
以上是“易語(yǔ)言中Ex_DirectUI如何自繪掃雷游戲”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。