子程序 汉诺塔盘子运动
.参数 盘子数,整数型
.参数 柱子甲,文本型
.参数 柱子乙,文本型
.参数 柱子丙,文本型
.如果 (盘子数 = 1)
' 如果只有一个盘,则直接将它从柱子一移动到柱子三
移动 (1,柱子甲,柱子丙)
.否则
' 把1 ~ n - 1个盘从柱子一移动到柱子二,用柱子三作为中转
汉诺塔盘子运动 (盘子数 - 1,柱子甲,柱子丙,柱子乙)
' 把第n个盘从柱子一移动到柱子三
移动 (盘子数,柱子甲,柱子丙)
' 把1 ~ n - 1个盘从柱子二移动到柱子三,用柱子一作为中转
汉诺塔盘子运动 (盘子数 - 1,柱子乙,柱子甲,柱子丙)
.如果结束
.子程序 移动
.参数 盘子号,整数型
.参数 甲柱子,文本型
.参数 乙柱子,文本型
路径 = 路径 + “步骤” + 到文本 (步骤) + “:” + “把” + 到文本 (盘子号) + “号圆盘从柱子 ” + 甲柱子 + “ 移动到” + 乙柱子 + “上 ” + #换行符
步骤 = 步骤 + 1
.子程序 _计算图形按钮_被单击
.局部变量 盘子总数,整数型
.局部变量 现在柱子,文本型
.局部变量 中间柱子,文本型
.局部变量 目标柱子,文本型
' 把盘子编辑框.内容传给现在柱子
现在柱子 = 盘子编辑框.内容
' 把中间编辑框.内容传给中间柱子
中间柱子 = 中间编辑框.内容
' 把目标编辑框.内容传给目标柱子
目标柱子 = 目标编辑框.内容
.如果真 (到数值 (现在柱子) ≤ 0 或 到数值 (中间柱子) ≤ 0 或 到数值 (目标柱子) ≤ 0 或 到数值 (个数编辑框.内容) ≤ 0 或 到数值 (个数编辑框.内容) > 10)
信息框 (“柱子或圆盘数量只能是大于0小于10的数字!”,#错误图标,“出现错误了:”)
返回
.如果真结束
盘子总数 = 到数值 (个数编辑框.内容)
结果编辑框.内容 = “”
路径 = “”
' 首次调用汉诺塔盘子运动程序
汉诺塔盘子运动 (盘子总数,现在柱子,中间柱子,目标柱子)
结果编辑框.内容 = 路径
步骤 = 1
那发什么?
看天书一样