Browse Source

v1.0

master v1.0
Dnomd343 4 years ago
parent
commit
a585a57969
  1. 839
      Classic_Cases.txt
  2. 314
      Form_Classic_Cases.frm
  3. 490
      Form_Game.frm
  4. 5
      HRD_Game.vbp
  5. 3
      HRD_Game.vbw

839
Classic_Cases.txt

@ -0,0 +1,839 @@
[Cases]
title=华容道经典布局40种
tip=来自华容道吧,链接:https://tieba.baidu.com/p/1787924865
1A9BF0C 横刀立马
1ADEF80 指挥若定
10AAF7C 将拥曹营
1AFF980 齐头并进
1FA6F80 兵分三路
1BE68CC 雨声淅沥
1FFAA10 左右布兵
1FAAF10 桃花园中
1BEAF10 一路进军
1BE6E30 一路顺风
1BE7AC0 围而不歼
1FF12A8 捷足先登
1BDF980 插翅难飞
1AE3CD4 守口如瓶1
1FA8CD4 守口如瓶2
1BE670C 双将挡路
1A5E3CC 横马当关
1ADF710 层层设防1
1FA7710 层层设防2
1EE7710 兵挡将阻
1FFA510 堵塞要道
1A5DF0C 瓮中之鳖
1ADD70C 层峦叠嶂
1BD570C 水泄不通
1FF8454 四路进兵
1BF7510 入地无门
1FF5510 勇闯五关
5BEE90C 四面楚歌
2F5543C 前呼后拥
1FF9A80 兵临曹营
55ADF0C 五将逼宫
06EBF10 前挡后阻
EEADF40 近在咫尺
1AAEF0C 走投无路
1A5DF0C 小燕出巢
255CECC 比翼横空
0ED570C 夹道藏兵
0A7EBC0 屯兵东路
05A7F0C 四将连关
4FEA134 峰回路转
[Cases]
title=华容道常见布局图
tip=来自华容道吧,链接:https://tieba.baidu.com/p/5878577210
0E31E74 阿谀逢迎
5FEB510 暗渡陈仓
1BB670C 八阵书图
28DE734 百步穿杨
C2ACFD4 百步歧形
EAEC3D4 百花盛开
99BC3D4 背水列阵
255CECC 比翼横空
0839BBC 别无选择
A3CE7A4 冰心玉壶
24B3F54 兵不厌走
1EE7710 兵挡将阻
C72DF14 兵分二路
1FA6F80 兵分三路
9BEF814 兵据曹营
1FF9A80 兵临曹营
0EAF930 兵随将转
0FF5510 兵威将广
80A6BFC 不惑之后
4FFA680 不惑之前
4F8E94C 不谋而合
0E8E71C 步步高升
1F89BD0 步履维艰
CACC6F4 曹操划圈
0E8F19C 曹冲称象
43EA39C 侧面白虎
1FA7710 层层设防
1ADD70C 层峦叠嶂
5DEB0D4 插翅难飞
1EF6C90 陈兵西陲
E28F9F4 触角优解
26DFAC0 触角右优
20557FC 春风拂面
4697CF0 大凤三胞
AA07EBC 大乔三九
43BBD84 单身小兵
953CADC 倒扣杯中
6D2B9F0 倒影古稀
9DD7E04 倒影胡马
06DB70C 倒影解优1
06FE90C 倒影解优2
07BEE80 倒影同步
C836FB4 倒影优解
26239FC 倒影之泉
51ECA7C 倒影之实
9AF631C 倒影之像
CC3D9B4 倒影之优
183DA7C 春风旋升
183DAF4 地火明夷
1CCF6A8 谦之有成
10FF694 地天泰和
183FE94 地泽临门
693FA70 颠倒形神
59ED4F0 电阻优解
0CFB644 独辟蹊径
1FFA510 堵塞要道
9583FD4 遁地无形
033A79C 二横定式
033B7A4 二横固形
1EDAF10 二横最难
1EE9F10 二横最易
9FF1294 砝码天平
9F560F4 分兵作战
0FA76C0 分久必合
2055FF4 风火家人
1CC69F4 风雷电闪
1CC55F4 风天小畜
181F5F4 风泽中孚
4FEA134 峰回路转
1F3859C 冯京马凉
8B8FA70 凤凰倒影
472AEF0 凤之悠鸣
10AFDD4 高处不寒
0BE7710 高厦101
00EBF54 高位分歧
45A7FC0 高枕无忧
1AF744C 孤雁南飞
8FAF214 古堡藏龙
AECDAD0 古稀倒影
0A33A7C 归途不一
5DEAF80 海阔天空
269C37C 海晏河清
96FE390 行者一半
E7D7834 合兵一处
02FED84 合久必分
1A9BF0C 横刀立马
0F5CE44 横行之将
0E9CD4C 路横骆驼
1A5E3CC 横马当关
1A53C7C 鸿门宴Ⅱ
548F5DC 胡马窥江
9937EC4 虎踪龙迹
5B4F1D4 互不相让
2B392BC 互生优解
10A57FC 花车易驾
67DF680 换离为兑
1CC5FA4 火山之旅
C8CBBB4 火烧连营
1CC5F54 火天大有
181FF54 火泽交际
10F99DC 机甲战车
22FD6D0 寄人篱下
8EBEB04 佳人梳妆1
406EEBC 佳人梳妆2
0ED570C 夹道藏兵
28EA3F4 江村夕照
08FD9D0 将士一心
10AAF7C 将拥曹营
55A13FC 奖杯闪闪
28B8F9C 节节高升
1FF12A8 捷足先登
4F3A49C 进退维谷
8E8FB14 进退自如
EAFB740 近在眉宇
EAFFA40 近在一步
E2FAF14 近在一线
EEADF40 近在咫尺
5DEB710 井底之蛙
10F99F4 居中斡旋
6AFF980 鞠躬尽瘁
02FD934 开到荼蘼
5DAB4F0 孔明羽扇
59EBB30 诸葛羽扇
59EAF30 孔明之扇
1CC5E74 孔融让梨
0F587D0 困兽犹斗
58EC5F4 困于赤绂
587FB50 狼影重重
10FAA7C 亢龙有悔
1829F7C 雷山小过
182BD7C 雷水优解
1A4FD4C 离而不坎
EABDF40 列队欢送
C2A3FD4 列队相送
672ED70 麟之傲骨
083DFA4 流水行云
83C7DA4 龙凤三胞
5BEA7C0 陆绩怀橘
1EA7EC0 乱石崩云
5B7E710 轮回江山
03FB590 马凉冯京
67DE170 马首是瞻
8AFAB30 没落兵种
1AEBF10 面具遮天
1B9E38C 木牛流马
CE8FC54 能上能下
0227EDC 逆时风车
9C35ADC 牛气冲天
582F5DC 披甲持螯
EDECA34 貔貅倒影
0FF42A8 匹马嘶风
5BEB60C 飘在空中
1C87BE4 平行优解
AA22BFC 七步成诗
8ABD07C 七上八下1
47C1ABC 七上八下2
1AFF980 齐头并进
2EDB6C0 歧路亡羊
A739B70 麒之侠义
25683FC 气势汹汹
06EBF10 前挡后阻
A2ECBD4 前后夹攻
2F5543C 前呼后拥
10B7DB4 桥横铁索
00EFDA4 穷途末路
13E4B5C 琼瑶敲碎
2ABF9C0 曲水流觞
0337A74 圈套之中
EBF98C4 泉之倒影
133FAA4 扰敌之策
08B39BC 人形优解
C32EBD4 日月同辉
1BF7510 入地无门
0ABCF14 三顾茅庐
033B59C 三横定法
033B5B4 三横定式
1FA7710 三横最难
1FFA510 三横最易
0A5DF0C 三军联防
1FA54F0 三羊集会
1FAF510 三羊聚义
1FF9910 三羊开泰
02FD3A4 三一奇阵
181FAF4 山雷不动
1A7FAC0 山穷水尽
181FA7C 山水迷蒙
2057DF4 山天大畜
8E0D7D4 闪展腾挪
6A7B4F0 扇壶一体
1BDED10 上屋抽梯
1CC557C 上下镜像
1298BFC 上下求索
1EF6D10 设防层层
AD9F870 射戟辕门
2557FC0 身先士卒
24BEBB0 神倒形颠
05BE0DC 神似形近
057C93C 神在内涵
02CED9C 生机盎然
050FAEC 似远实近
2ACE8DC 手形优解
1AE3CD4 守关如铁
1FA8CD4 守口如瓶
22E98FC 首居中道
1CC7EA8 首尾互换
1EAFC14 殊途共归
6F78354 殊途同归
1B9D0F4 殊途同心
2ACC9BC 殊途携手
4CEE934 数字系列4
1FB0B54 数字系列0
1F861DC 数字系列5
1F2D274 数字系列3
1F294DC 数字系列2
43CE9B4 数字系列1
ABE3B14 数字系列8
2B1F1B4 数字系列9
28DB71C 数字系列4_
0FE6384 数字系列7
0B3D85C 数字系列6
07ACD70 双兵争锋
1BE670C 双将挡路
460BEBC 双头俩尾
9BA0FD4 水浒聚义
1BD570C 水泄不通
2FE9B80 睡狮苏醒
02DB8DC 顺时风车
8F8FA14 四兵同心
2F6DD04 四横定法
6F5BD04 四横定式
26F4D34 四横法门
AEFC154 四横固式
AB7F540 四横妙式
1BF7510 四横最难
1FBD510 四横最易
05A7F0C 四将连关
183FD54 四路冲锋
1FF8454 四路进兵
9137ADC 四面八方
93C9BD4 四面楚歌
5BEE90C 四面埋伏
55FB0D4 逃之夭夭
1FAAF10 桃花园中
181F7D4 天雷无妄
1CC56DC 天山逐鹿
181F57C 天水之讼
C22EFB4 同步倒影
0B36ACC 同步堂弟
0B26BCC 同步堂兄
4C2A7F4 同步异位
1FA0BE4 头尾互换
0A7EBC0 屯兵东路
1BE7AC0 围而不歼
1A5DF0C 瓮中之鳖
25734F4 无图无功
0F57470 五横最难
55ADF0C 五将逼宫
1ABC63C 勿入歧途
92E8EF4 误失荆州
1CF9CA4 仙人推磨
9A23FD4 相看不厌
0E09DF4 小兵探路
4697FC0 小凤三胞
2067DF4 小雁孤飞
2BDF980 小鬼难缠
6BC8B5C 车驰马啸
6AFFA40 小乔三八
57BEB80 小旋风Ⅰ
5B4A2FC 小旋风Ⅱ
5DFAB80 小旋风Ⅲ
1A5DF0C 小燕出巢
1EAB0F4 新鸿门宴
9DE6F10 星罗棋布
EB8EEC4 形颠神倒
05BE70C 形近神似
AAC7ED0 形神颠倒
0C297F4 形神优解
25EEF04 形同神异
0E36A3C 胸有朝阳
27A2CDC 貅之赳赳
9E3CE94 虚无缥缈
0FE09B4 虚与委蛇
43CBD54 旭日东升
2F0B59C 旋转砝码
92BBE34 旋转让道
6DEC714 漩涡乍现
24FB89C 雪拥蓝关
457E1CC 丫形优解
02E92FC 檐浮旭日
434AFB4 阴阳颠倒
22C67DC 野马分鬃
255FC34 一代天骄
45FF244 一颠两步
8247FD4 一颠两快
957FC14 一颠三步
550F7D4 一颠三晃
9AA0F7C 一夫当关
1BC1BAC 一横定式
0F43AAC 一横法门
0EC1EAC 一横固式
1BEEB04 一横妙式
1FAF980 一横最简
1B9AF0C 一横最难
1FF12A8 一横最易
93C5ADC 一壶花酒
1BEAF10 一路进军
1BE6E30 一路顺风
0FB7610 一字长蛇
43FA6D0 以退为进
1A5BF0C 以逸待劳
26E4BCC 义放曹操
67F8714 异地同心
4CA27F4 异位同步
8DBE834 阴阳颠倒
1FF5510 勇闯五关
1BDF980 有翅无飞
CFFA540 有去无回
0CFB514 鱼游春水
1BE68CC 雨声淅沥
12E68FC 欲罢不能
0F4798C 寓巧于拙
9DED384 辕门射戟
E6CAF34 云横秦岭
1A9DF0C 云遮雾障
1FE4874 运兵阴平
10FF5A4 泽水环山
1CCF554 银河一线
5B437D4 乍现漩涡
13BDB44 长蛇之阵
CEBAF04 整齐排列
1ADEF80 指挥若定
5B7B88C 众志成城
2F216DC 重链优解
1EFD680 重拳出击
1ADF710 重重设防
18DA8FC 诸葛八阵
1CC5AF4 自成镜像
62FE970 自动报时
4F2E9C4 字母系列N
2FB4AC4 字母系列C
6CF8A5C 字母系列U
4CEE9C4 字母系列H
6EF89C4 字母系列R
1FB16D0 字母系列P
6BFA710 字母系列T
2BBCB50 字母系列F
1BC4AF4 字母系列I
0CCDE64 字母系列L
1AAEF0C 走投无路
0AF7E80 左兵右将
1FFAA10 左右布兵
07CF2A8 左右逢源
[Cases]
title=发芽网布局图
tip=来自发芽网,原有412关,去除非标准布局后为352关
1A9BF0C 横刀立马
1ADEF80 指挥若定
10AAF7C 将拥曹营
1AFF980 齐头并进
1FA6F80 兵分三路
1BE68CC 雨声淅沥
1FFAA10 左右布兵
1FAAF10 桃花园中
1BEAF10 一路进军
1BE6E30 一路顺风
1BE7AC0 围而不歼
1FF12A8 捷足先登
1BDF980 插翅难飞
1AE3CD4 守口如瓶1
1FA8CD4 守口如瓶2
1BE670C 双将挡路
1A5E3CC 横马当关
1ADF710 层层设防1
1FA7710 层层设防2
1EE7710 兵挡将阻
1FFA510 堵塞要道
1A5DF0C 瓮中之鳖
1ADD70C 层峦叠嶂
1BD570C 水泄不通
1FF8454 四路进兵
1BF7510 入地无门
1FF5510 勇闯五关
1B9AF0C 一横最难
1FF12A8 一横最易1
1FAF980 一横最易2
1EDAF10 二横最难
1EE9F10 二横最易
1FA7710 三横最难
1FFA510 三横最易
1BF7510 四横最难
1FBD510 四横最易
1EA7EC0 乱石崩云
99BC3D4 背水列阵
5BEE90C 四面楚歌
2F5543C 前呼后拥
1FF9A80 兵临曹营
55ADF0C 五将逼宫
1A9DF0C 云遮雾障
0A5DF0C 三军联防
06EBF10 前挡后阻
EEADF40 近在咫尺
1AAEF0C 走投无路
1A5DF0C 小燕出巢
255CECC 比翼横空
0ED570C 夹道藏兵
0A7EBC0 屯兵东路
05A7F0C 四将连关
EAFB740 近在咫尺2
4FEA134 峰回路转
5DEB710 井底之蛙
5DEB0D4 插翅难飞2
050FAEC 似远实近
E2FAF14 近在咫尺3
0F57470 五横最难
0E09DF4 小兵探路
A2ECBD4 前后夹攻
8AFAB30 单兵种的没落
12E68FC 欲罢不能
0F5CE44 横行之将
EABDF40 列队欢送
C2A3FD4 列队欢送2
EAEC3D4 百花盛开
96FE390 行百里者半九十
6BC8B5C 小汽车
43BBD84 单身的小兵
43FA6D0 以退为进
13BDB44 一字长蛇阵
0FB7610 一字长蛇阵2
133FAA4 扰敌之策
0AF7E80 左兵右将
9DE6F10 星罗棋布
0E31E74 虚与委蛇
0FE09B4 虚与委蛇2
1EF6D10 层层设防3
55A13FC 奖杯
25683FC 气势汹汹
EAFFA40 近在咫尺4
1FB0B54 数字系列0
43CE9B4 数字系列1
1F294DC 数字系列2
1F2D274 数字系列3
28DB71C 数字系列4
1F861DC 数字系列5
0B3D85C 数字系列6
0FE6384 数字系列7
ABE3B14 数字系列8
2B1F1B4 数字系列9
00EFDA4 穷途末路
9FF1294 砝码
13E4B5C 琼瑶敲碎
03FB590 冯京马凉
1F3859C 冯京马凉2
10A57FC 花车
1A4FD4C 离而不坎
1AF744C 孤雁南飞
0BE7710 高厦一零一
5FEB510 暗渡陈仓
58EC5F4 困于赤绂
10B7DB4 大渡桥橫铁索寒
0CFB514 鱼游春水
8FAF214 古堡藏龙
2EDB6C0 歧路亡羊
1EF6C90 陈兵西陲
9BA0FD4 水浒聚义
9E3CE94 山在虚无缥缈间
9A23FD4 相看两不厌
5B4F1D4 互不相让
548F5DC 胡马窥江
67DE170 马首是瞻
67F8714 异地同心
183FD54 四路进兵2
4CEE934 数字系列4-2
9137ADC 四面八方
9C35ADC 牛气冲天
1EFD680 拳头
0FF42A8 匹马嘶风
20557FC 伏羲八卦 风风巽
10FF694 伏羲八卦 地天泰
181F57C 伏羲八卦 天水讼
1CC5F54 伏羲八卦 火天大有
181F7D4 伏羲八卦 天雷无妄
1CC56DC 伏羲八卦 天山遯
2057DF4 伏羲八卦 山天大畜
1CC55F4 伏羲八卦 风天小畜
1CCF554 伏羲八卦 泽天夬
183DAF4 伏羲八卦 地火明夷
10FAA7C 伏羲八卦 雷地豫
1CCF6A8 伏羲八卦 地山谦2
183DA7C 伏羲八卦 地风升
183FE94 伏羲八卦 地泽临
182BD7C 伏羲八卦 雷水解
181FA7C 伏羲八卦 山水蒙
1CC5FA4 伏羲八卦 火山旅
2055FF4 伏羲八卦 风火家人
181FF54 伏羲八卦 火泽睽
1829F7C 伏羲八卦 雷山小过
181FAF4 伏羲八卦 山雷颐
1CC69F4 伏羲八卦 风雷益
10FF5A4 伏羲八卦 泽山咸
181F5F4 伏羲八卦 风泽中孚
8DBE834 颠倒96(阴)
434AFB4 颠倒96(阳)
0CFB644 独辟蹊径
1FF9910 三羊开泰1
1FAF510 三羊开泰2
1FA54F0 三羊开泰3
02DB8DC 顺时风车
0227EDC 逆时风车
1BEEB04 一横定式A
1BC1BAC 一橫定式B
0EC1EAC 一橫定式C
0F43AAC 一橫定式D
033A79C 二橫定式A
033B7A4 二橫定式B
033B59C 三橫定式A
033B5B4 三橫定式B
AEFC154 四橫定式A
2F6DD04 四橫定式B
26F4D34 四橫定式C
AB7F540 四橫定式D
6F5BD04 四橫定式E
2ACC9BC 殊途同归
1ABC63C 勿入歧途
9AA0F7C 一夫当关
28B8F9C 节节高升
67DF680 换离为兑
0F4798C 寓巧于拙
5B7E710 轮回
0A33A7C 殊途同归I
1EAFC14 殊途同归II
1B9D0F4 殊途同归III
6F78354 殊途同归IV
C2ACFD4 百步歧形
8F8FA14 四兵同心
02CED9C 生机盎然
5DEAF80 退一步海阔天空
10AFDD4 高处不胜寒
0E8E71C 步步高3
51ECA7C 水中倒影之实
9AF631C 水中倒影之像
4F3A49C 进退维谷
4F8E94C 不谋而合
07CF2A8 左右逢源
8E8FB14 进退自如
28DE734 百步穿杨
8ABD07C 七上八下(上)
47C1ABC 七上八下(下)
0839BBC 别无选择
6AFFA40 大乔小乔(上)
AA07EBC 大乔小乔(下)
92BBE34 旋转让道
0EAF930 兵随将转
1EAB0F4 新鸿门宴Ⅰ
1A53C7C 新鸿门宴Ⅱ
0ABCF14 三顾茅庐
AA22BFC 7系列 七步成诗
CEBAF04 7系列 整齐排列
953CADC 7系列 倒扣杯中
5BEB60C 7系列 飘在空中
93C9BD4 7系列 四面楚歌
1F89BD0 7系列 步履维艰
62FE970 7系列 自动报时
1CC557C 上下镜像
1CC7EA8 首尾互换(上)
1FA0BE4 首尾互换(下)
5B7B88C 众志成城
1CC5E74 孔融让梨
1CF9CA4 仙人推磨
5BEA7C0 陆绩怀橘
0E8F19C 曹冲称象
59EBB30 孔明扇
26E4BCC 步步高之义放曹操
4CA27F4 异位同步(上)
4C2A7F4 异位同步(下)
1CC5AF4 自成镜像
59EAF30 孔明扇2
92E8EF4 大意失荆州
6AFF980 鞠躬尽瘁
1B9E38C 木牛流马
18DA8FC 诸葛八阵
1298BFC 上下求索
93C5ADC 花间一壶酒
4FFA680 不惑之前
80A6BFC 不惑之后
07ACD70 双兵争锋
00EBF54 高位分歧
05BE70C 形近神似(上)
05BE0DC 形近神似(下)
2F0B59C 旋转砝码
10F99DC 坦克
5DAB4F0 孔明扇3
255FC34 莱希
25734F4 米拉
25EEF04 形同神异
057C93C 神在内涵
1AEBF10 面具
83C7DA4 龙凤三胞(兄长)
4697CF0 龙凤三胞(大妹)
4697FC0 龙凤三胞(小妹)
2BDF980 小鬼难缠
406EEBC 佳人梳妆(佳人)
8EBEB04 佳人梳妆(镜像)
460BEBC 双头俩尾
9F560F4 分兵作战
8E0D7D4 闪展腾挪
457E1CC 丫形优解
8247FD4 一颠快两步(上)
45FF244 一颠快两步(下)
9583FD4 逃出来啦(上)
55FB0D4 逃出来啦(下)
957FC14 一颠快三步(上)
550F7D4 一颠快三步(下)
0F587D0 困兽犹斗
0C297F4 H形优解
6A7B4F0 扇壶一体(扇)
A3CE7A4 扇壶一体(壶)
08FD9D0 将士一心
08B39BC 人形优解
2ACE8DC 手形优解
06FE90C 倒影丫解(上)
C836FB4 倒影丫解(下)
06DB70C 倒影等优(上)
CC3D9B4 倒影等优(下)
07BEE80 同步倒影(上)
C22EFB4 同步倒影(下)
EBF98C4 活眼倒影(上)
26239FC 活眼倒影(下)
E28F9F4 触角优解(左)
26DFAC0 触角优解(右)
6EF89C4 字母系列A
2FB4AC4 字母系列C
2BBCB50 字母系列F
4CEE9C4 字母系列H
1BC4AF4 字母系列I
0CCDE64 字母系列L
4F2E9C4 字母系列N
1FB16D0 字母系列P
6BFA710 字母系列T
6CF8A5C 字母系列U
6D2B9F0 古稀倒影(上)
AECDAD0 古稀倒影(下)
693FA70 形神颠倒(上)
AAC7ED0 形神颠倒(下)
24BEBB0 形颠神倒(上)
EB8EEC4 形颠神倒(下)
472AEF0 凤凰倒影(凤)
8B8FA70 凤凰倒影(凰)
2B392BC 互生优解
2F216DC 重链优解
59ED4F0 电阻优解
1C87BE4 平行优解
A739B70 麒麟倒影(麒)
672ED70 麒麟倒影(麟)
E7D7834 合兵一处
C72DF14 兵分二路
EDECA34 貔貅倒影(貔)
27A2CDC 貔貅倒影(貅)
0B26BCC 同步堂亲(兄)
0B36ACC 同步堂亲(弟)
0FA76C0 分久必合
02FED84 合久必分
C32EBD4 日月同辉
CACC6F4 曹操划小圈
9937EC4 虎踪
587FB50 狼影
AD9F870 辕门射戟A
9DED384 辕门射戟B
1A5BF0C 以逸待劳
24FB89C 雪拥蓝关
E6CAF34 云横秦岭
1BB670C 八阵图
9BEF814 兵据曹营
1A7FAC0 山穷水尽
1BDED10 上屋抽梯
CFFA540 有去有回
CE8FC54 能上能下
C8CBBB4 火烧连营
2FE9B80 睡狮苏醒
43EA39C 侧面虎
0E36A3C 胸有朝阳
28EA3F4 江村夕照
2ABF9C0 曲水流觞
02E92FC 檐浮旭日
02FD3A4 三一奇阵
083DFA4 流水行云
1FE4874 运兵阴平
22C67DC 野马分鬃
22FD6D0 寄人篱下
582F5DC 披甲持螯
10F99F4 居中斡旋
02FD934 开到茶蘼
2067DF4 小孤雁
6DEC714 漩涡乍现
5B437D4 漩涡乍现2
24B3F54 兵不厌走
9DD7E04 倒影胡马
22E98FC 首居中道
5DFAB80 小旋风
57BEB80 小旋风Ⅰ
5B4A2FC 小旋风Ⅱ
2557FC0 身先士卒
0FF5510 兵威将广
45A7FC0 高枕无忧
269C37C 海晏河清
43CBD54 旭日东升2
0E9CD4C 横骆驼
0337A74 圈套
[Cases]
title=林雨霖华容道68局
tip=来自林雨霖,共68个布局
1A9BF0C 横刀立马
1A5DF0C 小燕出巢
1BD570C 水泄不通
EEADF40 近在咫尺
1FF5510 巧过五关
1ACBCD4 守口如瓶
1FA7710 层层设防1
1ADF710 层层设防2
6BFA704 三面围攻
2AF7E80 屯兵东路
1FA6F80 兵分三路
1BDF980 插翅难飞
28D877C 望风而逃
4FEA134 峰回路转
255FEC0 天罗地网
55ADF0C 五将逼宫
5BEA70C 四面楚歌
1ADEF80 指挥若定
10AAF7C 将拥曹营
1AFF980 齐头并进
1BE68CC 雨声淅沥
1FFAA10 左右布兵
1BEAF10 一路进军
1BE6E30 一路顺风
1BE7AC0 围而不歼
1FA2CD4 守口如瓶2
1BE670C 双将挡路
1A5E3CC 横马当关
1EE7710 兵挡将路
1FFA510 堵塞要道
1ADD70C 层峦叠嶂
1FF8514 四路进兵
1BF7510 入地无门
1FF9A80 兵临曹营
06EBF10 前挡后阴
0ED570C 夹道藏兵
05A7F0C 四将连关
99BC3D4 背水列阵
1A9DF0C 云遮雾障
0A5DF0C 三军联防
0ABCF14 三顾茅庐
5B7B88C 众志成城
0CF3694 独闯蹊径
1FA54F0 三羊开泰
0F4798C 寓巧於掘
5B7E710 轮回
20E977C 颠沛流离
9AA0F7C 一夫当关
1ABE4F0 勿入歧途
1B9AF0C 一横最难
1EDAF10 二横最难
1BF7510 四横最难
181FF54 伏火泽癸
1829F7C 伏雷山小过
8DBCA34 颠倒96阴
436BCB4 颠倒96阳
4F3A49C 进退维谷
9ABCE34 旋转让道
07CF2A8 左右逢源
8E8FB14 进退自如
28DE734 百步穿杨
1CF9CA4 仙人推磨
C836FB4 倒影优解
9DE6F10 星罗棋布
05BE70C 形近神似
00EBF54 高位分岐
07ACD70 双兵争锋
10FF694 高阶14
[Cases]
title=其他布局图
tip=收集较为少见的名称或布局
1ADEF80 将守角楼
1FFAA10 兵临城下
1BE670C 重重包围
1FA7710 兵将联防
1A9DF0C 横竖皆将
1FF5510 巧过五关
0ED570C 兵将连环
05A7F0C 五虎联防
0A5DF0C 交错堵道
123FD54 四路皆兵
0EFC154 四路进兵
2557FC0 将挡后路

