我是靠谱客的博主 稳重大雁,最近开发中收集的这篇文章主要介绍易语言用画板制作围猫游戏的源码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 - _启动窗口.取用户区高度 ()
.子程序 _菜单开始游戏_被选择
新建游戏 ()

运行结果:

总结

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

最后

以上就是稳重大雁为你收集整理的易语言用画板制作围猫游戏的源码的全部内容,希望文章能够帮你解决易语言用画板制作围猫游戏的源码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(100)

评论列表共有 0 条评论

立即
投稿
返回
顶部