`
googya
  • 浏览: 144106 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

老鼠走迷宫

阅读更多
说明
老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用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

0
0
分享到:
评论

相关推荐

    老鼠走迷宫C++

    【标题】"老鼠走迷宫C++"是一个编程项目,主要目标是使用C++语言来模拟老鼠在迷宫中寻找出路的过程,并可视化显示老鼠走过的路径。这个项目可以帮助学习者深入理解C++编程语言,同时涉及到算法设计和数据结构的应用...

    老鼠走迷宫之数据结构课程设计

    用c++写出来的老鼠走迷宫,添加bmp图片模拟老鼠走迷宫,主要是针对数据结构课程设计专用,里面的所有源码完美运行,保证课设通过,私藏很久的文档,太珍贵了所以不敢删除,分享给学弟学妹们用,如果觉得好就给个赞呗

    老鼠走迷宫源程序(C#实现有图形界面还可加载地图)

    该压缩包包含一个基于C#实现的老鼠走迷宫程序,具有图形用户界面,并且支持加载自定义地图。这个项目可以被看作是C#编程、算法和数据结构的实践应用,尤其对于初学者来说,这是一个很好的学习资源。 首先,我们要...

    老鼠走迷宫的程序

    在程序设计中,我们可以采用深度优先搜索(DFS)或广度优先搜索(BFS)算法来解决老鼠走迷宫的问题。DFS会尽可能深地探索迷宫的分支,直到找到出口或者回溯到死胡同;BFS则从起点开始,逐层扩展,确保找到的路径是最短的...

    3D小老鼠走迷宫

    《3D小老鼠走迷宫》是一款基于Direct3D(简称D3D)技术开发的三维游戏,适用于课程设计教学目的。在这个游戏中,玩家将控制一个3D渲染的小老鼠在精心设计的迷宫中寻找出路。游戏的核心在于利用3D图形技术为玩家提供...

    小老鼠走迷宫 游戏程序

    《小老鼠走迷宫:C语言实现的游戏程序详解》 在计算机编程的世界里,游戏程序设计始终是一个引人入胜的领域,它结合了逻辑思维、算法设计与趣味性。今天我们将深入探讨一款名为“小老鼠走迷宫”的游戏程序,它完全...

    JAVA 迷宫算法——老鼠走迷宫

    老鼠走迷宫,用数组跌打计算。 老鼠走迷宫,用数组跌打计算。

    老鼠走迷宫游戏

    《老鼠走迷宫游戏》是一款基于迷宫路径搜索算法的游戏,玩家可以操控老鼠在随机生成的迷宫中寻找出路,同时还要避开猫的追逐。在这个游戏中,深度优先搜索(DFS)算法被用来解决老鼠如何有效地在迷宫中移动。下面...

    老鼠走迷宫(C++)

    标题中的“老鼠走迷宫(C++)”指的是一个编程挑战,它要求使用C++语言实现一个算法,模拟老鼠在迷宫中寻找出路的过程。这个挑战通常涉及到深度优先搜索(DFS)、广度优先搜索(BFS)或者A*寻路算法等路径查找策略。 在...

    老鼠走迷宫(迷宫问题求解)

    简单的老鼠走迷宫问题的求解!望提供一点分享 !

    数据结构课程设计:老鼠走迷宫

    数据结构课程设计中,"老鼠走迷宫"是一个经典的实践项目,它涉及到计算机科学中的算法设计和数据结构应用。在这个项目中,我们通常使用二维数组来表示迷宫,堆栈作为辅助数据结构来实现老鼠的路径寻找。接下来,我们...

    C语言-老鼠走迷宫(广度优先寻路算法)vc6编译

    vc6编译器编译,C语言写的代码,老鼠走迷宫,用广度优先的寻找最短的路径算法,遍历全部路径使用的是深度算法。完整代码可直接下载调试运行。

    qt实现老鼠走迷宫游戏(数据结构课设)

    在本文中,我们将深入探讨如何使用Qt框架和C++编程语言来实现一个老鼠走迷宫的游戏,这通常是一项数据结构课程设计项目。我们将重点关注迷宫生成算法和两种寻路算法:深度优先搜索(DFS)与广度优先搜索(BFS)。让...

    基于ARM7的老鼠走迷宫的游戏设计

    在本文中,我们将深入探讨如何设计一个基于ARM7架构的老鼠走迷宫游戏。ARM7是一种广泛应用的微处理器内核,常用于嵌入式系统,因其低功耗、高性能而备受青睐。在这个游戏设计中,我们将关注以下几个关键知识点: 1....

    C++语言的老鼠走迷宫

    在编程领域,老鼠走迷宫问题是一个经典的图论与数据结构问题,通常用来演示和学习如何使用栈(Stack)这一数据结构来解决实际问题。在这个问题中,我们假设有一只老鼠在一个迷宫中,需要找到从起点到终点的最短路径...

    老鼠走迷宫课程设计C++11,无STL

    该课程设计项目是基于C++11编程语言实现的一个“老鼠走迷宫”问题,它不依赖于标准模板库(STL)。这个程序的主要目的是通过广度优先搜索(BFS)算法来解决老鼠如何从起点到达终点的问题。下面将详细阐述相关知识点...

    老鼠走迷宫(c++)

    这是一个用栈的操作实现的老鼠走迷宫的游戏,充分实现了栈的出入操作。

    数据结构经典算法大全 如 河内之塔 三色旗 老鼠走迷宫

    数据结构经典算法他全 如 河内之塔 三色旗 老鼠走迷宫 八皇后等等

Global site tag (gtag.js) - Google Analytics