关于作者

用户名:hlq83
笔名:胡一刀
地区: 北京-北京
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



好友博客

访问统计:
文章个数:12
评论个数:5
留言条数:1




Powered by BlogDriver 2.1

胡一刀的博客

 

欢迎访问胡一刀的博客,请在这里留言和胡一刀交流!

文章

原注册的blog丢失,新注册的blog  (作者置顶)

希望大家支持,已转移部分原blog文章过来。

- 作者: hlq83 2005年06月11日, 星期六 16:38  回复(1) |  引用(0) 加入博采

完成播放器
终于把播放器做完了,可以腾出时间复习期末考试了,播放器是用vb的mci指令做的,效果还不错,支持任何一种媒体格式,当然rm,rmvb的播放效果不是很好,这是由于mci不支持,用了一个realaudio插件的原因!

- 作者: 胡一刀 2005年06月12日, 星期日 20:52  回复(3) |  引用(0) 加入博采

6.11电影下载

6.11电影
文名称:弗莱迪大战杰森
发行时间:2003年
电影演员:罗拔英格伦 坚奇辛加 蒙妮卡姬娜
故事简介
专门闯进人的梦境并在梦中杀人灭口的《猛鬼街》弗莱迪,自从第一次在梦中杀人以后,他在地狱中足足有十年之久。《猛鬼街》村民已有系

统地删掉弗莱迪的记忆并把他消灭了。所有有机会成为弗莱迪的追杀目标,都已接受药物控制他们不再发梦。弗莱迪的阴谋好象已完全不能得

逞。为了能逃离地狱并再度大闹人间,弗莱迪利用了一个跟他一样杀人不眨眼的猛鬼王《13号星期五》的杰森为他杀人,弗莱迪进入杰森的梦

境令他复活,借刀行凶,令人间再度引起恐慌,制造了一个难得的机会给弗莱迪逃离炼狱。怎料杰森杀得一发不可收拾,而弗莱迪不甘所有「

功劳」都归于杰森,杰森亦不忿被弗莱迪利用,再加上《猛鬼街》村民想从中分化他们以致两败俱伤,令这场鬼打鬼的决战更见激烈。
下载地址
http://mov1.falian.com/%b8%a5%c0%b3%b5%cf%b4%f3%d5%bd%bd%dc%c9%ad.rmvb

养鬼吃人
时间一晃到了2127年,修道士又从地狱中走了出来。这一次,他发现自己在外太空的一艘飞船上,原来这是Merchant博士的一个计划,他打算

将地狱之门永远的封闭。Merchant博士的祖先,一个18世纪的玩具制造商,就是魔方的制造者。虽然几个世纪过去了,但Merchant一家始终为

关闭地狱之门而努力。这一次,Merchant博士要在外太空将修道士彻底消灭。
http://219.145.194.78:6666/G:/0014恐怖片/养鬼吃人V.rmvb

《 人吓人 》 
主要演员: 洪金宝 林正英 午马 锺楚红 锺发
洪金宝撞上个横死鬼, 钟楚红嫁了个鬼丈夫,冤魂复生,纸人说话,猛鬼附身,人鬼莫辨.本片是洪金宝的代表作之一,他的表演往往是那种

比较憨态的喜剧角色,本剧中他仍然有出色的表现,可谓是七分恐怖,三分搞笑。      
http://61.138.237.28:8888/D:/电影/【DRM】[林正英的僵尸大集合]中原霸刀/【DRM】人吓人.rmvb

韩国古惑仔
【演员】 郑云宅 郑俊浩 郑雄仁
【介质】 VCD  
【类别】 日韩剧 剧情 警匪
【内容简介】  
韩城一名卧底警员,长期潜伏黑社会,期望有一天能够摆脱“地下身份”,可是,同样是卧底的上司却以他不懂“EMAIL”为名,要他先去一所

私立学校修完高中,无奈,已学生的他重新背起乐和书包,然而他发现学校的天空已不再晴朗,他的同班同学时刻受到黑社会的威胁而孤立无

援。
http://218.3.62.101/2005/动作片/韩国古惑仔/01.rmvb

诅咒
导演:韦斯·卡拉文
主演:克里斯蒂娜·里奇、斯克特·拜奥、詹姆斯·布罗林
类型:恐怖/惊悚
主线:在一个月圆之夜,埃莉(克里斯蒂娜·瑞茜饰)和弟弟吉米(杰西·艾森伯格饰)正驱车赶往家中,一只凶猛的长毛怪物突然在车前一

晃而过.
http://105.mmvod.com/uj987/105dianying/诅咒/01.rm
【主演】:朱茵 钟真 吴镇宇 马德钟 杨梵
剧情简介: PHILLP(马德钟饰)是一名注册牙医,他有一种特殊的癖好,他对穿制服的女人都有一种变态的占有欲望,如女警、童军、护士等

。遇有不服从者,(皆将其杀死。当中的一名受害者,更被弃尸于大支港(吴镇宇饰)的私家车旁,港因而被带回警署问话。港的警花宝文(朱

茵饰)产生好感,决心将其追上手,而宝文之妹宝珍(钟真饰)是一个在校学生,一次与同学PETER往看牙医,刚巧是到PHILLP之诊所,不想被

PHILLP盯住,PHILLP设下圈套,*杀了宝珍并制造假象,嫁祸于PETER仔。宝文对妹妹之死存有疑惑,不断追查其妹的死因,经过调查后,确定

PHILLP是真凶,便故意引诱他上门,更以自己的肉体做饵布局.
下载地址:rtsp://210.21.113.57:555/vod/rm/movie2/qj2a.rm
rtsp://210.21.113.57:555/vod/rm/movie2/qj2b.rm

片名:小鬼上路(英文名: Are We There Yet?)
:qXH }o5OS)z导演:布莱恩·里文特 Brian Levant
编剧:史蒂文·加里·班克斯 Steven Gary Banks
主演:艾斯·库伯 Ice Cube.W
   尼娅·朗 Nia Long
      艾里莎·艾伦 Aleisha Allen
      菲利普·波登 Philip Bolden
      杰·莫哈 Jay Mohr
   麦克·盖尼 M.C. Gainey
类型:喜剧/爱情    
级别:PG(语言和粗俗的幽默)
剧情简介:追爱三百里 
尼克(艾斯·库伯饰)是一个不折不扣的花花公子,最近他又发现了一个新目标——单身妈妈苏珊娜(尼娅·朗饰)。现在的问题是尼克剃头

挑子一头热,他怎么也想不出好办法接近这个离婚女人。新年将至,一个绝佳的机会出现在尼克面前。苏珊娜目前正在温哥华工作,和孩子长

期的两地分居让她苦不堪言。尼克决定趁此良机大演雪中送炭好戏,将苏珊娜的两个宝贝——七岁的凯文(菲利普·波登饰)和十一岁的琳塞

(艾里莎·艾伦饰),安全护送至温哥华与她团聚。 但是尼克万万没有想到…….
rtsp://61.243.74.57:554/video/media2/xgui.rm

黑侠3
主 要 演 员:樊少皇 钟淑慧 郑佩佩
导  演: 徐克
影片类型:  动作片
国家地区:  香港
上映日期:  2005-04
2005年香港再创动作特技颠峰之作
Q片名:黑侠III
英 文 名:Black Mask III
◆译  名:黑侠 3
◆导  演:徐克

◆编  剧:Teddy Chan
◆类  型:动作/冒险/犯罪/科幻/惊险
◆片  长:103 分钟w
◆上  映:2005年易域风情
◆国  家:中国香港
◆语  言:普通话
◆字  幕:中文
下载地址:
rtsp://61.243.74.57/video/media2/hx301.rm
rtsp://61.243.74.57/video/media2/hx302.rm

黑鹰计划
rtsp://61.243.74.57:554/hyjl1.rm
rtsp://61.243.74.57:554/hyjl2.rm

大染坊
下载地址:
http://vvvvv.cn/zhencui/drf01.rm
...
http://vvvvv.cn/zhencui/drf24.rm


一年战争秘录
http://tool.fm930.com/xiaopeng/video/MS_IGLOO/MSIGLOO_01.rmvb
http://tool.fm930.com/xiaopeng/video/MS_IGLOO/MSIGLOO_02.rmvb

雪之少女
http://61.153.213.12/inf/vod/Kanon/01.rmvb
...
http://61.153.213.12/inf/vod/Kanon/07.rmvb

玻璃假面
http://download.skyhu.com/site/our/comic/bt/假面10.rmvb

