宇式情歌宇迷天地□→『一言难尽』 → [分享]走迷宫,走不出去的回贴

每周日晚张宇主持《综艺大满贯》 EP《Back to 张宇》在线试听 情有独钟(宇影宇音)版区更新多个影音在线、下载

  共有1578人关注过本帖树形打印

主题:[分享]走迷宫,走不出去的回贴

帅哥哟,离线,有人找我吗?
回頭太難
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 别说我没爱过
等级:钻石级宇迷 帖子:3000 积分:6603 威望:0 精华:9 金币:46 注册:2004-07-10 15:07:04
[分享]走迷宫,走不出去的回贴  发帖心情 Post By:2004-12-11 18:51:04



━━━━━━━━●●━━  

    ゛ 秃废嘚裱情〢.﹎ミ  

     ·黯淡嘚芯绪﹎.o..  

      . ● 佣桖洗礼 ●  .  

    .  苚灵魂祭奠.°  

    ﹎原莱堕落着麽荣易﹎  

      ━━●●━━━━━━━━

张宇演唱会在线观看 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
天天
  2楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:技术顾问 帖子:1191 积分:5701 威望:7 精华:10 金币:150 注册:2003-02-15 21:14:42
  发帖心情 Post By:2004-12-12 22:29:09

好密啊


