易语言用画板制作围猫游戏的源码

时间:2021-05-19

DLL命令表

.版本 2.DLL命令 系统关于对话框, , , "ShellAboutA" .参数 窗口句柄, 整数型 .参数 应用程序标题, 文本型 .参数 其他信息, 文本型 .参数 图标句柄, 整数型

图片资源表

.版本 2.图片 圆点白色.图片 圆点猫.图片 圆点墙.图片 圆点叉

围猫游戏

.版本 2.程序集 窗口程序集_启动窗口.程序集变量 圆点状态, 整数型, , "121", 0空白1围墙2陷阱.程序集变量 猫位置, 整数型.程序集变量 游戏状态, 整数型, , , 0未开始1正在游戏2游戏结束.程序集变量 移动路径, 整数型, , "0", 猫的逃跑路径.程序集变量 圆点步数, 整数型, , "121", 计算逃跑路径时使用,猫到每一点位置的距离.子程序 新建游戏.局部变量 横向计次, 整数型.局部变量 纵向计次, 整数型.局部变量 位置顶边, 整数型.局部变量 位置左边, 整数型.局部变量 临时整数, 整数型.局部变量 计次变量, 整数型.局部变量 当前位置, 整数型' 重置游戏状态.计次循环首 (121, 临时整数) 圆点状态 [临时整数] = 0.计次循环尾 ()游戏状态 = 1猫位置 = 61清除数组 (移动路径)' 画出背景临时整数 = 载入图片 (#圆点白色).计次循环首 (11, 纵向计次) .计次循环首 (11, 横向计次) 位置左边 = (横向计次 - 1) × 48 .如果真 (纵向计次 % 2 = 0) 位置左边 = 位置左边 + 24 .如果真结束 位置顶边 = (纵向计次 - 1) × 40 画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128)) .计次循环尾 ().计次循环尾 ()卸载图片 (临时整数)' 画出猫临时整数 = 载入图片 (#圆点猫)纵向计次 = (猫位置 - 1) \ 11横向计次 = 猫位置 - 纵向计次 × 11位置左边 = (横向计次 - 1) × 48.如果真 (纵向计次 % 2 = 1) 位置左边 = 位置左边 + 24.如果真结束位置顶边 = 纵向计次 × 40画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128))卸载图片 (临时整数)' 画出随机9个×临时整数 = 载入图片 (#圆点叉).判断循环首 (计次变量 < 9) 置随机数种子 () 当前位置 = 取随机数 (1, 121) .如果真 (当前位置 ≠ 猫位置 且 圆点状态 [当前位置] = 0) 计次变量 = 计次变量 + 1 圆点状态 [当前位置] = 2 纵向计次 = (当前位置 - 1) \ 11 横向计次 = 当前位置 - 纵向计次 × 11 位置左边 = (横向计次 - 1) × 48 .如果真 (纵向计次 % 2 = 1) 位置左边 = 位置左边 + 24 .如果真结束 位置顶边 = 纵向计次 × 40 画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128)) .如果真结束.判断循环尾 ()卸载图片 (临时整数).子程序 _画板1_鼠标左键被按下, 逻辑型.参数 横向位置, 整数型.参数 纵向位置, 整数型.参数 功能键状态, 整数型.局部变量 横坐标, 整数型.局部变量 纵坐标, 整数型.局部变量 临时整数, 整数型.局部变量 位置顶边, 整数型.局部变量 位置左边, 整数型.局部变量 位置序号, 整数型.如果真 (游戏状态 ≠ 1) 返回 ().如果真结束.如果真 (画板1.取点 (横向位置, 纵向位置) = #灰色) 返回 ().如果真结束纵坐标 = 纵向位置 \ 40.如果 (纵坐标 % 2 = 1) 横坐标 = (横向位置 + 24) \ 48 - 1.否则 横坐标 = 横向位置 \ 48.如果结束' 计算点击序号位置序号 = 横坐标 + 纵坐标 × 11 + 1' 判断是否可以围墙.如果真 (位置序号 = 猫位置) 返回 ().如果真结束.如果真 (圆点状态 [位置序号] > 0) 返回 ().如果真结束' 画出围墙临时整数 = 载入图片 (#圆点墙)位置左边 = 横坐标 × 48.如果真 (纵坐标 % 2 = 1) 位置左边 = 位置左边 + 24.如果真结束位置顶边 = 纵坐标 × 40画板1.画图片 (临时整数, 位置左边, 位置顶边, , , )卸载图片 (临时整数)' 修改位置状态圆点状态 [位置序号] = 1' 移动猫移动猫 ()' 检查游戏状态检查状态 ().子程序 移动猫.局部变量 横坐标, 整数型.局部变量 纵坐标, 整数型.局部变量 位置左边, 整数型.局部变量 位置顶边, 整数型.局部变量 临时整数, 整数型' 寻找逃跑路径寻找路径 ()' 移动路径.如果真 (取数组成员数 (移动路径) > 1 且 游戏状态 = 1) ' 删除猫 临时整数 = 载入图片 (#圆点白色) 纵坐标 = (猫位置 - 1) \ 11 横坐标 = 猫位置 - 纵坐标 × 11 位置左边 = (横坐标 - 1) × 48 .如果真 (纵坐标 % 2 = 1) 位置左边 = 位置左边 + 24 .如果真结束 位置顶边 = 纵坐标 × 40 画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128)) 卸载图片 (临时整数) ' 移动猫位置 猫位置 = 移动路径 [2] 删除成员 (移动路径, 1, ) ' 画出猫 临时整数 = 载入图片 (#圆点猫) 纵坐标 = (猫位置 - 1) \ 11 横坐标 = 猫位置 - 纵坐标 × 11 位置左边 = (横坐标 - 1) × 48 .如果真 (纵坐标 % 2 = 1) 位置左边 = 位置左边 + 24 .如果真结束 位置顶边 = 纵坐标 × 40 画板1.画图片 (临时整数, 位置左边, 位置顶边, , , -取颜色值 (128, 128, 128)) 卸载图片 (临时整数).如果真结束.子程序 检查路径, , , 无用.局部变量 计次变量, 整数型.局部变量 是否可用, 逻辑型.如果 (取数组成员数 (移动路径) = 0) 寻找路径 ().否则 ' 判断现有路径是否还可用 是否可用 = 真 .计次循环首 (取数组成员数 (移动路径), 计次变量) .如果真 (圆点状态 [移动路径 [计次变量]] > 0) 是否可用 = 假 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (是否可用 = 假) 寻找路径 () .如果真结束.如果结束.子程序 寻找路径.局部变量 当前路径, 整数型, , "0".局部变量 最短路径, 整数型, , "0".局部变量 边缘位置, 整数型, , "40".局部变量 计次变量, 整数型.局部变量 是否完成, 逻辑型.局部变量 临时文本, 文本型.局部变量 出口位置, 整数型清除数组 (移动路径)' 计算边缘位置.计次循环首 (11, 计次变量) 边缘位置 [计次变量] = 计次变量.计次循环尾 ().计次循环首 (9, 计次变量) 边缘位置 [计次变量 + 11] = 计次变量 × 11 + 1.计次循环尾 ().计次循环首 (9, 计次变量) 边缘位置 [计次变量 + 20] = (计次变量 + 1) × 11.计次循环尾 ().计次循环首 (11, 计次变量) 边缘位置 [计次变量 + 29] = 计次变量 + 110.计次循环尾 ()' 重置步数.计次循环首 (121, 计次变量) 圆点步数 [计次变量] = 99.计次循环尾 ()圆点步数 [猫位置] = 0' 递归计算猫位置到每个位置的步数计算步数 (猫位置)' 寻找最短的出口位置.计次循环首 (40, 计次变量) .如果真 (圆点步数 [边缘位置 [计次变量]] > 1) .如果 (出口位置 = 0) 出口位置 = 边缘位置 [计次变量] .否则 .如果真 (圆点步数 [边缘位置 [计次变量]] < 圆点步数 [出口位置]) 出口位置 = 边缘位置 [计次变量] .如果真结束 .如果结束 .如果真结束.计次循环尾 ().如果真 (出口位置 = 0) 返回 ().如果真结束' 反向递归生成移动路径加入成员 (移动路径, 出口位置)生成路径 (出口位置).子程序 生成路径.参数 当前位置, 整数型.局部变量 当前步数, 整数型.局部变量 横坐标, 整数型.局部变量 纵坐标, 整数型.局部变量 周围位置, 整数型, , "6".局部变量 下个位置, 整数型.局部变量 计次变量, 整数型当前步数 = 圆点步数 [当前位置].如果真 (当前步数 = 1) 插入成员 (移动路径, 1, 猫位置) 返回 ().如果真结束纵坐标 = (当前位置 - 1) \ 11横坐标 = 当前位置 - 纵坐标 × 11 - 1' 计算周围的位置' 查找左上角.如果真 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) 周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 + 1 .否则 .如果真 (横坐标 > 0) 周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 .如果真结束 .如果结束.如果真结束' 查找右上角.如果真 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) .如果真 (横坐标 < 10) 周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 2 .如果真结束 .否则 周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 1 .如果结束.如果真结束' 查找左边.如果真 (横坐标 > 0) 周围位置 [3] = 纵坐标 × 11 + 横坐标.如果真结束' 查找右边.如果真 (横坐标 < 10) 周围位置 [4] = 纵坐标 × 11 + 横坐标 + 2.如果真结束' 查找左下角.如果真 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) 周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 + 1 .否则 .如果真 (横坐标 > 0) 周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 .如果真结束 .如果结束.如果真结束' 查找右下角.如果真 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) .如果真 (横坐标 < 10) 周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 2 .如果真结束 .否则 周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 1 .如果结束.如果真结束' 寻找下个位置.计次循环首 (6, 计次变量) .如果真 (周围位置 [计次变量] > 0) .如果真 (圆点步数 [周围位置 [计次变量]] = 当前步数 - 1) 下个位置 = 周围位置 [计次变量] 跳出循环 () .如果真结束 .如果真结束.计次循环尾 ()' 如果找不到路径,游戏结束.如果真 (下个位置 = 0) 当前步数 = 0 .计次循环首 (121, 计次变量) .如果真 (圆点状态 [计次变量] = 1) 当前步数 = 当前步数 + 1 .如果真结束 .计次循环尾 () 信息框 (“猫被围住了!一共用了” + 到文本 (当前步数) + “步。”, #信息图标, “游戏结束”) 游戏状态 = 2 返回 ().如果真结束' 加入数组插入成员 (移动路径, 1, 下个位置)' 递归调用生成路径 (下个位置).子程序 计算步数.参数 当前位置, 整数型.局部变量 横坐标, 整数型.局部变量 纵坐标, 整数型.局部变量 周围位置, 整数型, , "6".局部变量 计次变量, 整数型纵坐标 = (当前位置 - 1) \ 11横坐标 = 当前位置 - 纵坐标 × 11 - 1' 计算周围的位置' 查找左上角.如果真 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) 周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 + 1 .否则 .如果真 (横坐标 > 0) 周围位置 [1] = (纵坐标 - 1) × 11 + 横坐标 .如果真结束 .如果结束.如果真结束' 查找右上角.如果真 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) .如果真 (横坐标 < 10) 周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 2 .如果真结束 .否则 周围位置 [2] = (纵坐标 - 1) × 11 + 横坐标 + 1 .如果结束.如果真结束' 查找左边.如果真 (横坐标 > 0) 周围位置 [3] = 纵坐标 × 11 + 横坐标.如果真结束' 查找右边.如果真 (横坐标 < 10) 周围位置 [4] = 纵坐标 × 11 + 横坐标 + 2.如果真结束' 查找左下角.如果真 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) 周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 + 1 .否则 .如果真 (横坐标 > 0) 周围位置 [5] = (纵坐标 + 1) × 11 + 横坐标 .如果真结束 .如果结束.如果真结束' 查找右下角.如果真 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) .如果真 (横坐标 < 10) 周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 2 .如果真结束 .否则 周围位置 [6] = (纵坐标 + 1) × 11 + 横坐标 + 1 .如果结束.如果真结束' 设置周围步数.计次循环首 (6, 计次变量) .如果真 (周围位置 [计次变量] > 0) .如果 (圆点状态 [周围位置 [计次变量]] = 0) .如果 (圆点步数 [周围位置 [计次变量]] > 圆点步数 [当前位置] + 1) 圆点步数 [周围位置 [计次变量]] = 圆点步数 [当前位置] + 1 .否则 周围位置 [计次变量] = 0 .如果结束 .否则 圆点步数 [周围位置 [计次变量]] = -1 周围位置 [计次变量] = 0 .如果结束 .如果真结束.计次循环尾 ()' 递归调用.计次循环首 (6, 计次变量) .如果真 (周围位置 [计次变量] > 0) 计算步数 (周围位置 [计次变量]) .如果真结束.计次循环尾 ().子程序 检查状态.局部变量 横坐标, 整数型.局部变量 纵坐标, 整数型.局部变量 位置序号, 整数型.局部变量 缺口数量, 整数型.局部变量 围墙数量, 整数型.局部变量 计次变量, 整数型纵坐标 = (猫位置 - 1) \ 11横坐标 = 猫位置 - 纵坐标 × 11 - 1' 查找左上角.如果 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) 位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 1 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 .如果 (横坐标 > 0) 位置序号 = (纵坐标 - 1) × 11 + 横坐标 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 缺口数量 = 缺口数量 + 1 .如果结束 .如果结束.否则 缺口数量 = 缺口数量 + 1.如果结束' 查找右上角.如果 (纵坐标 > 0) .如果 (纵坐标 % 2 = 1) .如果 (横坐标 < 10) 位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 2 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 缺口数量 = 缺口数量 + 1 .如果结束 .否则 位置序号 = (纵坐标 - 1) × 11 + 横坐标 + 1 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .如果结束.否则 缺口数量 = 缺口数量 + 1.如果结束' 查找左边.如果 (横坐标 > 0) 位置序号 = 纵坐标 × 11 + 横坐标 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束.否则 缺口数量 = 缺口数量 + 1.如果结束' 查找右边.如果 (横坐标 < 10) 位置序号 = 纵坐标 × 11 + 横坐标 + 2 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束.否则 缺口数量 = 缺口数量 + 1.如果结束' 查找左下角.如果 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) 位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 1 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 .如果 (横坐标 > 0) 位置序号 = (纵坐标 + 1) × 11 + 横坐标 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 缺口数量 = 缺口数量 + 1 .如果结束 .如果结束.否则 缺口数量 = 缺口数量 + 1.如果结束' 查找右下角.如果 (纵坐标 < 10) .如果 (纵坐标 % 2 = 1) .如果 (横坐标 < 10) 位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 2 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .否则 缺口数量 = 缺口数量 + 1 .如果结束 .否则 位置序号 = (纵坐标 + 1) × 11 + 横坐标 + 1 .如果真 (圆点状态 [位置序号] > 0) 围墙数量 = 围墙数量 + 1 .如果真结束 .如果结束.否则 缺口数量 = 缺口数量 + 1.如果结束.如果真 (缺口数量 > 0) 信息框 (“猫逃跑了!”, #信息图标, “游戏结束”) 游戏状态 = 2 返回 ().如果真结束.如果真 (围墙数量 > 5) .计次循环首 (121, 计次变量) .如果真 (圆点状态 [计次变量] = 1) 缺口数量 = 缺口数量 + 1 .如果真结束 .计次循环尾 () 信息框 (“猫被围住了!一共用了” + 到文本 (缺口数量) + “步。”, #信息图标, “游戏结束”) 游戏状态 = 2 返回 ().如果真结束.子程序 __启动窗口_创建完毕_启动窗口.宽度 = _启动窗口.宽度 + 544 - _启动窗口.取用户区宽度 ()_启动窗口.高度 = _启动窗口.高度 + 440 - _启动窗口.取用户区高度 ().子程序 _菜单开始游戏_被选择新建游戏 ()

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章