变形金刚美版
ftp://dbgame:dbgame@ftp.dbgame.com/动画/【变形金刚】美版(全98集)+大电影/84年出品—第一季/变形金刚第一季_01.rmvb
...
ftp://dbgame:dbgame@ftp.dbgame.com/动画/【变形金刚】美版(全98集)+大电影/84年出品—第一季/变形金刚第一季_16.rmvb

钢之炼金术师
ftp://dbgame:dbgame@ftp.dbgame.com/动画/%5BFull_Metal_Alchemist%5D/rmvb/full_metal_alchemist%2001.rmvb
......
ftp://dbgame:dbgame@ftp.dbgame.com/动画/%5BFull_Metal_Alchemist%5D/rmvb/full_metal_alchemist%2051.rmvb 

【四个婚礼和一个葬礼】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/4gehunlihe1gezangli.wmv

【猫鼠游戏】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/maoshuyouxi.wmv

【两对鸳鸯一张床】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/liangduiyuanyangyizhangchuang.wmv

【小偷遇到贼】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/jhd2004.08.19/xiaotouyudaozei.wmv

【斑马人】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/jhd2004.10.13/banmaren.wmv

【钟无艳】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/20040317/zhongwuyan1.wmv

【动作杰可森】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/350k/dongzuojiekesen.wmv

真实的谎言】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/20040317/zhenshidehuangyan.WMV

【绝地狂龙】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/juedikuanglong.wmv

【最后城堡】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/zuihouchengbao.wmv

【再见枪神】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/JHD05-01-12/zaijianqiangshen.wmv

【三步杀人曲】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/350k/sanbusharenqu.wmv

【龙出生天】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/longchushengtian.wmv

【非常人犯】
ftp://aliushuaige:huNan2911CONn@61.187.90.72:2121/400k01/feichangrenfan.wmv 

- 作者: 胡一刀 2005年06月11日, 星期六 20:42  回复(1) |  引用(0) 加入博采

(转贴)关闭135、139、445、593、1025 等端口
操作要领:封闭端口,杜绝网络病毒对这些端口的访问权,以保障计算机安全,减少病毒对上网速度的影响。

  近日发现有些人感染了新的网络蠕虫病毒,该病毒使用冲击波病毒专杀工具无法杀除,请各位尽快升级计算机上的杀毒软件病毒库,在断开计算机网络连接的情况下扫描硬盘,查杀病毒。安装了防火墙软件的用户,请 封闭 TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口的出入连接,另外,你还可以封闭一些流行病毒的后门端口,如 TCP 2745、3127、6129 端口,所以也可以暂时屏蔽访问这些端口的传入连接。

  目前,许多病毒会对计算机用户的用户名和密码进行猜测,并暴力破解,为了您计算机的安全,请为您的计算机设定一个安全的、不容易被猜中的密码。


操作步骤




打开“控制面板”(打开“控制面板”的连接可以在“我的电脑”或“开始菜单”的“设置”菜单中找到)
在“控制面板”中找到“管理工具”。
双击打开“管理工具”,找到“本地安全策略”。
双击打开“本地安全策略”,找到“IP 安全策略”,如图一。


图一:找到“本地安全策略”的“IP 安全策略”

用鼠标右键点击右方窗格的空白位置,在弹出的快捷菜单中选择“ 创建 IP 安全策略”


图二:创建新的策略

在向导中点击“下一步”按钮,到第二页为新的安全策略命名,或者直接再点“ 下一步”。
到达“安全通信请求”处,默认选中了“激活默认相应规则”,请用鼠标点击一下这个选项框,将选中状态改成 未选中状态,如图三,再点击“下一步”。


图三:不要激活默认选中状态

点击“完成”按钮,“编辑属性”,如图四。


图四:完成新策略添加

在“属性”对话框中,看看“使用添加向导”有没有选中,如果选中了,请用鼠标点击一下,使之变成 未被选中的状态,然后点击“添加”按钮。如图五。


图五:点击“添加”按钮,添加新的连接规则

在“新规则属性”对话框中,点击“添加”按钮,如图六。


图六:添加新的规则

在 IP 策略列表中,首先解除“使用添加向导”的选中状态,然后点击“ 添加”按钮。如图七。


图七:添加新的筛选器

来到“筛选器属性”对话框,首先看到的是寻址,源地址选“任何 IP 地址”,目标地址选“我的 IP 地址”,如图八。


图八:筛选器属性

点击“协议”选项卡,首先在“选择协议类型”下的下拉列表中,选中“ TCP”,然后灰色的“设置协议端口”会变成有色,然后在“到此端口”下的文本框中输入“ 135”,然后点击“确定”按钮。如图九。


图九:添加屏蔽 TCP 135(RPC)端口的筛选器

回到筛选器列表的对话框,可以看到已经添加了一条策略,重复步骤 11、12、13,继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口。由于目前某些蠕虫病毒会扫描你计算机的 TCP 1025、2745、3127、6129 端口,所以,你也可以暂时添加这些端口的屏蔽策略,丢弃访问这些端口的数据包,不作响应,减少由此对你上网造成的影响。点击“ 关闭”按钮。如图十。


图十:重复操作步骤,添加各端口筛选

到了“新规则属性”对话框中,点击“新 IP 筛选器列表”,其左边的圆圈会加了一个点,表示已经激活,然后点击“筛选器操作”选项卡,如图十一。


图十一:激活“新 IP 筛选器列表”

在“筛选器操作”选项卡中,首先让“使用添加向导”不要被选中,然后点击“ 添加”按钮。如图十二。


图十二:添加筛选器操作

在“新筛选器操作属性”的“安全措施”选项卡中,选择“阻止”,然后点击“ 确定”按钮。如图十三。


图十三:添加“阻止”操作

到“新规则属性”对话框中,可以看到有一个新的“筛选器操作”,点击这个“ 新筛选器操作”,其左边的圆圈会加了一个点,表示已经激活,然后可以点击“ 关闭”按钮,关闭对话框。如图十四。


图十四:激活“新筛选器操作”

回到“新 IP 安全策略属性”对话框,按“关闭”按钮关闭对话框。如图十五。


图十五:关闭“新 IP 安全策略 属性”对话框

最后,返回到“本地安全策略”窗口,用鼠标右键点击新添加的 IP 安全策略,然后选“指派”,如图十六。


图十六:指派新的 IP 安全策略
这时,您的电脑已经具备的暂时防护 RPC 蠕虫病毒的能力了。
最后,请访这里提供的 RPC 漏洞、MS04-011 安全漏洞通告修补补丁下载网页,下载适合您的电脑的补丁,然后前往Windows Update 网站,为您的电脑下载 Windows 最新的更新补丁。


- 作者: hlq83 2005年06月11日, 星期六 17:03  回复(0) |  引用(0) 加入博采

(转贴)四绝招教你如何禁用QQ
QQ现在已成为网友们的必备工具,有的用来聊天,有的用来与朋友交流,这不,我也是一个忠实的QQ使用者,在家中和办公室的电脑上都安装了QQ,但是问题也随之而来。

  在办公室里,由于我经常需要外出,回来后就发现别的同事占用了我的电脑,正使用QQ进行聊天,看到人家聊得热乎劲,我还不好意思撵,这样无形之中就耽误了我的工作,而且也容易和我自己的QQ混淆,因此我很不愿意别人在我的电脑上使用QQ,可是我怎么办呢?删除我电脑上的QQ是一种方法,可是当我需要登录QQ时还需要重新安装,显然这不是一种好办法。经过研究,我发四种方法可以禁止别人使用我的QQ,而我使用时却可畅通无阻。什么办法?真这么有效吗?你先别怀疑,跟着本文介绍的方法做,你会得到一个满意的答案。

  一、使用防火墙禁止端口法

  我们知道 QQ使用的默认端口是 UDP 4000,使用防火墙将该端口关闭,那么别人就不能使用QQ了,当自己需要上网时只需开放该端口就可以了。

  下面以我使用的“金山网镖6”进行说明,点击菜单“工具”→“综合设置”→“IP过滤”→“添加”,弹出新窗口。

  在“端口”栏输入“4000”,在“协议”栏选择“UDP”,在“操作”栏选择“禁止”,这样就将UDP 4000端口关闭了。再操作一次,只是在“协议”栏选择“TCP”,将TCP 4000端口关闭。可以看到已经禁止了 UDP 4000和TCP 4000端口。

  此时你再登录QQ时试试,是不是一直不能成功呀!时间长了会出现连接超时的情况,即使重新安装了QQ,也不能登录成功。

  如果你想使用QQ时,可修改上述规则,将“操作”栏的“禁止”改为“允许”就可以了。

  到这里还不到万事大吉的时候。不信你可以再开一个QQ登录窗口(即同时有两个QQ登录窗口)试试,不一会竟然登录成功了。难道我们介绍的方法不管用吗?非也!这是因为在一个电脑进行多次QQ登录时,后来的QQ使用的端口号会是4001、4002、4003,即每运行一个QQ,使用的UPD 端口会加1。由于我们同时运行了两个QQ,第二个QQ使用的端口号是 UDP 4001,而不是UDP 4000,当然能够登录成功了。为了保险起见,我们需要封4000到4009,九个端口就可以了。你的同事总不能在一个QQ不能登录时,会同时运行10个登录窗口吧。