招募论坛版主,诚邀有责任心的你加入 支持(0中立(0反对(0回到顶部
美女呀,离线,留言给我吧!
宇婷
  3楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 愛宇直到海枯石爛
等级:管理员 帖子:8446 积分:15070 威望:36 精华:20 金币:32 注册:2003-01-23 13:38:36
  发帖心情 Post By:2004-12-13 10:49:39

這麼密,恐怕要走很久吧?...

老娘才沒那個時間在這瞎磨蹭!!...



宇 無論你心情好或不好 請切記

無論你有多麼累 壓力多麼大 心情多麼沮喪或難過

我的心 永遠陪伴著你 永遠支持著你 直到地球毀滅

愛你的 ~婷婷&小婷~             筆

招募论坛版主,诚邀有责任心的你加入 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
回頭太難
  4楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 别说我没爱过
等级:钻石级宇迷 帖子:3000 积分:6603 威望:0 精华:9 金币:46 注册:2004-07-10 15:07:04
  发帖心情 Post By:2004-12-13 11:07:26

你就说你笨,别的啥也别说了



━━━━━━━━●●━━  

    ゛ 秃废嘚裱情〢.﹎ミ  

     ·黯淡嘚芯绪﹎.o..  

      . ● 佣桖洗礼 ●  .  

    .  苚灵魂祭奠.°  

    ﹎原莱堕落着麽荣易﹎  

      ━━●●━━━━━━━━

张宇主持湖北卫视《综艺大满贯》,播出时间每周日晚7点35分 支持(0中立(0反对(0回到顶部
美女呀,离线,留言给我吧!
宇婷
  5楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 愛宇直到海枯石爛
等级:管理员 帖子:8446 积分:15070 威望:36 精华:20 金币:32 注册:2003-01-23 13:38:36
  发帖心情 Post By:2004-12-13 11:14:19

你才笨咧!傻子...

你以為老娘我很閑啊??.....

老娘我忙的狠,沒空玩迷宮.....

最近一直寫字,寫到我的手真是痛的要命,我得在去敷個熱水了!!....

沒空跟你閒聊!!.....



宇 無論你心情好或不好 請切記

無論你有多麼累 壓力多麼大 心情多麼沮喪或難過

我的心 永遠陪伴著你 永遠支持著你 直到地球毀滅

愛你的 ~婷婷&小婷~             筆

EP《Back to 张宇》在线试听 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
回頭太難
  6楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 别说我没爱过
等级:钻石级宇迷 帖子:3000 积分:6603 威望:0 精华:9 金币:46 注册:2004-07-10 15:07:04
  发帖心情 Post By:2004-12-13 12:14:23

可省了吧,你会写字呀?你会写字,那大象都能跳把蕾了



━━━━━━━━●●━━  

    ゛ 秃废嘚裱情〢.﹎ミ  

     ·黯淡嘚芯绪﹎.o..  

      . ● 佣桖洗礼 ●  .  

    .  苚灵魂祭奠.°  

    ﹎原莱堕落着麽荣易﹎  

      ━━●●━━━━━━━━

EP《Back to 张宇》在线试听 支持(0中立(0反对(0回到顶部
美女呀,离线,留言给我吧!
张思宇
  7楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 程式肉夾饃
等级:白金级宇迷 帖子:1422 积分:2065 威望:0 精华:0 金币:0 注册:2003-08-09 13:48:07
  发帖心情 Post By:2004-12-13 14:46:18

眼花花

哥哥

我 就不走了~~~

好伐



大衣上你殘留的味道已經揮發。

桌上咖啡只剩下微溫

陽光還在,影子卻已經消失。

過了那麼久,

你還記得愛情的味道嗎?

张宇演唱会在线观看 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
不爽先生
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 A组组长
等级:版主 帖子:2297 积分:7313 威望:1 精华:0 金币:0 注册:2004-07-27 18:06:26
  发帖心情 Post By:2004-12-13 17:11:06

外星人都走不出去


         飞花飘雪荏苒中,用心良苦却成空。

               A组:4747417

张宇演唱会在线观看 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
天天
  9楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:技术顾问 帖子:1191 积分:5701 威望:7 精华:10 金币:150 注册:2003-02-15 21:14:42
[]  发帖心情 Post By:2004-12-14 20:29:47

我花了一晚上的时间,再参考了网上的一些相关资料,编程解决了这个问题

所用工具:Adobe PhotoShop,Microsoft Visual Basic 6.0

分析可得,迷宫主体部分只有两种颜色,黑和白,显然黑色代表障碍。首先用Photoshop剪切掉迷宫图周围的空白,只剩下中间的主体部分,便于编程读取图片中每一个像素的颜色。 然后再进行编程。大致思路如下: 读取图片,用0和1记录迷宫信息,0代表此点可通,1代表此点不通(障碍或边界)。显然我们的目的是找到一条从开始点到结束点之间的路线,这条路线上的每一点都要是0。从开始点开始按照右,上,左,下的顺序搜索下一点,直到发现下一点是通路而且未曾到过或发现四方均不通(死路)。若找到通路,则移动到找到的下一点;若是死路,则退回去,重新搜索。如此这般循环下去,直到“下一点”是目的地。 保存结果。

在程序中所有尝试的步数(即包含走过的“冤枉路”):21570 成功走出迷宫的最短步数:1781

代码如下:

Option Explicit

'模拟C++中的堆栈,成功走出迷宫的路径 Dim Path(10000) As Point '路径中的当前索引 Dim CurrentIndex As Integer '迷宫矩阵,或迷宫坐标。0代表通且未到过;1代表不通(有障碍); '2 代表通且曾到过;3 代成功走出迷宫的路径点 Dim MazeLab(-1 To 601, -1 To 401) As Integer '走出迷宫需要的步数 Dim TotleStep As Integer '自定义点类型 Private Type Point X As Integer Y As Integer End Type

Private Sub Command1_Click() Dim i As Integer Dim j As Integer Dim DataStr As String Dim FileName As String Dim tmp As String Dim tmpInt As Integer 'VB中的白色所代表的数值 Const WhiteColorNum As Long = 256& * 256 * 256 - 1 Command1.Enabled = False '保存迷宫矩阵所建立的文本文档 FileName = App.Path & "\data.txt" Open FileName For Output As 1 '打开文件 Label1.Caption = "正在读取图片像素,可能需要几秒的时间,请稍候..." '以下几行,循环读取迷宫图片中的每个像素颜色 'WhiteColorNum代表白色 For i = 0 To 400 DataStr = "" For j = 0 To 600 If Picture1.Point(j, i) = WhiteColorNum Then tmp = "□" Else tmp = "■" If Picture1.Point(j, i) = WhiteColorNum Then tmpInt = 0 Else tmpInt = 1 MazeLab(j, i) = tmpInt DataStr = DataStr & tmp Next Print #1, DataStr Next Close #1 Label1.Caption = "" MsgBox "生成成功,请查看" & FileName Search '搜索能走出迷宫的路径 Command2.Enabled = True End Sub

Private Sub Command3_Click() '把结果以位图形式保存到磁盘 Dim FileName As String FileName = App.Path & "\output.bmp" SavePicture Picture1.Image, FileName MsgBox "保存成功,请查看" & FileName End Sub

Private Sub Form_Load() '窗体初始化 Picture1.Width = 610 * Screen.TwipsPerPixelX Picture1.Height = 410 * Screen.TwipsPerPixelY Me.Width = 700 * Screen.TwipsPerPixelX Me.Height = 550 * Screen.TwipsPerPixelY '加载迷宫图片 Picture1.Picture = LoadPicture(App.Path & "\source.bmp") End Sub

Public Sub Search() '关键函数,寻找迷宫出路 Dim CurX As Integer Dim CurY As Integer Dim i As Integer CurrentIndex = 1 Path(1).X = 0 '迷宫入口点横坐标 Path(1).Y = 200 '迷宫入口点纵坐标 '以下6行是在迷宫的外圈砌一道虚拟的墙,防止越界 For i = -1 To 401 MazeLab(-1, i) = 1 Next For i = -1 To 601 MazeLab(i, -1) = 1 Next '关键循环。搜索能走通的路径,直到走到终点 While Not (CurX = 600 And CurY = 200) CurX = Path(CurrentIndex).X CurY = Path(CurrentIndex).Y '如果当前点右边的点可通且“未来过”(数值0),则…… If MazeLab(CurX + 1, CurY) = 0 Then '向右走 '路径中的下一点横坐标等于当前坐标值加一 Path(CurrentIndex + 1).X = CurX + 1 Path(CurrentIndex + 1).Y = CurY '将当前点设置为“已经来过”(数值2) MazeLab(CurX + 1, CurY) = 2 ElseIf MazeLab(CurX, CurY - 1) = 0 Then '向上走 Path(CurrentIndex + 1).X = CurX Path(CurrentIndex + 1).Y = CurY - 1 MazeLab(CurX, CurY - 1) = 2 ElseIf MazeLab(CurX, CurY + 1) = 0 Then '向下走 Path(CurrentIndex + 1).X = CurX Path(CurrentIndex + 1).Y = CurY + 1 MazeLab(CurX, CurY + 1) = 2 ElseIf MazeLab(CurX - 1, CurY) = 0 Then '向左走 Path(CurrentIndex + 1).X = CurX - 1 Path(CurrentIndex + 1).Y = CurY MazeLab(CurX - 1, CurY) = 2 Else '假如向右、上、下、左等走不通,则退回路径的上一点 CurrentIndex = CurrentIndex - 2 End If CurrentIndex = CurrentIndex + 1 Wend TotleStep = CurrentIndex OutputData '输出结果到文本文档 End Sub

Public Sub OutputData() '将结果以文本数据的形式保存到磁盘 Dim i As Integer Dim j As Integer Dim FileName As String '以下循环将结果路径经过的点状态设置为3 For i = 1 To TotleStep - 2 MazeLab(Path(i).X, Path(i).Y) = 3 Next Dim DataStr As String Dim CurStr As String FileName = App.Path & "\data2.txt" Picture1.Refresh Open FileName For Output As 2 For i = 0 To 400 DataStr = "" For j = 1 To 600 Select Case MazeLab(j, i) Case 0 '该点无障碍且从未到过 CurStr = "□" Case 1 '该点有障碍 CurStr = "■" Case 3 '结果路径!! CurStr = "★" Case 2 '该点无障碍且曾到过 CurStr = "☆" End Select DataStr = DataStr & CurStr Next Print #2, DataStr Next Close #2 End Sub

Private Sub Command2_Click() '绘制结果图 Dim i As Integer Dim j As Integer Picture1.Picture = LoadPicture Picture1.Cls Picture1.AutoRedraw = True For i = 0 To 400 For j = 0 To 600 Select Case MazeLab(j, i) Case 0 Picture1.PSet (j, i), vbWhite Case 1 Picture1.PSet (j, i), vbBlack Case 3 Picture1.PSet (j, i), vbBlue Case 2 Picture1.PSet (j, i), vbWhite End Select Next Next Picture1.AutoRedraw = False End Sub


招募论坛版主,诚邀有责任心的你加入 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
天天
  10楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:技术顾问 帖子:1191 积分:5701 威望:7 精华:10 金币:150 注册:2003-02-15 21:14:42
[]  发帖心情 Post By:2004-12-14 20:47:52

程序运行后所生成的结果如下(修改成了GIF格式):


图片点击可在新窗口打开查看此主题相关图片如下:
图片点击可在新窗口打开查看

主体部分601*401像素,可利用Photoshop,ACDSee等图象处理软件放大观看

也可在下面附件中观看用文本文档存储的迷宫“数字”信息

附件(限期删除):迷宫数据矩阵,结果的图片形式及ASCII文本形式,VB源代码,可执行文件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:

招募论坛版主,诚邀有责任心的你加入 支持(0中立(0反对(0回到顶部