314
Form_Classic_Cases.frm

@ -0,0 +1,314 @@
VERSION 5.00
Begin VB.Form Form_Classic_Cases
AutoRedraw = -1 'True
BorderStyle = 1 'Fixed Single
Caption = "选择华容道经典布局"
ClientHeight = 5445
ClientLeft = 45
ClientTop = 390
ClientWidth = 6990
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5445
ScaleWidth = 6990
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton Command_Confirm
Caption = "确认"
Height = 540
Left = 5480
TabIndex = 6
Top = 4780
Width = 1400
End
Begin VB.TextBox Text_Code
Alignment = 2 'Center
BeginProperty Font
Name = "微软雅黑"
Size = 15.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 570
Left = 3180
Locked = -1 'True
TabIndex = 5
Top = 4780
Width = 2175
End
Begin VB.CommandButton Command_Search
Caption = "搜索"
Height = 255
Left = 2280
TabIndex = 3
Top = 480
Width = 735
End
Begin VB.TextBox Text_Search
Height = 270
Left = 120
TabIndex = 2
Top = 480
Width = 2055
End
Begin VB.TextBox Text_Tip
Appearance = 0 'Flat
BackColor = &H8000000F&
BorderStyle = 0 'None
Height = 615
Left = 120
Locked = -1 'True
MultiLine = -1 'True
TabIndex = 4
Top = 4780
Width = 2895
End
Begin VB.ComboBox Combo_Cases
Height = 300
Left = 120
Style = 2 'Dropdown List
TabIndex = 1
Top = 120
Width = 2895
End
Begin VB.ListBox List_Cases
Height = 3840
Left = 120
TabIndex = 0
Top = 840
Width = 2895
End
End
Attribute VB_Name = "Form_Classic_Cases"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Type Case_Block
address As Integer
style As Integer
End Type
Dim tip As String
Dim Block(0 To 9) As Case_Block
Dim start_x As Integer, start_y As Integer, square_width As Integer, gap As Integer
Private Sub Form_Load()
start_x = 3200
start_y = 135
square_width = 815
gap = 75
Call Get_Cases_title
Combo_Cases.ListIndex = 0
End Sub
Private Sub Command_Confirm_Click()
change_case = True
change_case_title = Left(List_Cases.Text, Len(List_Cases.Text) - 9)
change_case_code = Text_Code
Unload Form_Classic_Cases
End Sub
Private Sub List_Cases_Click()
Dim temp As String
Text_Tip = "(" & List_Cases.ListIndex + 1 & "/" & List_Cases.ListCount & ")"
temp = List_Cases.List(List_Cases.ListIndex)
Text_Code = Mid(temp, Len(temp) - 7, 7)
Call Analyse_Code(Text_Code)
Call Output_Graph
End Sub
Private Sub Command_Search_Click()
Dim i As Integer, j As Integer, last_select As Integer
Dim temp() As String
Dim searching As Boolean
ReDim temp(0)
If Text_Search = "" Then Exit Sub
last_select = Combo_Cases.ListIndex
searching = False
If Combo_Cases.List(Combo_Cases.ListCount - 1) = "搜索结果" Then
Combo_Cases.RemoveItem Combo_Cases.ListCount - 1
searching = True
End If
For j = 0 To Combo_Cases.ListCount - 1
Combo_Cases.ListIndex = j
If Combo_Cases.Text = "搜索结果" Then Exit For
For i = 0 To List_Cases.ListCount - 1
If InStr(List_Cases.List(i), Text_Search) <> 0 Then
ReDim Preserve temp(UBound(temp) + 1)
temp(UBound(temp)) = List_Cases.List(i)
End If
Next i
Next j
List_Cases.Clear
Combo_Cases.AddItem "搜索结果"
Combo_Cases.ListIndex = Combo_Cases.ListCount - 1
Text_Tip = "共找到" & UBound(temp) & "个结果"
Text_Code = "": Cls
If UBound(temp) = 0 Then
If searching = False Then
Combo_Cases.RemoveItem Combo_Cases.ListCount - 1
Combo_Cases.ListIndex = last_select
End If
MsgBox "No Result!"
Exit Sub
End If
For i = 1 To UBound(temp)
List_Cases.AddItem temp(i)
Next i
List_Cases.ListIndex = 0
Text_Tip = "共找到" & UBound(temp) & "个结果"
End Sub
Private Sub Combo_Cases_Click()
If Not Combo_Cases.Text = "搜索结果" Then
If Combo_Cases.List(Combo_Cases.ListCount - 1) = "搜索结果" Then
Combo_Cases.RemoveItem Combo_Cases.ListCount - 1
Text_Search = ""
End If
Call Get_Cases(Combo_Cases.ListIndex)
List_Cases.ListIndex = 0
Text_Tip = tip
End If
End Sub
Private Sub Text_Search_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Call Command_Search_Click
End Sub
Private Sub Get_Cases(index As Integer)
Dim temp As String, name As String, num As Integer
num = 0
List_Cases.Clear
Open "Classic_Cases.txt" For Input As #1
Do Until EOF(1)
Line Input #1, temp
If temp = "[Cases]" Then
If num = index Then
Line Input #1, temp
Line Input #1, temp
tip = Right(temp, Len(temp) - 4)
Text_Tip = tip
reinput:
If EOF(1) = False Then
Line Input #1, temp
If temp <> "[Cases]" Then
List_Cases.AddItem Right(temp, Len(temp) - 8) & "(" & Left(temp, 7) & ")"
GoTo reinput
End If
End If
End If
num = num + 1
End If
Loop
Close #1
End Sub
Private Sub Get_Cases_title()
Dim temp As String
Open "Classic_Cases.txt" For Input As #1
Do Until EOF(1)
Line Input #1, temp
If temp = "[Cases]" Then
Line Input #1, temp
Combo_Cases.AddItem Right(temp, Len(temp) - 6)
End If
Loop
Close #1
End Sub
Private Sub Output_Graph()
Dim m, x, y As Integer
Dim width As Integer, height As Integer
Print_Block start_x, start_y, square_width * 4 + gap * 5, square_width * 5 + gap * 6, case_line_width, case_color, case_line_color
For m = 0 To 9
If Block(m).address <> 25 Then
x = (Block(m).address Mod 4) * (square_width + gap) + gap + start_x
y = Int(Block(m).address / 4) * (square_width + gap) + gap + start_y
If Block(m).style = 0 Or Block(m).style = 1 Then
width = square_width * 2 + gap
Else
width = square_width
End If
If Block(m).style = 0 Or Block(m).style = 2 Then
height = square_width * 2 + gap
Else
height = square_width
End If
Print_Block x, y, width, height, block_line_width, block_color, block_line_color
End If
Next m
End Sub
Private Sub Print_Block(print_start_x, print_start_y, print_width, print_height, print_line_width, print_color, print_line_color)
If print_width < 0 Or print_height < 0 Then Exit Sub
FillStyle = 0
DrawWidth = print_line_width
FillColor = print_color
Line (print_start_x, print_start_y)-(print_start_x + print_width, print_start_y + print_height), print_color, B
Line (print_start_x, print_start_y)-(print_start_x + print_width, print_start_y + print_height), print_line_color, B
End Sub
Private Sub Analyse_Code(Code As String)
On Error Resume Next
Dim temp(1 To 12) As Integer
Dim i, addr, style As Integer
Dim type_1, type_2, type_3 As Integer
Dim Table(0 To 19) As Integer
Dim num As Integer, b1 As Integer, b2 As Integer
Dim dat As String
For i = 1 To 6
dat = Mid(Code, i + 1, 1)
If Asc(dat) >= 48 And Asc(dat) <= 57 Then num = Int(dat)
If Asc(dat) >= 65 And Asc(dat) <= 70 Then num = Asc(dat) - 55
b1 = num Mod 4
b2 = (num - b1) / 4 Mod 4
temp(i * 2 - 1) = b2
temp(i * 2) = b1
Next i
type_1 = 0: type_2 = 0: type_3 = 5
For i = 0 To 19
Table(i) = 69
Next i
For i = 0 To 9
Block(i).address = 69
Block(i).style = 69
Next i
dat = Left(Code, 1)
If Asc(dat) >= 48 And Asc(dat) <= 57 Then num = Int(dat)
If Asc(dat) >= 65 And Asc(dat) <= 70 Then num = Asc(dat) - 55
Block(0).address = num
Block(0).style = 0
If Block(0).address > 14 Then GoTo err
Table(Block(0).address) = 0
Table(Block(0).address + 1) = 0
Table(Block(0).address + 4) = 0
Table(Block(0).address + 5) = 0
addr = 0
For i = 1 To 11
Do While Table(addr) <> 69
If addr < 19 Then
addr = addr + 1
Else
Exit Do
End If
Loop
style = temp(i)
If style = 0 Then
Table(addr) = 10
ElseIf style = 1 Then
If type_2 < 5 Then type_2 = type_2 + 1
If addr > 18 Then GoTo err
Block(type_2).style = 1
Block(type_2).address = addr
Table(addr) = type_2
Table(addr + 1) = type_2
ElseIf style = 2 Then
If type_2 < 5 Then type_2 = type_2 + 1
If addr > 15 Then GoTo err
Block(type_2).style = 2
Block(type_2).address = addr
Table(addr) = type_2
Table(addr + 4) = type_2
ElseIf style = 3 Then
If type_3 < 9 Then type_3 = type_3 + 1
Block(type_3).style = 3
Block(type_3).address = addr
Table(addr) = type_3
End If
Next i
err:
End Sub