二、将QQ安装目录下的文件属性改为只写

  QQ在运行过程中需要正确加载“LoginUinList.dat”文件,该文件存储着用户的帐户信息,并且要将登录过程中的一些信息写入到安装目录下相关文件中,默认情况下QQ的安装目录是可以读写的,如果将QQ安装目录属性改为“只读”,那么QQ在登录过程中就因为无法写入登录信息而拒绝登录。

  操作方法:找到QQ安装目录(默认为C:Program FilesTencentQQ),在其上点击鼠标右键,在弹出的菜单中选择“属性”,然后在弹出的窗口;

  将其属性设置为“只读”,再点击“确定”,此时会弹出一个“确认属性更改的”对话框,选中“将更改应用于该文件夹、子文件夹和文件”按钮,连续两次点击“确定”按钮,关闭属性对话框。现在重新启动QQ,QQ号码就不能再登录了。

  当你需要用QQ时,去掉该安装目录和该目录下所有文件的只读属性就可以了。

  三、编辑Hosts文件

  如果您经常上网你就会发现,每当您每在IE中输入一个网址并回车后,在IE的状态栏就会出现一行字:“正在查找网站”,有时很快,有些却特别慢,一般第一次访问网站都比以前访问过的慢,这就是域名解析的问题。

  众所周知,计算机只能识别二进制的字符,因此为了标识每个网站就引入了IP地址的概念,IP地址就是网络上标识您站点的数字地址,就如同210.51.7.122一类的数字,很难记忆,为了简单好记,就采用了域名的方法来代替IP地址标识站点地址。所以当我们浏览所需的网站时,我们访问网站时要先连接到域名解析服务器(各地服务商提供)解析出IP地址来后才访问网站。因此,往往要耗费不少的时间,如果我们省去连接这个域名解析服务器的环节而直接访问网站速度当然会快不少。Hosts文件可以加快IP地址与主机名的映解析速度,从而提高上网速度。
实现域名本地解析的方法是将网站域名和其对应的IP地址存放到一个文件中,该文件名为Hosts,其内容存放格式为:IP地址 域名 #注释,该文件在Windows 98系统中存放在C:Windows目录下,在Windows 2000或XP中存放的路径为C:windowssystem32driversetc(假设操作系统均安装在 C:盘)。

  我们上网时会首选搜索Hosts这个文件是否有相关的解析,如果没有才会通过网络服务的服务器进行解析。如果我们将QQ的全部服务器与错误的IP地址对应,并存入在Hosts文件,那么QQ就不能正常登录了。

  用记事本打开Hosts文件,然后在文件中按照“IP地址 域名 #注释”的格式,将QQ服务器域名与错误的IP地址对应起来,从而实现禁用QQ的目的。

  具体设置如下:

  127.0.0.1 sz.tencent.com # 禁用QQ 1号服务器
  127.0.0.1 sz1.tencent.com # 禁用QQ 1号服务器
  127.0.0.1 sz2.tencent.com # 禁用QQ 2号服务器
  127.0.0.1 sz3.tencent.com # 禁用QQ 3号服务器
  127.0.0.1 sz4.tencent.com # 禁用QQ 4号服务器
  127.0.0.1 sz5.tencent.com # 禁用QQ 5号服务器
  127.0.0.1 sz6.tencent.com # 禁用QQ 6号服务器
  127.0.0.1 sz7.tencent.com # 禁用QQ 7号服务器
  127.0.0.1 sz8.tencent.com # 禁用QQ 8号服务器

  需要注意的是在输入映射记录时,一条记录占一行,并且IP地址和域名要有空格。

  如果需要使用QQ时,只需将QQ服务器域名对应的IP地址修改正确就可以了。或者干脆将Hosts文件改为其它名字,不用QQ时再改为来就可以了。
四、删除文件禁止QQ

  首选,将自己的QQ号码登录一次,必须做这一步,否则经过下面的操作后,连你自己也不能使用QQ了。然后打开QQ安装目录,在安装目录中找到“WizardCtrl.dll”动态链接库文件,将该文件删除或者移动到其他的目录中。

  需要注意的是:在安装目录中有两个同名文件,必须选择安装在主目录中的动态链接库文件,如果选择了删除“TMDlls”子文件夹中的“WizardCtrl.dll”文件则无效。

  此后,如果有人在QQ登录对话框中输入未出现在列表中的QQ号码时,点击“登录”按键后,QQ程序就会自动关闭,禁止QQ程序的运行,而我们却还是可以使用QQ的!

  以上四种方法都有效,实现起来也很方便,第一种方法的使用前提是你的电脑中必须安装了一种网络防火墙软件,否则不能对4000端口进行封闭;第二种方法通过修改QQ安装目录下的文件属性来实现,由于包含了子文件夹及全部的QQ文件,修改一次会需要较长时间,在修改时容易被别人看到,保密性不强;第三种方法非常具有实用性,编辑好Hosts文件后就无需再动,想上QQ时只需将Hosts改为其它的文件名即可,切换速度很快;第四种方法最绝,由于只有你自己的QQ可以登录,具有很大的隐蔽性,推荐使用。

  从修复QQ上网来说,安全性最好的是修改Hosts文件和禁用端口的方法。由于这两种方法的禁用与QQ的安装文件没有任何关系,是不会被轻易发觉做了手脚的!

- 作者: hlq83 2005年06月11日, 星期六 17:01  回复(0) |  引用(0) 加入博采

动态规划一题

题目原为英文,先简要用中文说明其大概原意。
输入s1,s2,s3。s1按顺序插在s2的空挡内,看能否组合成s3。
如:s1=cat s2=tree s3=catrtee
s1的ca插在tree的左边形成catree再把s1的t插在catree的r和e之间就形成s3
注意:s1必须按顺序插,比如s1的第一个字符c插在s2的第一二字符之间,则s1的a,t字符必须插在此时形成的新串tcree的c字符之后。
好了,题目就说道这不知道大家看懂了题意没。
输入输出格式:
输入:首先输入你要测试的情况数N(这个数的范围忘了,反正不为超过65535),然后输入s1,s2,s3(s3的长度<1000)(空格区分),一行为一次测试例子,总共输入N行测试例子s1,s2,s3;
输出:第i(0<i<=N)个测试例子成功组合输出Data set i: yes否则输出Data set i: no
input sample
3
cat tree catrtee
cat tree catrete
cat tree carttee

ouput sample
Data set 1: yes
Data set 2: yes
Data set 3: no

附上我的程序清单,

#include <iostream>
#include <string>
using namespace std;
void main()
{
 short int N,i,j,k,l,IsSuccess;
    string s1,s2,s3;
 cin>>N;
 for(i=0;i<N;i++)
 {
  cin>>s1>>s2>>s3;
  short int *flag1 = new short int[s1.size()];
  short int *flag3 = new short int[s3.size()];
  for(k=0;k<s1.size();k++)
   {
    flag1[k] = k;//flag1标志初始化
   }//for标志初始化
        while((flag1[0]+s1.size())<(s3.size()))
  {
   if((s1.size()+s2.size())!=s3.size()){IsSuccess = 0;break;}//长度不等,无需往下比
   //cout<<s1[0];break;
   IsSuccess = 1;
   for(k=0;k<s3.size();k++)
   {
    flag3[k] = 0;//flag3标志初始化
   }//for标志初始化
            for(j=0;j<s1.size();j++)
   {
    for(k=flag1[j];k<s3.size();k++)
    {
     if(s1[j]==s3[k])
     {
      for(l=j;l<s1.size();l++){flag1[l]=(k+l-j)>flag1[l]?k+l-j:flag1[l];}
      flag3[k]=1;
      break;
     }
    }
    if(k==s3.size()) {IsSuccess=0;break;}
   } 
   if(IsSuccess==0){break;}//失败,退出循环
   else//判断余下的是否是和s2一致,若是成功退出,否则继续循环。
   {
    short int tt = 0;
    for(k=0;k<s2.size();k++)
    { 
     for(j=tt;j<s3.size();j++)
     {
      //cout<<s2[k]<<" "<<s3[j]<<endl;
      if((flag3[j]==0)&&(s2[k]==s3[j])) {tt = j+1;break;}
      if((flag3[j]==0)&&(s2[k]!=s3[j])){IsSuccess=0;break;}
     }
     if(IsSuccess==0){break;}
    }
   }
            if(IsSuccess==1) break;
   else//所有flag1[]右移
   {
    if((flag1[0]+s1.size())==s3.size()) {IsSuccess=0;break;}//移不动了
    short int yes = 0;
    for(k=s1.size()-1;k>-1;k--)
    {
     short int ttt;
     if(k==(s1.size()-1)) ttt = s3.size();
     else ttt = flag1[k+1];
     for(j=flag1[k]+1;j<ttt;j++)
     {
      if(s1[k]==s3[j]) {yes = 1;flag1[k] = j;break;}
     }
     if(yes==1) break;
    }
    if(yes==0) {IsSuccess=0;break;}
   }
  }//while每次完成一次判断
  if(IsSuccess==1) cout<<"Data Set "<<i+1<<": yes"<<endl;
  else cout<<"Data Set "<<i+1<<": no"<<endl;
  delete flag1;delete flag3;//释放
 }//forN个循环

}

