说明
老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。
解法
老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看代码应就可以理解。
class Point
attr_accessor :x,:y
def initialize(x,y)
@x=x
@y=y
end
end
class Maze
def initialize(maze,end_1)
@maze=maze
@end=end_1
end
def isArrived
@maze[@end.x][@end.y]==1
end
def isEmpty(p)
@maze[p.x][p.y]==0
end
def step(p)
@maze[p.x][p.y]=1
end
def empty(p)
@maze[p.x][p.y]=0
end
def print_p
unless @maze.length
exit
end
for i in 0..@maze..length
for j in 0..@maze[0]..length
if @maze[i][j]==2
print "█"
elsif @maze[i][j]==1
print "◇"
else
print " "
end
end
print "\n"
end
end
end
class Mouse
# def initialize(maze,p)
# @maze=maze
# @p=p
# end
def self.go(maze,p)
maze.step(p)
self.test(maze,Point.new(p.x,p.y+1))
self.test(maze,Point.new(p.x+1,p.y))
self.test(maze,Point.new(p.x,p.y-1))
self.test(maze,Point.new(p.x-1,p.y))
if !maze.isArrived
maze.empty(p)
end
end
def self.test(maze,p)
if !maze.isArrived and maze.isEmpty(p)
self.go(maze,p)
end
end
end
@maze= Maze.new(Array[
Array[2, 2, 2, 2, 2, 2, 2],
Array[2, 0, 0, 0, 0, 0, 2],
Array[2, 0, 2, 0, 2, 0, 2],
Array[2, 0, 0, 2, 0, 2, 2],
Array[2, 2, 0, 2, 0, 2, 2],
Array[2, 0, 0, 0, 0, 0, 2],
Array[2, 2, 2, 2, 2, 2, 2]
], Point.new(5, 5))
Mouse.go(@maze,Point.new(1,1))
if(!@maze.isArrived)
println("沒找到出口")
end
@maze.print_p
分享到:
相关推荐
利用C++实现老鼠走迷宫的模拟并输出老鼠走过的路径
用c++写出来的老鼠走迷宫,添加bmp图片模拟老鼠走迷宫,主要是针对数据结构课程设计专用,里面的所有源码完美运行,保证课设通过,私藏很久的文档,太珍贵了所以不敢删除,分享给学弟学妹们用,如果觉得好就给个赞呗
老鼠走迷宫的程序
老鼠走迷宫,用数组跌打计算。 老鼠走迷宫,用数组跌打计算。
老鼠走迷宫源程序 (C#实现有图形界面还可加载地图) 自己写的 写了2天 运行时 先阅读 Readme。txt C# 大作业
vc6编译器编译,C语言写的代码,老鼠走迷宫,用广度优先的寻找最短的路径算法,遍历全部路径使用的是深度算法。完整代码可直接下载调试运行。
3D小老鼠走迷宫,课程设计时做的,用D3D做的,进入游戏后有简单的说明,用3DMAX建模,然后导入模型到程序中。
有趣的一个游戏 小老鼠走迷宫 用C语言写的
基于ARM7的老鼠走迷宫的游戏设计 代码部分 程序齐全 能运行
这是一个用栈的操作实现的老鼠走迷宫的游戏,充分实现了栈的出入操作。
数据结构经典算法他全 如 河内之塔 三色旗 老鼠走迷宫 八皇后等等
由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? (可先下载我上传的《C经典算法之老鼠走迷宫(一)》看,然后再看这个)
qt实现老鼠走迷宫游戏(迷宫生成算法、深度优先、广度优先寻路算法)
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。 设计要求: (1)老鼠形象可辨认,可用键盘操纵老鼠上下左右...
自己写的数据结构,关于老鼠走迷宫的,写的不是很好,希望大家理解哈
【原创】小老鼠走迷宫算法的java实现,具体的分析在我的csdn blog中有详细说明。
走迷宫 程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。 要求: 1老鼠形象可辨认,可用键盘操纵老鼠上下左右移动...
随机生成迷宫,可以在里面加老鼠和猫。老鼠采用深度优先走迷宫。猫会捉老鼠。有碰撞检测
老鼠走迷老鼠走迷宫宫老鼠走迷宫老鼠走迷宫老鼠走迷宫