490
Form_Game.frm

@ -2,7 +2,7 @@ VERSION 5.00
Begin VB.Form Form_Game
AutoRedraw = -1 'True
BorderStyle = 1 'Fixed Single
Caption = "HRD Game v0.1 by Dnomd343"
Caption = "HRD Game v1.0 by Dnomd343"
ClientHeight = 7305
ClientLeft = 45
ClientTop = 690
@ -14,12 +14,20 @@ Begin VB.Form Form_Game
ScaleHeight = 7305
ScaleWidth = 7290
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton Command_Select_Case
Caption = "选择经典布局"
Height = 495
Left = 5760
TabIndex = 7
Top = 1560
Width = 1335
End
Begin VB.CommandButton Command_Create_Case
Caption = "自定义布局"
Height = 495
Left = 5760
TabIndex = 6
Top = 600
Top = 960
Width = 1335
End
Begin VB.Timer Timer_Layout
@ -32,7 +40,7 @@ Begin VB.Form Form_Game
Height = 495
Left = 5760
TabIndex = 1
Top = 1200
Top = 2160
Width = 1335
End
Begin VB.Timer Timer_Get_Time
@ -108,8 +116,8 @@ Private Type Case_Block
style As Integer
End Type
Private Type Block_Address
X As Integer
Y As Integer
x As Integer
y As Integer
End Type
Dim Block(0 To 9) As Case_Block
Dim Exist(1 To 4, 1 To 5) As Boolean
@ -122,28 +130,31 @@ Dim mouse_x As Long, mouse_y As Long, mouse_button As Integer
Dim last_move As Integer, move_times As Integer
Dim total_steps As Long, total_time As Long
Dim Start_Code As String
Private Sub Command_Create_Case_Click()
change_case_title = InputBox("请输入布局名称", "提示", "横刀立马")
change_case_code = InputBox("请输入布局编码(7bits)", "提示", "1A9BF0C")
change_case = True
Private Sub Menu_Debug_Mode_Click()
Menu_Debug_Mode.Checked = Not Menu_Debug_Mode.Checked
If Menu_Debug_Mode.Checked = True Then debug_mode = True Else debug_mode = False
End Sub
Private Sub Command_Reset_Click()
total_steps = 0
total_time = 0
Timer_Get_Time.Enabled = False
Private Sub Menu_On_Top_Click()
Menu_On_Top.Checked = Not Menu_On_Top.Checked
If Menu_On_Top.Checked = True Then
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 1 Or 2
Else
SetWindowPos Me.hwnd, -2, 0, 0, 0, 0, 1 Or 2
End If
End Sub
Private Sub Form_Load()
Call init
Label_Step = "步数: 0"
Label_Code = Start_Code
Label_Time = "用时: 0:00:00"
Call Analyse(Start_Code)
Call Output_Graph
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
mouse_button = Button
mouse_x = x
mouse_y = y
End Sub
Private Sub Form_DblClick()
Call Form_Click
End Sub
Private Sub Form_Click()
Dim m As Integer, X As Integer, Y As Integer
Dim m As Integer, x As Integer, y As Integer
If mouse_x < start_x Or mouse_x > start_x + square_width * 4 + gap * 5 Then Exit Sub
If mouse_y < start_y Or mouse_y > start_y + square_width * 5 + gap * 6 Then Exit Sub
If solve_compete = True Then Exit Sub
@ -155,32 +166,32 @@ Private Sub Form_Click()
total_steps = 0
Timer_Get_Time.Enabled = True
End If
Y = Int(Block(m).address / 4) + 1
X = Block(m).address - (Y - 1) * 4 + 1
y = Int(Block(m).address / 4) + 1
x = Block(m).address - (y - 1) * 4 + 1
If m = last_move Then
If move_max_step = 1 Then
If dir_x2 = 0 And dir_y2 = 0 Then
If move_times Mod 2 = 1 Then
Call Move_Block(m, block_addr(0).X - X, block_addr(0).Y - Y)
Call Move_Block(m, block_addr(0).x - x, block_addr(0).y - y)
Else
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
End If
Else
If mouse_button = 1 Then
If move_times Mod 4 = 0 Then
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
ElseIf move_times Mod 4 = 1 Then
Call Move_Block(m, block_addr(0).X - X, block_addr(0).Y - Y)
Call Move_Block(m, block_addr(0).x - x, block_addr(0).y - y)
ElseIf move_times Mod 4 = 2 Then
Call Move_Block(m, block_addr(2).X - X, block_addr(2).Y - Y)
Call Move_Block(m, block_addr(2).x - x, block_addr(2).y - y)
Else
Call Move_Block(m, block_addr(0).X - X, block_addr(0).Y - Y)
Call Move_Block(m, block_addr(0).x - x, block_addr(0).y - y)
End If
ElseIf mouse_button = 2 Then
If move_times Mod 2 = 0 Then
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
ElseIf move_times Mod 2 = 1 Then
Call Move_Block(m, block_addr(2).X - X, block_addr(2).Y - Y)
Call Move_Block(m, block_addr(2).x - x, block_addr(2).y - y)
End If
End If
End If
@ -189,17 +200,17 @@ Private Sub Form_Click()
If move_times Mod 4 = 0 Then
Call Move_Block(m, dir_x1, dir_y1)
ElseIf move_times Mod 4 = 1 Then
Call Move_Block(m, block_addr(2).X - X, block_addr(2).Y - Y)
Call Move_Block(m, block_addr(2).x - x, block_addr(2).y - y)
ElseIf move_times Mod 4 = 2 Then
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
Else
Call Move_Block(m, block_addr(0).X - X, block_addr(0).Y - Y)
Call Move_Block(m, block_addr(0).x - x, block_addr(0).y - y)
End If
ElseIf mouse_button = 2 Then
If move_times Mod 2 = 0 Then
Call Move_Block(m, block_addr(2).X - X, block_addr(2).Y - Y)
Call Move_Block(m, block_addr(2).x - x, block_addr(2).y - y)
ElseIf move_times Mod 2 = 1 Then
Call Move_Block(m, block_addr(0).X - X, block_addr(0).Y - Y)
Call Move_Block(m, block_addr(0).x - x, block_addr(0).y - y)
End If
End If
End If
@ -211,17 +222,16 @@ Private Sub Form_Click()
If move_max_step = 0 Then Exit Sub
total_steps = total_steps + 1
If mouse_button = 1 Then
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
End If
If mouse_button = 2 Then
If move_max_step = 1 Then
Call Move_Block(m, block_addr(1).X - X, block_addr(1).Y - Y)
Call Move_Block(m, block_addr(1).x - x, block_addr(1).y - y)
ElseIf move_max_step = 2 Then
Call Move_Block(m, block_addr(2).X - X, block_addr(2).Y - Y)
Call Move_Block(m, block_addr(2).x - x, block_addr(2).y - y)
End If
End If
End If
Label_Step = "步数: " & total_steps
Label_Code = Get_Code()
Call Output_Graph
@ -232,260 +242,267 @@ Private Sub Form_Click()
MsgBox "恭喜你成功完成!" & vbCrLf & "编码: " & Start_Code & vbCrLf & "步数: " & total_steps & vbCrLf & "用时: " & Right(Label_Time, Len(Label_Time) - 4), , "(>__<)"
End If
End Sub
Private Sub Command_Create_Case_Click()
change_case_title = InputBox("请输入布局名称", "提示", "横刀立马")
change_case_code = InputBox("请输入布局编码(7bits)", "提示", "1A9BF0C")
change_case = True
End Sub
Private Sub Form_DblClick()
Call Form_Click
Private Sub Command_Select_Case_Click()
Form_Classic_Cases.Show 1
End Sub
Private Sub Form_Load()
Private Sub Command_Reset_Click()
total_steps = 0
total_time = 0
Timer_Get_Time.Enabled = False
Call init
Label_Step = "步数: 0"
Label_Code = Start_Code
Label_Time = "用时: 0:00:00"
Call Analyse(Start_Code)
Call Output_Graph
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mouse_button = Button
mouse_x = X
mouse_y = Y
Private Sub init()
playing = False
solve_compete = False
last_move = 10
move_times = 0
total_steps = 0
start_x = 180
start_y = 300
gap = 105
square_width = 1200
block_line_width = 1
case_line_width = 2
block_line_color = RGB(0, 0, 0)
case_line_color = RGB(0, 0, 0)
block_color = RGB(250, 250, 250)
case_color = RGB(256, 256, 256)
Call Case_init
x_split(0) = start_x
x_split(1) = start_x + gap / 2 + square_width + gap
x_split(2) = start_x + gap / 2 + (square_width + gap) * 2
x_split(3) = start_x + gap / 2 + (square_width + gap) * 3
x_split(4) = start_x + gap + (square_width + gap) * 4
y_split(0) = start_y
y_split(1) = start_y + gap / 2 + square_width + gap
y_split(2) = start_y + gap / 2 + (square_width + gap) * 2
y_split(3) = start_y + gap / 2 + (square_width + gap) * 3
y_split(4) = start_y + gap / 2 + (square_width + gap) * 4
y_split(5) = start_y + gap + (square_width + gap) * 5
End Sub
Private Sub Move_Block(m As Integer, dir_x As Integer, dir_y As Integer)
Dim addr As Integer, style As Integer, X As Integer, Y As Integer
Dim addr As Integer, style As Integer, x As Integer, y As Integer
addr = Block(m).address
style = Block(m).style
Y = Int(addr / 4) + 1
X = addr - (Y - 1) * 4 + 1
X = X + dir_x
Y = Y + dir_y
addr = (Y - 1) * 4 + X - 1
y = Int(addr / 4) + 1
x = addr - (y - 1) * 4 + 1
x = x + dir_x
y = y + dir_y
addr = (y - 1) * 4 + x - 1
Call Clear_Block(m)
Block(m).address = addr
Block(m).style = style
If Block(m).style = 0 Then
Block_index(X, Y) = m
Block_index(X, Y + 1) = m
Block_index(X + 1, Y) = m
Block_index(X + 1, Y + 1) = m
Block_index(x, y) = m
Block_index(x, y + 1) = m
Block_index(x + 1, y) = m
Block_index(x + 1, y + 1) = m
End If
If Block(m).style = 1 Then
Block_index(X, Y) = m
Block_index(X + 1, Y) = m
Block_index(x, y) = m
Block_index(x + 1, y) = m
End If
If Block(m).style = 2 Then
Block_index(X, Y) = m
Block_index(X, Y + 1) = m
Block_index(x, y) = m
Block_index(x, y + 1) = m
End If
If Block(m).style = 3 Then
Block_index(X, Y) = m
Block_index(x, y) = m
End If
For X = 1 To 4
For Y = 1 To 5
If Block_index(X, Y) <> 10 Then Exist(X, Y) = True
Next Y
Next X
For x = 1 To 4
For y = 1 To 5
If Block_index(x, y) <> 10 Then Exist(x, y) = True
Next y
Next x
End Sub
Private Sub Check_Move(m As Integer)
Dim addr As Integer, X As Integer, Y As Integer
Dim addr As Integer, x As Integer, y As Integer
Dim move_once As Boolean
move_once = False
dir_x1 = 0: dir_x2 = 0: dir_y1 = 0: dir_y2 = 0
move_max_step = 0
addr = Block(m).address
Y = Int(addr / 4) + 1
X = addr - (Y - 1) * 4 + 1
block_addr(0).X = X: block_addr(0).Y = Y
block_addr(1).X = X: block_addr(1).Y = Y
block_addr(2).X = X: block_addr(2).Y = Y
y = Int(addr / 4) + 1
x = addr - (y - 1) * 4 + 1
block_addr(0).x = x: block_addr(0).y = y
block_addr(1).x = x: block_addr(1).y = y
block_addr(2).x = x: block_addr(2).y = y
If Block(m).style = 0 Then
If Y > 1 Then
If Exist(X, Y - 1) = False And Exist(X + 1, Y - 1) = False Then move_max_step = 1: dir_y1 = -1
If y > 1 Then
If Exist(x, y - 1) = False And Exist(x + 1, y - 1) = False Then move_max_step = 1: dir_y1 = -1
End If
If Y < 4 Then
If Exist(X, Y + 2) = False And Exist(X + 1, Y + 2) = False Then move_max_step = 1: dir_y1 = 1
If y < 4 Then
If Exist(x, y + 2) = False And Exist(x + 1, y + 2) = False Then move_max_step = 1: dir_y1 = 1
End If
If X > 1 Then
If Exist(X - 1, Y) = False And Exist(X - 1, Y + 1) = False Then move_max_step = 1: dir_x1 = -1
If x > 1 Then
If Exist(x - 1, y) = False And Exist(x - 1, y + 1) = False Then move_max_step = 1: dir_x1 = -1
End If
If X < 3 Then
If Exist(X + 2, Y) = False And Exist(X + 2, Y + 1) = False Then move_max_step = 1: dir_x1 = 1
If x < 3 Then
If Exist(x + 2, y) = False And Exist(x + 2, y + 1) = False Then move_max_step = 1: dir_x1 = 1
End If
ElseIf Block(m).style = 1 Then
If Y > 1 Then
If Exist(X, Y - 1) = False And Exist(X + 1, Y - 1) = False Then move_max_step = 1: dir_y1 = -1
If y > 1 Then
If Exist(x, y - 1) = False And Exist(x + 1, y - 1) = False Then move_max_step = 1: dir_y1 = -1
End If
If Y < 5 Then
If Exist(X, Y + 1) = False And Exist(X + 1, Y + 1) = False Then move_max_step = 1: dir_y1 = 1
If y < 5 Then
If Exist(x, y + 1) = False And Exist(x + 1, y + 1) = False Then move_max_step = 1: dir_y1 = 1
End If
If X > 1 Then
If Exist(X - 1, Y) = False Then
If x > 1 Then
If Exist(x - 1, y) = False Then
move_max_step = 1
If move_once = False Then dir_x1 = -1 Else dir_x2 = -1
move_once = True
If X > 2 Then
If Exist(X - 2, Y) = False Then move_max_step = 2: dir_x2 = -2
If x > 2 Then
If Exist(x - 2, y) = False Then move_max_step = 2: dir_x2 = -2
End If
End If
End If
If X < 3 Then
If Exist(X + 2, Y) = False Then
If x < 3 Then
If Exist(x + 2, y) = False Then
move_max_step = 1
If move_once = False Then dir_x1 = 1 Else dir_x2 = 1
move_once = True
If X < 2 Then
If Exist(X + 3, Y) = False Then move_max_step = 2: dir_x2 = 2
If x < 2 Then
If Exist(x + 3, y) = False Then move_max_step = 2: dir_x2 = 2
End If
End If
End If
ElseIf Block(m).style = 2 Then
If Y > 1 Then
If Exist(X, Y - 1) = False Then
If y > 1 Then
If Exist(x, y - 1) = False Then
move_max_step = 1
If move_once = False Then dir_y1 = -1 Else dir_y2 = -1
move_once = True
If Y > 2 Then
If Exist(X, Y - 2) = False Then move_max_step = 2: dir_y2 = -2
If y > 2 Then
If Exist(x, y - 2) = False Then move_max_step = 2: dir_y2 = -2
End If
End If
End If
If Y < 4 Then
If Exist(X, Y + 2) = False Then
If y < 4 Then
If Exist(x, y + 2) = False Then
move_max_step = 1
If move_once = False Then dir_y1 = 1 Else dir_y2 = 1
move_once = True
If Y < 3 Then
If Exist(X, Y + 3) = False Then move_max_step = 2: dir_y2 = 2
If y < 3 Then
If Exist(x, y + 3) = False Then move_max_step = 2: dir_y2 = 2
End If
End If
End If
If X > 1 Then
If Exist(X - 1, Y) = False And Exist(X - 1, Y + 1) = False Then move_max_step = 1: dir_x1 = -1
If x > 1 Then
If Exist(x - 1, y) = False And Exist(x - 1, y + 1) = False Then move_max_step = 1: dir_x1 = -1
End If
If X < 4 Then
If Exist(X + 1, Y) = False And Exist(X + 1, Y + 1) = False Then move_max_step = 1: dir_x1 = 1
If x < 4 Then
If Exist(x + 1, y) = False And Exist(x + 1, y + 1) = False Then move_max_step = 1: dir_x1 = 1
End If
ElseIf Block(m).style = 3 Then
If Y > 1 Then
If Exist(X, Y - 1) = False Then
If y > 1 Then
If Exist(x, y - 1) = False Then
move_max_step = 1
If move_once = False Then dir_y1 = -1 Else dir_y2 = -1
move_once = True
If Y > 2 Then
If Exist(X, Y - 2) = False Then move_max_step = 2: dir_y2 = -2
If y > 2 Then
If Exist(x, y - 2) = False Then move_max_step = 2: dir_y2 = -2
End If
If X > 1 Then
If Exist(X - 1, Y - 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = -1
If x > 1 Then
If Exist(x - 1, y - 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = -1
End If
If X < 4 Then
If Exist(X + 1, Y - 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = -1
If x < 4 Then
If Exist(x + 1, y - 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = -1
End If
End If
End If
If Y < 5 Then
If Exist(X, Y + 1) = False Then
If y < 5 Then
If Exist(x, y + 1) = False Then
move_max_step = 1
If move_once = False Then dir_y1 = 1 Else dir_y2 = 1
move_once = True
If Y < 4 Then
If Exist(X, Y + 2) = False Then move_max_step = 2: dir_y2 = 2
If y < 4 Then
If Exist(x, y + 2) = False Then move_max_step = 2: dir_y2 = 2
End If
If X > 1 Then
If Exist(X - 1, Y + 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = 1
If x > 1 Then
If Exist(x - 1, y + 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = 1
End If
If X < 4 Then
If Exist(X + 1, Y + 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = 1
If x < 4 Then
If Exist(x + 1, y + 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = 1
End If
End If
End If
If X > 1 Then
If Exist(X - 1, Y) = False Then
If x > 1 Then
If Exist(x - 1, y) = False Then
move_max_step = 1
If move_once = False Then dir_x1 = -1 Else dir_x2 = -1
move_once = True
If X > 2 Then
If Exist(X - 2, Y) = False Then move_max_step = 2: dir_x2 = -2
If x > 2 Then
If Exist(x - 2, y) = False Then move_max_step = 2: dir_x2 = -2
End If
If Y > 1 Then
If Exist(X - 1, Y - 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = -1
If y > 1 Then
If Exist(x - 1, y - 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = -1
End If
If Y < 5 Then
If Exist(X - 1, Y + 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = 1
If y < 5 Then
If Exist(x - 1, y + 1) = False Then move_max_step = 2: dir_x2 = -1: dir_y2 = 1
End If
End If
End If
If X < 4 Then
If Exist(X + 1, Y) = False Then
If x < 4 Then
If Exist(x + 1, y) = False Then
move_max_step = 1
If move_once = False Then dir_x1 = 1 Else dir_x2 = 1
move_once = True
If X < 3 Then
If Exist(X + 2, Y) = False Then move_max_step = 2: dir_x2 = 2
If x < 3 Then
If Exist(x + 2, y) = False Then move_max_step = 2: dir_x2 = 2
End If
If Y > 1 Then
If Exist(X + 1, Y - 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = -1
If y > 1 Then
If Exist(x + 1, y - 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = -1
End If
If Y < 5 Then
If Exist(X + 1, Y + 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = 1
If y < 5 Then
If Exist(x + 1, y + 1) = False Then move_max_step = 2: dir_x2 = 1: dir_y2 = 1
End If
End If
End If
End If
block_addr(1).X = block_addr(0).X + dir_x1
block_addr(1).Y = block_addr(0).Y + dir_y1
block_addr(2).X = block_addr(0).X + dir_x2
block_addr(2).Y = block_addr(0).Y + dir_y2
block_addr(1).x = block_addr(0).x + dir_x1
block_addr(1).y = block_addr(0).y + dir_y1
block_addr(2).x = block_addr(0).x + dir_x2
block_addr(2).y = block_addr(0).y + dir_y2
End Sub
Private Function Get_block_x(X As Long) As Integer
Private Function Get_block_x(x As Long) As Integer
Dim i As Integer
For i = 1 To 4
If X > x_split(i - 1) And X < x_split(i) Then
If x > x_split(i - 1) And x < x_split(i) Then
Get_block_x = i
Exit For
End If
Next i
End Function
Private Function Get_block_y(Y As Long) As Integer
Private Function Get_block_y(y As Long) As Integer
Dim i As Integer
For i = 1 To 5
If Y > y_split(i - 1) And Y < y_split(i) Then
If y > y_split(i - 1) And y < y_split(i) Then
Get_block_y = i
Exit For
End If
Next i
End Function
Private Sub init()
playing = False
solve_compete = False
last_move = 10
move_times = 0
total_steps = 0
start_x = 180
start_y = 300
gap = 105
square_width = 1200
block_line_width = 1
case_line_width = 2
block_line_color = RGB(0, 0, 0)
case_line_color = RGB(0, 0, 0)
block_color = RGB(250, 250, 250)
case_color = RGB(256, 256, 256)
Call Case_init
x_split(0) = start_x
x_split(1) = start_x + gap / 2 + square_width + gap
x_split(2) = start_x + gap / 2 + (square_width + gap) * 2
x_split(3) = start_x + gap / 2 + (square_width + gap) * 3
x_split(4) = start_x + gap + (square_width + gap) * 4
y_split(0) = start_y
y_split(1) = start_y + gap / 2 + square_width + gap
y_split(2) = start_y + gap / 2 + (square_width + gap) * 2
y_split(3) = start_y + gap / 2 + (square_width + gap) * 3
y_split(4) = start_y + gap / 2 + (square_width + gap) * 4
y_split(5) = start_y + gap + (square_width + gap) * 5
End Sub
Private Sub Output_Graph()
Dim m, X, Y As Integer
Dim m, x, y As Integer
Dim width As Integer, height As Integer
Print_Block start_x, start_y, square_width * 4 + gap * 5, square_width * 5 + gap * 6, case_line_width, case_color, case_line_color
For m = 0 To 9
If Block(m).address <> 25 Then
X = (Block(m).address Mod 4) * (square_width + gap) + gap + start_x
Y = Int(Block(m).address / 4) * (square_width + gap) + gap + start_y
x = (Block(m).address Mod 4) * (square_width + gap) + gap + start_x
y = Int(Block(m).address / 4) * (square_width + gap) + gap + start_y
If Block(m).style = 0 Or Block(m).style = 1 Then
width = square_width * 2 + gap
Else
@ -496,7 +513,7 @@ Private Sub Output_Graph()
Else
height = square_width
End If
Print_Block X, Y, width, height, block_line_width, block_color, block_line_color
Print_Block x, y, width, height, block_line_width, block_color, block_line_color
End If
Next m
End Sub
@ -522,35 +539,35 @@ Private Sub Case_init()
Next i
End Sub
Private Sub Clear_Block(m As Integer)
Dim X As Integer, Y As Integer, addr As Integer
Dim x As Integer, y As Integer, addr As Integer
addr = Block(m).address
Y = Int(addr / 4) + 1
X = addr - (Y - 1) * 4 + 1
y = Int(addr / 4) + 1
x = addr - (y - 1) * 4 + 1
If Block(m).style = 0 Then
Exist(X, Y) = False
Exist(X, Y + 1) = False
Exist(X + 1, Y) = False
Exist(X + 1, Y + 1) = False
Block_index(X, Y) = 10
Block_index(X, Y + 1) = 10
Block_index(X + 1, Y) = 10
Block_index(X + 1, Y + 1) = 10
Exist(x, y) = False
Exist(x, y + 1) = False
Exist(x + 1, y) = False
Exist(x + 1, y + 1) = False
Block_index(x, y) = 10
Block_index(x, y + 1) = 10
Block_index(x + 1, y) = 10
Block_index(x + 1, y + 1) = 10
End If
If Block(m).style = 1 Then
Exist(X, Y) = False
Exist(X + 1, Y) = False
Block_index(X, Y) = 10
Block_index(X + 1, Y) = 10
Exist(x, y) = False
Exist(x + 1, y) = False
Block_index(x, y) = 10
Block_index(x + 1, y) = 10
End If
If Block(m).style = 2 Then
Exist(X, Y) = False
Exist(X, Y + 1) = False
Block_index(X, Y) = 10
Block_index(X, Y + 1) = 10
Exist(x, y) = False
Exist(x, y + 1) = False
Block_index(x, y) = 10
Block_index(x, y + 1) = 10
End If
If Block(m).style = 3 Then
Exist(X, Y) = False
Block_index(X, Y) = 10
Exist(x, y) = False
Block_index(x, y) = 10
End If
Block(m).address = 25
Block(m).style = 4
@ -631,41 +648,41 @@ Private Function Get_Code() As String
Get_Code = Code
End Function
Private Sub Analyse(Code As String)
Dim m As Integer, addr As Integer, X As Integer, Y As Integer
Dim m As Integer, addr As Integer, x As Integer, y As Integer
Call Analyse_Code(Code)
For X = 1 To 4
For Y = 1 To 5
Block_index(X, Y) = 10
Exist(X, Y) = False
Next Y
Next X
For x = 1 To 4
For y = 1 To 5
Block_index(x, y) = 10
Exist(x, y) = False
Next y
Next x
For m = 0 To 9
addr = Block(m).address
Y = Int(addr / 4) + 1
X = addr - (Y - 1) * 4 + 1
y = Int(addr / 4) + 1
x = addr - (y - 1) * 4 + 1
If Block(m).style = 0 Then
Block_index(X, Y) = 0
Block_index(X, Y + 1) = 0
Block_index(X + 1, Y) = 0
Block_index(X + 1, Y + 1) = 0
Block_index(x, y) = 0
Block_index(x, y + 1) = 0
Block_index(x + 1, y) = 0
Block_index(x + 1, y + 1) = 0
End If
If Block(m).style = 1 Then
Block_index(X, Y) = m
Block_index(X + 1, Y) = m
Block_index(x, y) = m
Block_index(x + 1, y) = m
End If
If Block(m).style = 2 Then
Block_index(X, Y) = m
Block_index(X, Y + 1) = m
Block_index(x, y) = m
Block_index(x, y + 1) = m
End If
If Block(m).style = 3 Then
Block_index(X, Y) = m
Block_index(x, y) = m
End If
Next m
For X = 1 To 4
For Y = 1 To 5
If Block_index(X, Y) <> 10 Then Exist(X, Y) = True
Next Y
Next X
For x = 1 To 4
For y = 1 To 5
If Block_index(x, y) <> 10 Then Exist(x, y) = True
Next y
Next x
End Sub
Private Function Check() As Boolean
Dim temp(0 To 19) As Boolean
@ -791,21 +808,6 @@ Private Sub Analyse_Code(Code As String)
Next i
err:
End Sub
Private Sub Menu_Debug_Mode_Click()
Menu_Debug_Mode.Checked = Not Menu_Debug_Mode.Checked
If Menu_Debug_Mode.Checked = True Then debug_mode = True Else debug_mode = False
End Sub
Private Sub Menu_On_Top_Click()
Menu_On_Top.Checked = Not Menu_On_Top.Checked
If Menu_On_Top.Checked = True Then
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 1 Or 2
Else
SetWindowPos Me.hwnd, -2, 0, 0, 0, 0, 1 Or 2
End If
End Sub
Private Sub Timer_Get_Time_Timer()
Static temp As Integer
Dim time_hour As String, time_minute As String, time_second As String
@ -817,7 +819,6 @@ Private Sub Timer_Get_Time_Timer()
If Len(time_minute) = 1 Then time_minute = "0" & time_minute
Label_Time = "用时: " & time_hour & ":" & time_minute & ":" & time_second
End Sub
Private Sub Timer_Debug_Timer()
Dim i As Integer, j As Integer, m As Integer, debug_dat As String
For m = 0 To 9
@ -846,9 +847,9 @@ Private Sub Timer_Debug_Timer()
Next j
debug_dat = debug_dat & "dir_x1=" & dir_x1 & " dir_y1=" & dir_y1 & vbCrLf
debug_dat = debug_dat & "dir_x2=" & dir_x2 & " dir_y2=" & dir_y2 & vbCrLf
debug_dat = debug_dat & "block_addr(0)=(" & block_addr(0).X & "," & block_addr(0).Y & ")" & vbCrLf
debug_dat = debug_dat & "block_addr(1)=(" & block_addr(1).X & "," & block_addr(1).Y & ")" & vbCrLf
debug_dat = debug_dat & "block_addr(2)=(" & block_addr(2).X & "," & block_addr(2).Y & ")" & vbCrLf
debug_dat = debug_dat & "block_addr(0)=(" & block_addr(0).x & "," & block_addr(0).y & ")" & vbCrLf
debug_dat = debug_dat & "block_addr(1)=(" & block_addr(1).x & "," & block_addr(1).y & ")" & vbCrLf
debug_dat = debug_dat & "block_addr(2)=(" & block_addr(2).x & "," & block_addr(2).y & ")" & vbCrLf
debug_dat = debug_dat & "move_max_step=" & move_max_step & vbCrLf
debug_dat = debug_dat & "last_move=" & last_move & vbCrLf
debug_dat = debug_dat & "move_times=" & move_times & vbCrLf
@ -857,7 +858,6 @@ Private Sub Timer_Debug_Timer()
debug_dat = debug_dat & "total_time=" & total_time & vbCrLf
Text_Debug = debug_dat
End Sub
Private Sub Timer_Layout_Timer()
Dim width As Integer
width = gap * 5 + square_width * 4

5
HRD_Game.vbp

@ -2,6 +2,7 @@ Type=Exe
Form=Form_Game.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\Windows\SysWOW64\stdole2.tlb#OLE Automation
Module=Module; Module.bas
Form=Form_Classic_Cases.frm
IconForm="Form_Game"
Startup="Form_Game"
HelpFile=""
@ -11,8 +12,8 @@ Command32=""
Name="HRD_Game"
HelpContextID="0"
CompatibleMode="0"
MajorVer=0
MinorVer=1
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0

3
HRD_Game.vbw

@ -1,2 +1,3 @@
Form_Game = 52, 52, 883, 479, , 26, 27, 857, 453, C
Form_Game = 52, 52, 883, 479, , 26, 28, 857, 453, C
Module = 52, 52, 883, 479,
Form_Classic_Cases = 104, 104, 891, 531, , 104, 104, 937, 531, C

Loading…
Cancel
Save