- 作者: hlq83 2005年06月11日, 星期六 16:35  回复(0) |  引用(0) 加入博采

堆排序汇编版

鉴于堆排序的算法时间复杂度和空间复杂度都非常好,写了一个汇编版的。代码如下

;堆排序实现50个数顺存储
;********************************************
;stack   segment para stack 'stack'

;        db      1024 dup (?)
;stack   ends


data    segment para 'data'
          org 1000h
data_buf  db  47,49,48,50,46,45,44,43,42,41
          db  40,39,38,37,36,35,34,33,32,31
          db  30,29,28,27,26,25,24,23,22,21
          db  20,19,18,17,16,15,14,13,12,11
          db  10, 9, 8, 7, 6, 5, 4, 3, 1, 2
msg1      db  'Raw Data:', 0dh,0ah
msg2      db  5 dup(10 dup(?,?,20h,20h),0dh,0ah)
msg3      db  'Sorted Data:', 0dh, 0ah
msg4      db  5 dup(10 dup(?,?,20h,20h),0dh,0ah),'$'


data    ends
;****************************************
program segment
;****************************************

main proc far
   assume cs:program,ds:data
start:
;****************************************
push ds
sub ax,ax
push ax
;*****************************************
mov ax,data
mov ds,ax
;*****************************************
call change1
mov cx,25
mov si,24
mov bx,49       ;初始化

jiandui:
push si                
call sift
pop si
dec si
loop jiandui     ;以上建堆过程,以下调整堆

mov cx,49
mov si,0
mov bx,48
tiaozhengdui:
mov al,data_buf[si]
mov ah,data_buf[bx][1]
mov data_buf[si],ah
mov data_buf[bx][1],al
push si
call sift
pop si
dec bx
loop tiaozhengdui

mov al,data_buf[si]
mov ah,data_buf[1]
mov data_buf[si],ah
mov data_buf[1],al

call change2

;以下将结果显示在屏幕上
mov ah,9
mov dx,seg msg1
mov ds,dx
mov dx,offset msg1
int 21h
ret

main endp


sift proc near      ;以si为根调整堆

continue3:
mov ax,si
add si,si
mov dl,data_buf[si][1]
mov si,ax

mov ax,si
add al,al
add al,2
cmp al,bl    
jnbe continue           ;判断data_buf[2*si][2]是否超出比较范围即没有右子树

mov ax,si
add si,si
cmp dl,data_buf[si][2]
mov si,ax

jge continue
mov ax,si
add si,si
mov dl,data_buf[si][2]
mov si,ax
cmp data_buf[si],dl
jge continue4
xchg dl,data_buf[si]
mov ax,si
add si,si
mov data_buf[si][2],dl
mov si,ax
add si,1
add si,si
jmp continue2

continue:
cmp data_buf[si],dl
jge continue4
xchg dl,data_buf[si]
mov ax,si
add si,si
mov data_buf[si][1],dl
mov si,ax
add si,si
add si,1


continue2:
mov ax,si
add si,si
add si,1
cmp si,bx
mov si,ax
jbe continue3
continue4:
ret
sift endp

change1 proc near
mov bx,0
mov cx,50
next1:
mov al,data_buf[bx]
mov ah,0
mov dl,10
div dl
add al,30h
add ah,30h
push bx
add bx,bx
add bx,bx
cmp bx,40
jge L1
mov msg2[bx],al
mov msg2[bx][1],ah
jmp X
L1:
cmp bx,80
jge L2
mov msg2[bx][2],al
mov msg2[bx][3],ah
jmp X
L2:
cmp bx,120
jge L3
mov msg2[bx][4],al
mov msg2[bx][5],ah
jmp X
L3:
cmp bx,160
jge L4
mov msg2[bx][6],al
mov msg2[bx][7],ah
jmp X
L4:
mov msg2[bx][8],al
mov msg2[bx][9],ah
X:
pop bx
add bx,1
loop next1
ret
change1 endp

change2 proc near
mov bx,0
mov cx,50
next2:
mov al,data_buf[bx]
mov ah,0
mov dl,10
div dl
add al,30h
add ah,30h
push bx
add bx,bx
add bx,bx

cmp bx,40
jge L5
mov msg4[bx],al
mov msg4[bx][1],ah
jmp Y
L5:
cmp bx,80
jge L6
mov msg4[bx][2],al
mov msg4[bx][3],ah
jmp Y
L6:
cmp bx,120
jge L7
mov msg4[bx][4],al
mov msg4[bx][5],ah
jmp Y
L7:
cmp bx,160
jge L8
mov msg4[bx][6],al
mov msg4[bx][7],ah
jmp Y
L8:
mov msg4[bx][8],al
mov msg4[bx][9],ah
Y:

pop bx
add bx,1
loop next2
ret
change2 endp

program ends
    end start

- 作者: hlq83 2005年06月11日, 星期六 16:32  回复(0) |  引用(0) 加入博采

第一次破解

应好友要求第一次破解,还好比较顺利。此软件保护意识不是很强,被我此等菜鸟居然也能破解。当然还是没有完全破解,不过看到网上的破解版也是不完全的,比我的还少了一个功能。
破解功能:
1.实现了随便输入任何信息就可注册。
2.修改了背景变换间隔为360秒,更适合一般人的使用
3.注明了关于怎么修改背景变换间隔的,用二进制修改器如Hedit.exe修改笔者指明处的数据即可。
关于此点特别说明一下,由于快要期末考试了,所以时间很少,本打算写个修改器(不知道取修改器合不合理,毕竟这不是游戏),专门修改背景变换间隔的,方便软件使用者。由于时间关系,实在抱歉,希望高手看到能版广大使用者写一个,或者干脆把所有的破解完成^_^。

就这么多了。。。第一次破解,没有完全破解!

软件名不在此公布,需要者可与我联系,hlq83@126.com
   --胡一刀 2005.6.2 1:03

- 作者: hlq83 2005年06月11日, 星期六 16:26  回复(0) |  引用(0) 加入博采

华容道Java版程序清单(二)
public void jButton7_actionPerformed(ActionEvent e) {//打开存盘
      if(jButton7.getText().equals(new String("打开存盘"))){
        String opencontent[] = new String[2];
String filepath = new String();
String filename = new String();

if(IsStart==false){//打开存盘继续存盘游戏
  int val;
  do{
    jFileChooser1.removeAll();
    jFileChooser1 = new JFileChooser();
     jFileChooser1.resetChoosableFileFilters();
     jFileChooser1.setMultiSelectionEnabled(false);
     jFileChooser1.setFileFilter(new MyFilter());
     jFileChooser1.setAcceptAllFileFilterUsed(false);
       jFileChooser1.setCurrentDirectory(new File("."));
    val = jFileChooser1.showOpenDialog(this);
  if(val!=JFileChooser.APPROVE_OPTION)  break;
  filename = jFileChooser1.getSelectedFile().getName();
  filepath = jFileChooser1.getSelectedFile().getPath();
  if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String(".huyidaoh"))))

filepath = filepath+".huyidaoh";
  jFileChooser1.setSelectedFile(new File(filepath));
  if(!jFileChooser1.getSelectedFile().exists())  JOptionPane.showConfirmDialog(null,filepath+" 存盘文件不存在\n请检查所给的文

件名称是否正确!","打开存盘文件",
                                        JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
}
while(!jFileChooser1.getSelectedFile().exists()); ////文件不存在

    if (val == JFileChooser.APPROVE_OPTION) {
    try {
      filename = jFileChooser1.getSelectedFile().getName();
     filepath = jFileChooser1.getSelectedFile().getPath();
    if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String(".huyidaoh"))))

