易語言用畫板制作圍貓游戲的源碼
更新時間:2018年12月04日 10:34:14 作者:易語言源碼教程
今天小編就為大家分享一篇關于易語言用畫板制作圍貓游戲的源碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
DLL命令表
.版本 2 .DLL命令 系統(tǒng)關于對話框, , , "ShellAboutA" .參數(shù) 窗口句柄, 整數(shù)型 .參數(shù) 應用程序標題, 文本型 .參數(shù) 其他信息, 文本型 .參數(shù) 圖標句柄, 整數(shù)型
圖片資源表
.版本 2 .圖片 圓點白色 .圖片 圓點貓 .圖片 圓點墻 .圖片 圓點叉
圍貓游戲
.版本 2 .程序集 窗口程序集_啟動窗口 .程序集變量 圓點狀態(tài), 整數(shù)型, , "121", 0空白1圍墻2陷阱 .程序集變量 貓位置, 整數(shù)型 .程序集變量 游戲狀態(tài), 整數(shù)型, , , 0未開始1正在游戲2游戲結(jié)束 .程序集變量 移動路徑, 整數(shù)型, , "0", 貓的逃跑路徑 .程序集變量 圓點步數(shù), 整數(shù)型, , "121", 計算逃跑路徑時使用,貓到每一點位置的距離 .子程序 新建游戲 .局部變量 橫向計次, 整數(shù)型 .局部變量 縱向計次, 整數(shù)型 .局部變量 位置頂邊, 整數(shù)型 .局部變量 位置左邊, 整數(shù)型 .局部變量 臨時整數(shù), 整數(shù)型 .局部變量 計次變量, 整數(shù)型 .局部變量 當前位置, 整數(shù)型 ' 重置游戲狀態(tài) .計次循環(huán)首 (121, 臨時整數(shù)) 圓點狀態(tài) [臨時整數(shù)] = 0 .計次循環(huán)尾 () 游戲狀態(tài) = 1 貓位置 = 61 清除數(shù)組 (移動路徑) ' 畫出背景 臨時整數(shù) = 載入圖片 (#圓點白色) .計次循環(huán)首 (11, 縱向計次) .計次循環(huán)首 (11, 橫向計次) 位置左邊 = (橫向計次 - 1) × 48 .如果真 (縱向計次 % 2 = 0) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = (縱向計次 - 1) × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , -取顏色值 (128, 128, 128)) .計次循環(huán)尾 () .計次循環(huán)尾 () 卸載圖片 (臨時整數(shù)) ' 畫出貓 臨時整數(shù) = 載入圖片 (#圓點貓) 縱向計次 = (貓位置 - 1) \ 11 橫向計次 = 貓位置 - 縱向計次 × 11 位置左邊 = (橫向計次 - 1) × 48 .如果真 (縱向計次 % 2 = 1) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = 縱向計次 × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , -取顏色值 (128, 128, 128)) 卸載圖片 (臨時整數(shù)) ' 畫出隨機9個× 臨時整數(shù) = 載入圖片 (#圓點叉) .判斷循環(huán)首 (計次變量 < 9) 置隨機數(shù)種子 () 當前位置 = 取隨機數(shù) (1, 121) .如果真 (當前位置 ≠ 貓位置 且 圓點狀態(tài) [當前位置] = 0) 計次變量 = 計次變量 + 1 圓點狀態(tài) [當前位置] = 2 縱向計次 = (當前位置 - 1) \ 11 橫向計次 = 當前位置 - 縱向計次 × 11 位置左邊 = (橫向計次 - 1) × 48 .如果真 (縱向計次 % 2 = 1) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = 縱向計次 × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , -取顏色值 (128, 128, 128)) .如果真結(jié)束 .判斷循環(huán)尾 () 卸載圖片 (臨時整數(shù)) .子程序 _畫板1_鼠標左鍵被按下, 邏輯型 .參數(shù) 橫向位置, 整數(shù)型 .參數(shù) 縱向位置, 整數(shù)型 .參數(shù) 功能鍵狀態(tài), 整數(shù)型 .局部變量 橫坐標, 整數(shù)型 .局部變量 縱坐標, 整數(shù)型 .局部變量 臨時整數(shù), 整數(shù)型 .局部變量 位置頂邊, 整數(shù)型 .局部變量 位置左邊, 整數(shù)型 .局部變量 位置序號, 整數(shù)型 .如果真 (游戲狀態(tài) ≠ 1) 返回 () .如果真結(jié)束 .如果真 (畫板1.取點 (橫向位置, 縱向位置) = #灰色) 返回 () .如果真結(jié)束 縱坐標 = 縱向位置 \ 40 .如果 (縱坐標 % 2 = 1) 橫坐標 = (橫向位置 + 24) \ 48 - 1 .否則 橫坐標 = 橫向位置 \ 48 .如果結(jié)束 ' 計算點擊序號 位置序號 = 橫坐標 + 縱坐標 × 11 + 1 ' 判斷是否可以圍墻 .如果真 (位置序號 = 貓位置) 返回 () .如果真結(jié)束 .如果真 (圓點狀態(tài) [位置序號] > 0) 返回 () .如果真結(jié)束 ' 畫出圍墻 臨時整數(shù) = 載入圖片 (#圓點墻) 位置左邊 = 橫坐標 × 48 .如果真 (縱坐標 % 2 = 1) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = 縱坐標 × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , ) 卸載圖片 (臨時整數(shù)) ' 修改位置狀態(tài) 圓點狀態(tài) [位置序號] = 1 ' 移動貓 移動貓 () ' 檢查游戲狀態(tài) 檢查狀態(tài) () .子程序 移動貓 .局部變量 橫坐標, 整數(shù)型 .局部變量 縱坐標, 整數(shù)型 .局部變量 位置左邊, 整數(shù)型 .局部變量 位置頂邊, 整數(shù)型 .局部變量 臨時整數(shù), 整數(shù)型 ' 尋找逃跑路徑 尋找路徑 () ' 移動路徑 .如果真 (取數(shù)組成員數(shù) (移動路徑) > 1 且 游戲狀態(tài) = 1) ' 刪除貓 臨時整數(shù) = 載入圖片 (#圓點白色) 縱坐標 = (貓位置 - 1) \ 11 橫坐標 = 貓位置 - 縱坐標 × 11 位置左邊 = (橫坐標 - 1) × 48 .如果真 (縱坐標 % 2 = 1) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = 縱坐標 × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , -取顏色值 (128, 128, 128)) 卸載圖片 (臨時整數(shù)) ' 移動貓位置 貓位置 = 移動路徑 [2] 刪除成員 (移動路徑, 1, ) ' 畫出貓 臨時整數(shù) = 載入圖片 (#圓點貓) 縱坐標 = (貓位置 - 1) \ 11 橫坐標 = 貓位置 - 縱坐標 × 11 位置左邊 = (橫坐標 - 1) × 48 .如果真 (縱坐標 % 2 = 1) 位置左邊 = 位置左邊 + 24 .如果真結(jié)束 位置頂邊 = 縱坐標 × 40 畫板1.畫圖片 (臨時整數(shù), 位置左邊, 位置頂邊, , , -取顏色值 (128, 128, 128)) 卸載圖片 (臨時整數(shù)) .如果真結(jié)束 .子程序 檢查路徑, , , 無用 .局部變量 計次變量, 整數(shù)型 .局部變量 是否可用, 邏輯型 .如果 (取數(shù)組成員數(shù) (移動路徑) = 0) 尋找路徑 () .否則 ' 判斷現(xiàn)有路徑是否還可用 是否可用 = 真 .計次循環(huán)首 (取數(shù)組成員數(shù) (移動路徑), 計次變量) .如果真 (圓點狀態(tài) [移動路徑 [計次變量]] > 0) 是否可用 = 假 跳出循環(huán) () .如果真結(jié)束 .計次循環(huán)尾 () .如果真 (是否可用 = 假) 尋找路徑 () .如果真結(jié)束 .如果結(jié)束 .子程序 尋找路徑 .局部變量 當前路徑, 整數(shù)型, , "0" .局部變量 最短路徑, 整數(shù)型, , "0" .局部變量 邊緣位置, 整數(shù)型, , "40" .局部變量 計次變量, 整數(shù)型 .局部變量 是否完成, 邏輯型 .局部變量 臨時文本, 文本型 .局部變量 出口位置, 整數(shù)型 清除數(shù)組 (移動路徑) ' 計算邊緣位置 .計次循環(huán)首 (11, 計次變量) 邊緣位置 [計次變量] = 計次變量 .計次循環(huán)尾 () .計次循環(huán)首 (9, 計次變量) 邊緣位置 [計次變量 + 11] = 計次變量 × 11 + 1 .計次循環(huán)尾 () .計次循環(huán)首 (9, 計次變量) 邊緣位置 [計次變量 + 20] = (計次變量 + 1) × 11 .計次循環(huán)尾 () .計次循環(huán)首 (11, 計次變量) 邊緣位置 [計次變量 + 29] = 計次變量 + 110 .計次循環(huán)尾 () ' 重置步數(shù) .計次循環(huán)首 (121, 計次變量) 圓點步數(shù) [計次變量] = 99 .計次循環(huán)尾 () 圓點步數(shù) [貓位置] = 0 ' 遞歸計算貓位置到每個位置的步數(shù) 計算步數(shù) (貓位置) ' 尋找最短的出口位置 .計次循環(huán)首 (40, 計次變量) .如果真 (圓點步數(shù) [邊緣位置 [計次變量]] > 1) .如果 (出口位置 = 0) 出口位置 = 邊緣位置 [計次變量] .否則 .如果真 (圓點步數(shù) [邊緣位置 [計次變量]] < 圓點步數(shù) [出口位置]) 出口位置 = 邊緣位置 [計次變量] .如果真結(jié)束 .如果結(jié)束 .如果真結(jié)束 .計次循環(huán)尾 () .如果真 (出口位置 = 0) 返回 () .如果真結(jié)束 ' 反向遞歸生成移動路徑 加入成員 (移動路徑, 出口位置) 生成路徑 (出口位置) .子程序 生成路徑 .參數(shù) 當前位置, 整數(shù)型 .局部變量 當前步數(shù), 整數(shù)型 .局部變量 橫坐標, 整數(shù)型 .局部變量 縱坐標, 整數(shù)型 .局部變量 周圍位置, 整數(shù)型, , "6" .局部變量 下個位置, 整數(shù)型 .局部變量 計次變量, 整數(shù)型 當前步數(shù) = 圓點步數(shù) [當前位置] .如果真 (當前步數(shù) = 1) 插入成員 (移動路徑, 1, 貓位置) 返回 () .如果真結(jié)束 縱坐標 = (當前位置 - 1) \ 11 橫坐標 = 當前位置 - 縱坐標 × 11 - 1 ' 計算周圍的位置 ' 查找左上角 .如果真 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) 周圍位置 [1] = (縱坐標 - 1) × 11 + 橫坐標 + 1 .否則 .如果真 (橫坐標 > 0) 周圍位置 [1] = (縱坐標 - 1) × 11 + 橫坐標 .如果真結(jié)束 .如果結(jié)束 .如果真結(jié)束 ' 查找右上角 .如果真 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) .如果真 (橫坐標 < 10) 周圍位置 [2] = (縱坐標 - 1) × 11 + 橫坐標 + 2 .如果真結(jié)束 .否則 周圍位置 [2] = (縱坐標 - 1) × 11 + 橫坐標 + 1 .如果結(jié)束 .如果真結(jié)束 ' 查找左邊 .如果真 (橫坐標 > 0) 周圍位置 [3] = 縱坐標 × 11 + 橫坐標 .如果真結(jié)束 ' 查找右邊 .如果真 (橫坐標 < 10) 周圍位置 [4] = 縱坐標 × 11 + 橫坐標 + 2 .如果真結(jié)束 ' 查找左下角 .如果真 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) 周圍位置 [5] = (縱坐標 + 1) × 11 + 橫坐標 + 1 .否則 .如果真 (橫坐標 > 0) 周圍位置 [5] = (縱坐標 + 1) × 11 + 橫坐標 .如果真結(jié)束 .如果結(jié)束 .如果真結(jié)束 ' 查找右下角 .如果真 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) .如果真 (橫坐標 < 10) 周圍位置 [6] = (縱坐標 + 1) × 11 + 橫坐標 + 2 .如果真結(jié)束 .否則 周圍位置 [6] = (縱坐標 + 1) × 11 + 橫坐標 + 1 .如果結(jié)束 .如果真結(jié)束 ' 尋找下個位置 .計次循環(huán)首 (6, 計次變量) .如果真 (周圍位置 [計次變量] > 0) .如果真 (圓點步數(shù) [周圍位置 [計次變量]] = 當前步數(shù) - 1) 下個位置 = 周圍位置 [計次變量] 跳出循環(huán) () .如果真結(jié)束 .如果真結(jié)束 .計次循環(huán)尾 () ' 如果找不到路徑,游戲結(jié)束 .如果真 (下個位置 = 0) 當前步數(shù) = 0 .計次循環(huán)首 (121, 計次變量) .如果真 (圓點狀態(tài) [計次變量] = 1) 當前步數(shù) = 當前步數(shù) + 1 .如果真結(jié)束 .計次循環(huán)尾 () 信息框 (“貓被圍住了!一共用了” + 到文本 (當前步數(shù)) + “步。”, #信息圖標, “游戲結(jié)束”) 游戲狀態(tài) = 2 返回 () .如果真結(jié)束 ' 加入數(shù)組 插入成員 (移動路徑, 1, 下個位置) ' 遞歸調(diào)用 生成路徑 (下個位置) .子程序 計算步數(shù) .參數(shù) 當前位置, 整數(shù)型 .局部變量 橫坐標, 整數(shù)型 .局部變量 縱坐標, 整數(shù)型 .局部變量 周圍位置, 整數(shù)型, , "6" .局部變量 計次變量, 整數(shù)型 縱坐標 = (當前位置 - 1) \ 11 橫坐標 = 當前位置 - 縱坐標 × 11 - 1 ' 計算周圍的位置 ' 查找左上角 .如果真 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) 周圍位置 [1] = (縱坐標 - 1) × 11 + 橫坐標 + 1 .否則 .如果真 (橫坐標 > 0) 周圍位置 [1] = (縱坐標 - 1) × 11 + 橫坐標 .如果真結(jié)束 .如果結(jié)束 .如果真結(jié)束 ' 查找右上角 .如果真 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) .如果真 (橫坐標 < 10) 周圍位置 [2] = (縱坐標 - 1) × 11 + 橫坐標 + 2 .如果真結(jié)束 .否則 周圍位置 [2] = (縱坐標 - 1) × 11 + 橫坐標 + 1 .如果結(jié)束 .如果真結(jié)束 ' 查找左邊 .如果真 (橫坐標 > 0) 周圍位置 [3] = 縱坐標 × 11 + 橫坐標 .如果真結(jié)束 ' 查找右邊 .如果真 (橫坐標 < 10) 周圍位置 [4] = 縱坐標 × 11 + 橫坐標 + 2 .如果真結(jié)束 ' 查找左下角 .如果真 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) 周圍位置 [5] = (縱坐標 + 1) × 11 + 橫坐標 + 1 .否則 .如果真 (橫坐標 > 0) 周圍位置 [5] = (縱坐標 + 1) × 11 + 橫坐標 .如果真結(jié)束 .如果結(jié)束 .如果真結(jié)束 ' 查找右下角 .如果真 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) .如果真 (橫坐標 < 10) 周圍位置 [6] = (縱坐標 + 1) × 11 + 橫坐標 + 2 .如果真結(jié)束 .否則 周圍位置 [6] = (縱坐標 + 1) × 11 + 橫坐標 + 1 .如果結(jié)束 .如果真結(jié)束 ' 設置周圍步數(shù) .計次循環(huán)首 (6, 計次變量) .如果真 (周圍位置 [計次變量] > 0) .如果 (圓點狀態(tài) [周圍位置 [計次變量]] = 0) .如果 (圓點步數(shù) [周圍位置 [計次變量]] > 圓點步數(shù) [當前位置] + 1) 圓點步數(shù) [周圍位置 [計次變量]] = 圓點步數(shù) [當前位置] + 1 .否則 周圍位置 [計次變量] = 0 .如果結(jié)束 .否則 圓點步數(shù) [周圍位置 [計次變量]] = -1 周圍位置 [計次變量] = 0 .如果結(jié)束 .如果真結(jié)束 .計次循環(huán)尾 () ' 遞歸調(diào)用 .計次循環(huán)首 (6, 計次變量) .如果真 (周圍位置 [計次變量] > 0) 計算步數(shù) (周圍位置 [計次變量]) .如果真結(jié)束 .計次循環(huán)尾 () .子程序 檢查狀態(tài) .局部變量 橫坐標, 整數(shù)型 .局部變量 縱坐標, 整數(shù)型 .局部變量 位置序號, 整數(shù)型 .局部變量 缺口數(shù)量, 整數(shù)型 .局部變量 圍墻數(shù)量, 整數(shù)型 .局部變量 計次變量, 整數(shù)型 縱坐標 = (貓位置 - 1) \ 11 橫坐標 = 貓位置 - 縱坐標 × 11 - 1 ' 查找左上角 .如果 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) 位置序號 = (縱坐標 - 1) × 11 + 橫坐標 + 1 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 .如果 (橫坐標 > 0) 位置序號 = (縱坐標 - 1) × 11 + 橫坐標 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 .如果結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 ' 查找右上角 .如果 (縱坐標 > 0) .如果 (縱坐標 % 2 = 1) .如果 (橫坐標 < 10) 位置序號 = (縱坐標 - 1) × 11 + 橫坐標 + 2 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 .否則 位置序號 = (縱坐標 - 1) × 11 + 橫坐標 + 1 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .如果結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 ' 查找左邊 .如果 (橫坐標 > 0) 位置序號 = 縱坐標 × 11 + 橫坐標 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 ' 查找右邊 .如果 (橫坐標 < 10) 位置序號 = 縱坐標 × 11 + 橫坐標 + 2 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 ' 查找左下角 .如果 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) 位置序號 = (縱坐標 + 1) × 11 + 橫坐標 + 1 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 .如果 (橫坐標 > 0) 位置序號 = (縱坐標 + 1) × 11 + 橫坐標 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 .如果結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 ' 查找右下角 .如果 (縱坐標 < 10) .如果 (縱坐標 % 2 = 1) .如果 (橫坐標 < 10) 位置序號 = (縱坐標 + 1) × 11 + 橫坐標 + 2 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 .否則 位置序號 = (縱坐標 + 1) × 11 + 橫坐標 + 1 .如果真 (圓點狀態(tài) [位置序號] > 0) 圍墻數(shù)量 = 圍墻數(shù)量 + 1 .如果真結(jié)束 .如果結(jié)束 .否則 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果結(jié)束 .如果真 (缺口數(shù)量 > 0) 信息框 (“貓?zhí)优芰耍 ? #信息圖標, “游戲結(jié)束”) 游戲狀態(tài) = 2 返回 () .如果真結(jié)束 .如果真 (圍墻數(shù)量 > 5) .計次循環(huán)首 (121, 計次變量) .如果真 (圓點狀態(tài) [計次變量] = 1) 缺口數(shù)量 = 缺口數(shù)量 + 1 .如果真結(jié)束 .計次循環(huán)尾 () 信息框 (“貓被圍住了!一共用了” + 到文本 (缺口數(shù)量) + “步。”, #信息圖標, “游戲結(jié)束”) 游戲狀態(tài) = 2 返回 () .如果真結(jié)束 .子程序 __啟動窗口_創(chuàng)建完畢 _啟動窗口.寬度 = _啟動窗口.寬度 + 544 - _啟動窗口.取用戶區(qū)寬度 () _啟動窗口.高度 = _啟動窗口.高度 + 440 - _啟動窗口.取用戶區(qū)高度 () .子程序 _菜單開始游戲_被選擇 新建游戲 ()
運行結(jié)果:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
易語言使用變量循環(huán)首命令顯示0到50之間所有偶數(shù)的代碼
今天小編就為大家分享一篇關于易語言使用變量循環(huán)首命令顯示0到50之間所有偶數(shù)的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-11-11