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

news/2024/11/26 10:04:31/

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 - _启动窗口.取用户区高度 ()

.子程序 _菜单开始游戏_被选择

新建游戏 ()

运行结果:

e5db1a885a32e16437b7baf23122b725.png

总结

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


http://www.ppmy.cn/news/307377.html

相关文章

html5 游戏 圈 猫,HTML5捉猫游戏

有趣的HTML小游戏 由Phaser 3支持的HTML5游戏“捉猫” 小游戏 本站下载: [b2_file link"https://cdn.getimg.net/npc/2019/github/phaser-catch-the-cat-t20191127.zip" name"phaser-catch-the-cat-t20191127.zip" pass"" code"…

在matlab中玩《围小猫》是种什么体验?【附源代码】

《围小猫》是ganlvtech根据gamedesign上的一款小游戏Chat Noir改写的Javascript版本,相关源代码公布已在ganlvtech的GitHub账号上公布。 《围小猫》的游戏规则如下: 1、点击小圆点,围住小猫; 2、你点击一次,小猫走一次…

围住一只猫猫需要几步?【多猫预警】

时间过得真快,一转眼已经是大年初六啦,大家是不是还在尽情享受假期呢?假期当然少不了游戏,在这最后的慵懒假日,不如让小编来带你玩个小游戏吧!在这个小游戏中,轻轻点击就可以围住可爱的猫猫&…

操作系统进程通信

有些合作进程之间需要交换一定数量的信息,信息量可多可少。虽然信号量机制作为同步工具卓有成效,但作为通信工具不够理想,因为其效率甚低,因此称为低级通信方式,而高级通信方式将以较高的效率传送大批数据。 高级进程通…

消费机 mysql,中控消费机软件常见问题|中控CM20消费机教程

消费软件常见问题解答 1. 消费系统发卡密码忘记,不能发卡怎么处理。 答:1. 消费系统发卡密码写在消费软件数据库compdat表中的datmeter这个字段下。如果您没有条件打开数据库,那么请您联系我们的技术人员协助您处理。 2. 消费系统中,使用过的卡号,可以继续使用么。 答: 消…

nfc读取卡片内容apk_加密门禁卡装入NFC手机

在小区门禁被物业公司强制升级后,家里的3张门禁卡、手机复制的门禁卡、小米手环4复制的门禁卡,统统不能使用了。以前方便地使用手机刷开门禁的方式不能使用了。 起初以为是物业公司只是更换了门禁控制机,要把门卡重新授权下而已。当拿到物业公司给重新授权后的门禁卡后,再次…

Arduino 卡片10舵机初动

1、硬件部分 舵机是一种电机,它使用一个反馈系统来控制电机的位置。可以很好掌握电机角度。大多数舵机是可以最大旋转180的。也有一些能转更大角度,甚至360。舵机比较多的用于对角度有要求的场合,比如摄像头,智能小车前置探测器&…

P、V操作经典问题

1.设有一台计算机,有两条I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上打印。 【解】 (0)分析题意,画出草图&am…