filepath = filepath+".huyidaoh";

        FileInputStream myfile = new FileInputStream(filepath);
        byte buff[] = new byte[myfile.available()]; //创建和文件大小的数组
        val = myfile.read(buff);
        myfile.close();
        opencontent = new String(buff).split("\n",2);
        //先提取棋子坐标信息
        for(int i=0;i<10;i++){
            person[i].setP_positionX(new Integer(opencontent[0].substring(0+i*2,1+i*2)).intValue());
            person[i].setP_positionY(new Integer(opencontent[0].substring(1+i*2,2+i*2)).intValue());
        }
        //再提取空闲地方信息
        space1X = new Integer(opencontent[0].substring(20,21)).intValue();
        space1Y = new Integer(opencontent[0].substring(21,22)).intValue();
        space2X = new Integer(opencontent[0].substring(22,23)).intValue();
        space2Y = new Integer(opencontent[0].substring(23,24)).intValue();
        //再提取激活棋子ID
        activenum = new Integer(opencontent[0].substring(24,25)).intValue();
        //然后提取已走步子信息
        movenum = new Integer(opencontent[0].substring(25,opencontent[0].length())).intValue();
        //最后提取悔棋步子
        huiqi = opencontent[1];
        //提取信息完毕,下面初始化游戏
        for(int i=0;i<10;i++) Move(i);
        movenum = movenum-10;
        jLabel1.setText("走了"+new Integer(movenum).toString()+"步");
        IsStart = true;
        jButton1.setEnabled(false);
        jButton2.setEnabled(true);
        jButton3.setEnabled(true);
            jButton6.setEnabled(false);
        jButton7.setEnabled(false);
        jButton8.setEnabled(true);
        jButton9.setEnabled(false);


   }
   catch (IOException ioe) {
     JOptionPane.showConfirmDialog(null,"打开存盘文件失败!","打开存盘文件",
                                       JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
  }
 }
}
 }
 else if(jButton7.getText().equals(new String("曹操移完"))) initMove("移动关羽",1,"guanyu.jpg","请移动关羽!");
 else if(jButton7.getText().equals(new String("关羽移完"))) initMove("移动张飞",2,"zhangfei.jpg","请移动张飞!");
 else if(jButton7.getText().equals(new String("张飞移完"))) initMove("移动赵云",3,"zhaoyun.jpg","请移动赵云!");
 else if(jButton7.getText().equals(new String("赵云移完"))) initMove("移动黄忠",4,"huangzhong.jpg","请移动黄忠!");
 else if(jButton7.getText().equals(new String("黄忠移完"))) initMove("移动马超",5,"machao.jpg","请移动马超!");
 else if(jButton7.getText().equals(new String("马超移完"))) initMove("移动卒1",6,"zu.jpg","请移动卒1!");
 else if(jButton7.getText().equals(new String("卒1移完"))) initMove("移动卒2",7,"zu.jpg","请移动卒2!");
 else if(jButton7.getText().equals(new String("卒2移完"))) initMove("移动卒3",8,"zu.jpg","请移动卒3!");
 else if(jButton7.getText().equals(new String("卒3移完"))) initMove("移动卒4",9,"zu.jpg","请移动卒4!");
else if(jButton7.getText().equals(new String("卒4移完"))){
  //问是否保存棋局,倘若不保存下次不能用!
  this.jLabel2.setVisible(false);
  this.jLabel1.setText("全部移动完毕!");
  jButton7.setText("打开存盘");
  this.jButton1.setEnabled(true);
  this.movenum = 0;
  this.huiqi = "";
  jButton6.setText("设置棋局");
  String savecontent = new String();
String filepath = new String();
String filename = new String();
  int huyidao[] =new int[20];
 for(int i=0;i<20;i++){
   huyidao[i] = 0;
 }
 //JOptionPane.showConfirmDialog(null,"123","打开存盘",
                                        // JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
 int huyidaohuyidao;
 for(int i=0;i<10;i++){
   for(huyidaohuyidao=0;huyidaohuyidao        huyidao[4*(person[i].getP_positionY()-1+huyidaohuyidao/person[i].getP_width())+person[i].getP_positionX()-

1+huyidaohuyidao%person[i].getP_width()] = 1;
   }
 }
 huyidaohuyidao = 0;
 for(int i=0;i<20;i++){
   if(huyidao[i]==0){
     if(huyidaohuyidao==0) {
       space1X = i%4+1;
       space1Y = i/4+1;
       huyidaohuyidao = huyidaohuyidao+1;
     }
     else if(huyidaohuyidao==1){
       space2X = i%4+1;
       space2Y = i/4+1;
       break;
     }
   }
 }
 int val = JOptionPane.showConfirmDialog(null,"棋局设置完毕,是否保存棋局,以便下次可玩!","保存棋局",
                                       JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);;
 if(val==JFileChooser.APPROVE_OPTION){//点击是保存棋局
     //保存棋盘棋子信息
  for(int i=0;i<10;i++){
  savecontent = savecontent+new Integer(person[i].getP_positionX()).toString()+new Integer(person[i].getP_positionY

()).toString();
}
//保存空闲地方信息
savecontent = savecontent+new Integer(space1X).toString()+new Integer(space1Y).toString()+new Integer(space2X).toString()+new

Integer(space2Y).toString();
 do{
   jFileChooser1.removeAll();
  jFileChooser1 = new JFileChooser();
jFileChooser1.resetChoosableFileFilters();
jFileChooser1.setMultiSelectionEnabled(false);
jFileChooser1.setFileFilter(new MyFilter2());
jFileChooser1.setAcceptAllFileFilterUsed(false);
   jFileChooser1.setCurrentDirectory(new File("."));
  val = jFileChooser1.showSaveDialog(this);
   if(val!=JFileChooser.APPROVE_OPTION)  break;
     filepath = jFileChooser1.getSelectedFile().getPath();
     filename = jFileChooser1.getSelectedFile().getName();
     if (filename.length() < 10 ||(!filename.substring(filename.length() - 9,filename.length()).equals(new String

(".huyidaos")))) filepath =filepath + ".huyidaos";
     jFileChooser1.setSelectedFile(new File(filepath));
     if(jFileChooser1.getSelectedFile().exists()){
       int SaveFile_reply = JOptionPane.showConfirmDialog(null,
       filepath + " 棋局文件已经存在\n想要替换它吗", "保存棋局文件",
       JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
       if (SaveFile_reply == JOptionPane.YES_OPTION)  break;
     }
 }
 while(jFileChooser1.getSelectedFile().exists()); //文件已经存在
if(val==JFileChooser.APPROVE_OPTION)  {
  filepath = jFileChooser1.getSelectedFile().getPath();
  filename = jFileChooser1.getSelectedFile().getName();
try{

           if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String

(".huyidaos")))) filepath = filepath+".huyidaos";
         File file = new File(filepath);
         FileWriter outText = new FileWriter(file);
         outText.write(savecontent);
         outText.close();
         //先提取
       }
       catch(IOException ioe){
              JOptionPane.showConfirmDialog(null,"保存棋局文件失败!","保存棋局文件",
                                       JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
        }
}

 }


}


}

  public void initMove(String a,int b,String c,String d){
      this.jLabel2.setVisible(true);
      jButton7.setText(a);
       person[b].setP_positionX(5);
       person[b].setP_positionY(5);
       Icon ss = new ImageIcon(c);
       jLabel2.setIcon(ss);
       movenum = 0;
       this.jLabel1.setText(d);
       activenum = b;

  }
  public void jButton6_actionPerformed(ActionEvent e) {//设置棋局
    if(jButton6.getText().equals(new String("设置棋局"))){
      jButton1.setEnabled(false);
      jButton6.setText("取消设置");
      jButton7.setText("移动曹操");
      guanyu.setVisible(false);
      zhangfei.setVisible(false);
      zhaoyun.setVisible(false);
      huangzhong.setVisible(false);
      machao.setVisible(false);
      zu1.setVisible(false);
      zu2.setVisible(false);
      zu3.setVisible(false);
      zu4.setVisible(false);
      this.jLabel1.setText("请先移动曹操!");
      activenum = -1;
      //将原棋盘保存在huiqi变量中,便于取消设置时还原
      huiqi = "";
      for(int i=0;i<10;i++) huiqi = huiqi+new Integer(person[i].getP_positionX()).toString()+new Integer(person

[i].getP_positionY()).toString();
    }
    else{
      activenum = -1;
      this.jLabel2.setVisible(false);
      jButton6.setText("设置棋局");
      jButton7.setText("打开存盘");
      jButton1.setEnabled(true);
      guanyu.setVisible(true);
      zhangfei.setVisible(true);
      zhaoyun.setVisible(true);
      huangzhong.setVisible(true);
      machao.setVisible(true);
      zu1.setVisible(true);
      zu2.setVisible(true);
      zu3.setVisible(true);
      zu4.setVisible(true);
      for(int i=0;i<10;i++){
        person[i].setP_positionX(new Integer(huiqi.substring(0+2*i,1+2*i)).intValue());
        person[i].setP_positionY(new Integer(huiqi.substring(1+2*i,2+2*i)).intValue());
        Move(i);
      }
      huiqi = "";
      movenum = 0;
      this.jLabel1.setText("走了0步!");
    }
  }

  public void caocao_mouseDragged(MouseEvent e) {//设置棋局时将曹操移到指定位置
       dragDo("请先移动曹操!","caocao.jpg","caocao");
  }

  public void caocao_mouseReleased(MouseEvent e) {//拖动后释放
    releaseDo("请先移动曹操!",0,"曹操移完",e.getX(),e.getY());
  }

  public void guanyu_mouseDragged(MouseEvent e) {//设置棋局时将关羽移到指定位置
      dragDo("请移动关羽!","guanyu.jpg","guanyu");
  }
 public void dragDo(String a,String b,String c){
   if(jButton6.getText().equals(new String("取消设置")) && this.jLabel1.getText().equals(a)){
          Cursor cursor;//定义一个 Cursor
          Image img = new ImageIcon(b).getImage();//一个图片
          cursor = this.getToolkit().createCustomCursor(img, new Point(1,1), "c");
          this.setCursor(cursor);
   }
 }
 public void releaseDo(String a,int b,String c,int d,int e){
   int tempx,tempy;
   if(jButton6.getText().equals(new String("取消设置"))&& this.jLabel1.getText().equals(a)){
       tempx = d+70*(person[b].getP_positionX()-1);
       tempy = e+70*(person[b].getP_positionY()-1);
     if(tempx+1>280-70*(person[b].getP_width()-1)||tempx<0||tempy<0||tempy+1>350-70*(person[b].getP_height()-1))

JOptionPane.showConfirmDialog(null,"请不要拖到棋盘外面","拖动棋子",
                                                JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
      else if(b==0&&(tempx/70+1)==2&&(tempy/70+1)==4) JOptionPane.showConfirmDialog(null,"曹操不能放在出口处!","拖动棋子",
                                                JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
       else{
         tempx = tempx/70+1;
         if(tempx>4) tempx = 4;
         tempy =  tempy/70+1;
         if(tempy>5) tempy = 5;
         person[b].setP_positionX(tempx);
         person[b].setP_positionY(tempy);
         if(activenum==1) guanyu.setVisible(true);
         else if(activenum==2) zhangfei.setVisible(true);
         else if(activenum==3) zhaoyun.setVisible(true);
         else if(activenum==4) huangzhong.setVisible(true);
         else if(activenum==5) machao.setVisible(true);
         else if(activenum==6)  zu1.setVisible(true);
         else if(activenum==7)  zu2.setVisible(true);
         else if(activenum==8)  zu3.setVisible(true);
         else if(activenum==9)  zu4.setVisible(true);
         Move(b);
         jButton7.setText(c);
       }
       this.setCursor( new Cursor( Cursor.DEFAULT_CURSOR ) );
       this.jLabel1.setText(a);
    }

 }

  public void guanyu_mouseReleased(MouseEvent e) {//拖动后释放
    releaseDo("请移动关羽!",1,"关羽移完",e.getX(),e.getY());
}

  public void jLabel2_mouseDragged(MouseEvent e) {//移动图片
    if(this.jLabel2.isVisible()) {
         person[activenum].setP_positionX(5);
         person[activenum].setP_positionY(5);
         if(activenum==1) {
         dragDo("请移动关羽!","guanyu.jpg","guanyu");
         guanyu.setVisible(false);
    }
    else if(activenum==2) {
      dragDo("请移动张飞!","zhangfei.jpg","zhangfei");
      zhangfei.setVisible(false);
    }
    else if(activenum==3) {
      dragDo("请移动赵云!","zhaoyun.jpg","zhaoyun");
      zhaoyun.setVisible(false);
    }
    else if(activenum==4) {
      dragDo("请移动黄忠!","huangzhong.jpg","huangzhong");
      huangzhong.setVisible(false);
    }
    else if(activenum==5) {
      dragDo("请移动马超!","machao.jpg","machao");
      machao.setVisible(false);
    }
    else if(activenum==6) {
      dragDo("请移动卒1!","zu.jpg","zu1");
      zu1.setVisible(false);
    }
    else if(activenum==7) {
      dragDo("请移动卒2!","zu.jpg","zu2");
      zu2.setVisible(false);
    }
    else if(activenum==8) {
      dragDo("请移动卒3!","zu.jpg","zu3");
      zu3.setVisible(false);
    }
    else if(activenum==9) {
      dragDo("请移动卒4!","zu.jpg","zu4");
      zu4.setVisible(false);
    }
  }
}

  public void jLabel2_mouseReleased(MouseEvent e) {
      //JOptionPane.showConfirmDialog(null,new Integer((person[1].getP_positionX()*70+e.getX())/70).toString(),"打开存盘",
                                         //JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
      //先判断是否可以拖动,
      person[activenum].setP_positionX(5);
      person[activenum].setP_positionY(5);
      if(IsDrag(activenum,e.getX(),e.getY())){
          //拖动
         if(activenum==1) releaseDo("请移动关羽!",activenum,"关羽移完",e.getX(),e.getY());
         else if(activenum==2) releaseDo("请移动张飞!",activenum,"张飞移完",e.getX(),e.getY());
         else if(activenum==3) releaseDo("请移动赵云!",activenum,"赵云移完",e.getX(),e.getY());
         else if(activenum==4) releaseDo("请移动黄忠!",activenum,"黄忠移完",e.getX(),e.getY());
         else if(activenum==5) releaseDo("请移动马超!",activenum,"马超移完",e.getX(),e.getY());
         else if(activenum==6) releaseDo("请移动卒1!",activenum,"卒1移完",e.getX(),e.getY());
         else if(activenum==7) releaseDo("请移动卒2!",activenum,"卒2移完",e.getX(),e.getY());
         else if(activenum==8) releaseDo("请移动卒3!",activenum,"卒3移完",e.getX(),e.getY());
         else if(activenum==9) releaseDo("请移动卒4!",activenum,"卒4移完",e.getX(),e.getY());
      }
      else{
        JOptionPane.showConfirmDialog(null,"此位置已有棋子,请放置到别的地方!","拖动图片",
                                         JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
        this.setCursor( new Cursor( Cursor.DEFAULT_CURSOR ) );
      }

  }
  public boolean IsDrag(int n,int x,int y){//先判断是否可以拖动,
    boolean theresult = true;
    for(int i=0;i      if((person[n].getP_positionX()*70+x)/70         person[i].getP_positionX()<(person[n].getP_positionX()*70+x)/70+person[n].getP_width() &&
         (person[n].getP_positionY()*70+y)/70         person[i].getP_positionY()<(person[n].getP_positionX()*70+y)/70+person[n].getP_height()){
        theresult = false;
        break;
      }
    }
    return theresult;
  }

  public void jButton9_actionPerformed(ActionEvent e) {//打开棋局
    String opencontent = new String();
   String filepath = new String();
   String filename = new String();

if(IsStart==false){//打开棋局玩棋局游戏
  int val;
 do{
   jFileChooser1.removeAll();
jFileChooser1 = new JFileChooser();
jFileChooser1.resetChoosableFileFilters();
jFileChooser1.setMultiSelectionEnabled(false);
jFileChooser1.setFileFilter(new MyFilter2());
jFileChooser1.setAcceptAllFileFilterUsed(false);
 jFileChooser1.setCurrentDirectory(new File("."));
 val = jFileChooser1.showOpenDialog(this);
 if(val!=JFileChooser.APPROVE_OPTION)  break;
 filename = jFileChooser1.getSelectedFile().getName();
 filepath = jFileChooser1.getSelectedFile().getPath();
 if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String(".huyidaos"))))

filepath = filepath+".huyidaos";
 jFileChooser1.setSelectedFile(new File(filepath));
 if(!jFileChooser1.getSelectedFile().exists())  JOptionPane.showConfirmDialog(null,filepath+" 棋局文件不存在\n请检查所给的文

件名称是否正确!","打开棋局文件",
                                       JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
}
while(!jFileChooser1.getSelectedFile().exists()); ////文件不存在

   if (val == JFileChooser.APPROVE_OPTION) {
try {
  filename = jFileChooser1.getSelectedFile().getName();
     filepath = jFileChooser1.getSelectedFile().getPath();
    if(filename.length()<10||(!filename.substring(filename.length()-9,filename.length()).equals(new String(".huyidaos"))))

filepath = filepath+".huyidaos";

  FileInputStream myfile = new FileInputStream(filepath);
  byte buff[] = new byte[myfile.available()]; //创建和文件大小的数组
  val = myfile.read(buff);
  myfile.close();
  opencontent = new String(buff);
  //先提取棋子坐标信息
  for(int i=0;i<10;i++){
      person[i].setP_positionX(new Integer(opencontent.substring(0+i*2,1+i*2)).intValue());
      person[i].setP_positionY(new Integer(opencontent.substring(1+i*2,2+i*2)).intValue());
  }
  //再提取空闲地方信息
  space1X = new Integer(opencontent.substring(20,21)).intValue();
  space1Y = new Integer(opencontent.substring(21,22)).intValue();
  space2X = new Integer(opencontent.substring(22,23)).intValue();
  space2Y = new Integer(opencontent.substring(23,24)).intValue();

  activenum = -1;
  movenum =0;
  huiqi = "";
  //提取信息完毕,下面初始化游戏
  for(int i=0;i<10;i++) Move(i);
  movenum = movenum-10;
  jLabel1.setText("走了"+new Integer(movenum).toString()+"步");
  IsStart = false;
  jButton1.setEnabled(true);
  jButton2.setEnabled(false);
  jButton3.setEnabled(false);
          jButton6.setEnabled(true);
  jButton7.setEnabled(true);
  jButton8.setEnabled(false);
  jButton9.setEnabled(true);


}
catch (IOException ioe) {
  JOptionPane.showConfirmDialog(null,"打开棋局文件失败!","打开棋局文件",
                                       JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);
}
}
}

  }

  public void jButton11_actionPerformed(ActionEvent e) {//点击关于本软件
    JOptionPane.showConfirmDialog(null,"\n华容道1.0版\n作者:胡一刀\n联系方式:北师大计算机02级\nQQ:147017669     

Email:hlq83@126.com\n\n\n注:本程序为作者学习Java时期末试题所编,其中可能有不少bug或改进的地方,欢迎大家指正。\n作者也将在今

后不断推出新版本,敬请大家关注。\n本软件可免费用于学习和研究,欢迎与作者交流。\n倘若要商用,请与本人联系,否则触犯到作者版权,

本人必究。","软件说明",
                                              JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
  }

  public void jButton10_actionPerformed(ActionEvent e) {//点击游戏规则
    JOptionPane.showConfirmDialog(null,"\n1.点击开始游戏开始一盘游戏!曹操移到最下方正中处游戏胜利!\n2.棋子移动:点击一下棋

子,再点击空白处,只要可以到达,棋子就会移到空白处!\n3.可以任意n步悔棋,直至游戏开始点。便于高手研究每局最小步数!\n4.点击重

新开始,重新开始新的游戏。\n5.开始任意设置棋局,倘若你要以后还想玩此棋局,请保存棋局。先将曹操移动到你\n要设置的位置,然后点

击曹操移完开始移动关羽,依此类推设置好所有棋子。\n6.游戏可以存盘,下次打开存盘接着玩,还可以导入棋局玩你想玩的棋局,请不要随

\n意跟改存盘文件和棋局文件,否则打开会发生不可预告的错误!\n7.可以开启和关闭背景音乐以及棋子走步声!默认背景音乐关闭,棋子走

步声开启!\n8.最后一点希望大家尽情享受本游戏的快乐,有什么好的建议,请与作者联系!\n9.作者:胡一刀 hlq83@126.com","规则介绍",
                                              JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);


  }

  public void jButton12_actionPerformed(ActionEvent e){//开启或关闭背景音乐
    if(jButton12.getText().equals(new String("开启背景音乐"))){
      jButton12.setText("关闭背景音乐");
      //开始播放背景音乐
      try{
          File myMidiFile = new File("bg.mid");
          ser = MidiSystem.getSequencer();
          ser.addMetaEventListener(
          new MetaEventListener() {
               public void meta(MetaMessage event) {
                    if (event.getType() == 47) {//播放完毕,继续播放
                       if(ser != null && ser.isOpen()){
                              ser.start();
                        }
                      }
                }
            });

          Sequence mySeq = MidiSystem.getSequence(myMidiFile);
          ser.open();
          ser.setSequence(mySeq);
          ser.start();
          if(ser instanceof Synthesizer){
            Synthesizer sy = (Synthesizer)ser;
            MidiChannel channels[] = sy.getChannels();
            for (int i = 0; i < channels.length; i++){
              channels[i].controlChange(7,(int)((178 / 100.0) * 127.0)& 0xff);
            }
          }
        }
        catch(javax.sound.midi.InvalidMidiDataException e2){
        }
        catch(javax.sound.midi.MidiUnavailableException e3){
        }
        catch(IOException e4){
        }
      }
      else{
      jButton12.setText("开启背景音乐");
      if(ser != null && ser.isOpen()) ser.stop();
    }
  }
}

class huangrongdao_jButton12_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton12_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton12_actionPerformed(e);
  }
}

class huangrongdao_jButton5_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton5_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton5_actionPerformed(e);
  }
}

class huangrongdao_jButton10_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton10_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton10_actionPerformed(e);
  }
}

class huangrongdao_jButton11_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton11_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton11_actionPerformed(e);
  }
}

class huangrongdao_jButton9_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton9_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton9_actionPerformed(e);
  }
}

class huangrongdao_jLabel2_mouseAdapter
    extends MouseAdapter {
  private huangrongdao adaptee;
  huangrongdao_jLabel2_mouseAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseReleased(MouseEvent e) {

    adaptee.jLabel2_mouseReleased(e);
  }
}

class huangrongdao_jLabel2_mouseMotionAdapter
    extends MouseMotionAdapter {
  private huangrongdao adaptee;
  huangrongdao_jLabel2_mouseMotionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {

    adaptee.jLabel2_mouseDragged(e);
  }
}

class huangrongdao_jButton6_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton6_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton6_actionPerformed(e);
  }
}

class huangrongdao_jButton7_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton7_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton7_actionPerformed(e);
  }
}

class huangrongdao_jButton8_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton8_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton8_actionPerformed(e);
  }
}

class huangrongdao_jPanel1_mouseAdapter
    extends MouseAdapter {
  private huangrongdao adaptee;
  huangrongdao_jPanel1_mouseAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseClicked(MouseEvent e) {

    adaptee.jPanel1_mouseClicked(e);
  }
}

class huangrongdao_zu4_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zu4_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zu4_actionPerformed(e);
  }
}

class huangrongdao_zu3_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zu3_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zu3_actionPerformed(e);
  }
}

class huangrongdao_zu2_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zu2_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zu2_actionPerformed(e);
  }
}

class huangrongdao_zu1_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zu1_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zu1_actionPerformed(e);
  }
}

class huangrongdao_machao_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_machao_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.machao_actionPerformed(e);
  }
}

class huangrongdao_huangzhong_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_huangzhong_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.huangzhong_actionPerformed(e);
  }
}

class huangrongdao_zhaoyun_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zhaoyun_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zhaoyun_actionPerformed(e);
  }
}

class huangrongdao_guanyu_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_guanyu_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.guanyu_actionPerformed(e);
  }
}

class huangrongdao_guanyu_mouseAdapter
    extends MouseAdapter {
  private huangrongdao adaptee;
  huangrongdao_guanyu_mouseAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseReleased(MouseEvent e) {
    adaptee.guanyu_mouseReleased(e);
  }
}

class huangrongdao_guanyu_mouseMotionAdapter
    extends MouseMotionAdapter {
  private huangrongdao adaptee;
  huangrongdao_guanyu_mouseMotionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {
    adaptee.guanyu_mouseDragged(e);
  }
}

class huangrongdao_caocao_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_caocao_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.caocao_actionPerformed(e);
  }
}

class huangrongdao_caocao_mouseMotionAdapter
    extends MouseMotionAdapter {
  private huangrongdao adaptee;
  huangrongdao_caocao_mouseMotionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseDragged(MouseEvent e) {
    adaptee.caocao_mouseDragged(e);
  }
}

class huangrongdao_caocao_mouseAdapter
    extends MouseAdapter {
  private huangrongdao adaptee;
  huangrongdao_caocao_mouseAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseReleased(MouseEvent e) {
    adaptee.caocao_mouseReleased(e);
  }
}

class huangrongdao_jButton4_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton4_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton4_actionPerformed(e);
  }
}

class huangrongdao_jButton1_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton1_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton1_actionPerformed(e);
  }
}

class huangrongdao_jButton2_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton2_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {

    adaptee.jButton2_actionPerformed(e);
  }
}


class huangrongdao_jButton3_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_jButton3_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton3_actionPerformed(e);
  }
}

class huangrongdao_this_windowAdapter
    extends WindowAdapter {
  private huangrongdao adaptee;
  huangrongdao_this_windowAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void windowClosing(WindowEvent e) {
    adaptee.this_windowClosing(e);
  }
}

class huangrongdao_zhangfei_actionAdapter
    implements ActionListener {
  private huangrongdao adaptee;
  huangrongdao_zhangfei_actionAdapter(huangrongdao adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.zhangfei_actionPerformed(e);
  }
}

//建了一个类MyFilter,过滤为存盘文件
class MyFilter extends javax.swing.filechooser.FileFilter {

  public static String getExtension(File f) {
       String ext = null;
       String s = f.getName();
       int i = s.lastIndexOf('.');

       if (i > 0 &&  i < s.length() - 1) {
           ext = s.substring(i+1).toLowerCase();
       }
       return ext;
   }


  public boolean accept(File file){
    if (file.isDirectory()) {
          return true;
      }
      String extension = getExtension(file);
      if (extension != null) {
          if (extension.equals("huyidaoh"))
                  return true;
          else
              return false;

      }

      return false;

  }
  public String getDescription(){
    return "*.huyidaoh";
  }
}

//建了一个类MyFilter2,过滤为棋局文件
class MyFilter2 extends javax.swing.filechooser.FileFilter {

  public static String getExtension(File f) {
       String ext = null;
       String s = f.getName();
       int i = s.lastIndexOf('.');

       if (i > 0 &&  i < s.length() - 1) {
           ext = s.substring(i+1).toLowerCase();
       }
       return ext;
   }


  public boolean accept(File file){
    if (file.isDirectory()) {
          return true;
      }
      String extension = getExtension(file);
      if (extension != null) {
          if (extension.equals("huyidaos"))
                  return true;
          else
              return false;

      }

      return false;

  }
  public String getDescription(){
    return "*.huyidaos";
  }
}

class SoundMove implements FilenameFilter, ActionListener //走棋声音类
{

        File theFile=null;
        AudioData theData=null;
        InputStream nowPlaying=null;
        public SoundMove()
        {

                try{
                    theFile=new File("move.wav");

                    if(theFile!=null){
                        FileInputStream fis=new FileInputStream(theFile);
                        AudioStream as=new AudioStream(fis);
                        theData=as.getData();
                      }

                      else{
                        System.out.println("空");
                      }
                  }
                  catch(IOException e){
                        System.err.println(e);
                  }
                    AudioDataStream ads=new AudioDataStream(theData);
                    AudioPlayer.player.start(ads);
                    nowPlaying=ads;

        }
        public boolean accept(File dir, String name) {
                return true;
        }

        public void actionPerformed(ActionEvent e) {
                // TODO: Add your code here
        }
}

person.java 共98行
//Note:   本程序代码无版权限制,仅用于研究,但因为使用不当等原因 _
//      对你或社会造成伤害,作者概不负责。


//           ╭═══════════════════╮
//           ║         〖胡一刀 〗                  ║
//           ║                                      ║
//           ║    -----------------------------     ║
//           ┤    CodeName:person.java              ├
//           ║    FirstBuind:2005-6-4               ║
//           ║    Copyright:Freeware                ║
//           ║    Email:hlq83@126.com               ║
//           ╰═══════════════════╯

//Last Modify:2005-6-4

package huanrongdao;

/**
 *

Title: 华容道


 *
 *

Description: 期末作业


 *
 *

Copyright: Copyright (c) 2005


 *
 *

Company: bnu


 *
 * @author 胡一刀
 * @version 1.0
 */
public class person {
  public person() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public void setP_name(String p_name) {
    this.p_name = p_name;
  }

  public void setP_width(int p_width) {
    this.p_width = p_width;
  }

  public void setP_height(int  p_height) {
    this.p_height = p_height;
  }

  public void setP_positionX(int  p_positionX) {
    this.p_positionX = p_positionX;
  }

  public void setP_positionY(int p_positionY) {
    this.p_positionY = p_positionY;
  }

  public void setP_active(boolean p_active) {
    this.p_active = p_active;
  }

  public String getP_name() {
    return p_name;
  }

  public int getP_width() {
    return p_width;
  }

  public int getP_height() {
    return p_height;
  }

  public int  getP_positionX() {
    return p_positionX;
  }

  public int  getP_positionY() {
    return p_positionY;
  }

  public boolean isP_active() {
    return p_active;
  }

  private String p_name;//名字
  private int p_width;//所占宽度,如曹操为2卒为1
  private int p_height;//所占高度如曹操为2卒为1
  private int p_positionX;//左上角所在位置的横坐标,如开始时曹操在1处
  private int p_positionY;//左上角所在位置的纵坐标,如开始时曹操在1处
  private boolean p_active;//为true时表示当前为所要走动的棋子,后来发现没有用到,暂时保留在这。
  private void jbInit() throws Exception {
  }

}

- 作者: hlq83 2005年06月11日, 星期六 16:15  回复(0) |  引用(0) 加入博采

华容道java版程序清单(一)

huangrongdao.java 共1818行

//Note:   本程序代码无版权限制,仅用于研究,但因为使用不当等原因 _
//      对你或社会造成伤害,作者概不负责。


//           ╭═══════════════════╮
//           ║         〖胡一刀  〗                 ║
//           ║                                      ║
//           ║    -----------------------------     ║
//           ┤    CodeName:huangrongdao.java        ├
//           ║    FirstBuind:2005-6-4               ║
//           ║    Copyright:Freeware                ║
//           ║    Email:hlq83@126.com               ║
//           ╰═══════════════════╯

//Last Modify:2005-6-7:添加背景音乐和棋子走步声
package huanrongdao;

import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.*;
import sun.audio.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.io.*;
import java.awt.event.MouseMotionAdapter;
import javax.swing.border.TitledBorder;
import javax.sound.midi.*;
/**
 *

Title: 华容道


 *
 *

Description: 期末作业


 *
 *

Copyright: Copyright (c) 2005


 *
 *

Company: bnu


 *
 * @author 胡一刀
 * @version 1.0
 */
public class huangrongdao
    extends JFrame {
  public huangrongdao() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public static void main(String[] args) {
    huangrongdao huangrongdao = new huangrongdao();
    huangrongdao.setSize(500,500);
    huangrongdao.centerWindow(huangrongdao);
    huangrongdao.show();
  }

  private void jbInit() throws Exception {
    this.getContentPane().setLayout(null);
    this.setResizable(false);
    this.setTitle("华容道游戏");
    this.addWindowListener(new huangrongdao_this_windowAdapter(this));
    jPanel1.setBackground(Color.white);
    jPanel1.setBorder(BorderFactory.createEtchedBorder());
    jPanel1.setBounds(new Rectangle(100, 18, 280, 350));
    jPanel1.addMouseListener(new huangrongdao_jPanel1_mouseAdapter(this));
    jPanel1.setLayout(null);
    jButton2.setBounds(new Rectangle(385, 79, 101, 43));
    jButton2.setText("重新开始");
    jButton2.addActionListener(new huangrongdao_jButton2_actionAdapter(this));
    jButton1.setBounds(new Rectangle(385, 23, 98, 43));
    jButton1.setText("开始游戏");
    jButton1.addActionListener(new huangrongdao_jButton1_actionAdapter(this));
    jButton3.setBounds(new Rectangle(385, 129, 101, 43));
    jButton3.setText("悔棋");
    jButton3.addActionListener(new huangrongdao_jButton3_actionAdapter(this));
    jButton4.setBounds(new Rectangle(387, 276, 100, 43));
    jButton4.setText("退出程序");
    jButton4.addActionListener(new huangrongdao_jButton4_actionAdapter(this));
    caocao.addActionListener(new huangrongdao_caocao_actionAdapter(this));
    guanyu.addActionListener(new huangrongdao_guanyu_actionAdapter(this));
    zhangfei.addActionListener(new huangrongdao_zhangfei_actionAdapter(this));
    zhaoyun.addActionListener(new huangrongdao_zhaoyun_actionAdapter(this));
    huangzhong.addActionListener(new huangrongdao_huangzhong_actionAdapter(this));
    machao.addActionListener(new huangrongdao_machao_actionAdapter(this));
    zu1.addActionListener(new huangrongdao_zu1_actionAdapter(thi