`
zhaoyangjay
  • 浏览: 4503 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Swing写的老鼠走迷宫游戏,mvc含最佳路径算法

阅读更多

 

 如图:

寻找路径关键代码:堆栈实现非递归实现的最佳路径算法。

package maze;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class PathFinder
{
	private final Log log = LogFactory.getLog(getClass());
    private maze.GameMap map=null;
    private int[][]  array=new int[8][8];;
    public final static int LOAD_PATH=50;
    public final static int div_BEGAIN=100;
    public PathFinder(GameMap map)
    {
        this.map=map;
        //copy地图数据到自己的数组中去
        for (int i = 0; i < 8; i++) 
        {
            for (int j = 0; j < 8; j++)
            {
                array[i][j]=map.arr[i][j];
            }
        }
    }
    /**
     * 从起点出发递归涂颜色给能够到达的通道填上数值,以100为基数。
     * 比如如果被填上107就说明距离起点7最短可以到达。
     * @param x
     * @param y
     * @param div
     */
    
    public void render(int x,int y,int div)
    {
        System.out.println(x+"__"+y+"__"+div);
    	log.info("渲染坐标"+x+"__"+y+"__"+"层次"+div);
       //如果填到终点回退。
        if(x==7&&y==7)
        {
            array[y][x]=div;
            return; 
        }
            
        //没有越界就填值
        if(x>=0&&y>=0&&x<=map.arr.length-1&&y<=map.arr.length-1&&array[y][x]!=map.BLOCK)
        {
            
                array[y][x]=div;
        }
        
        // down
        if(y+1<=map.arr.length-1&&array[y+1][x]!=map.BLOCK)
        {
            if(array[y+1][x]>(div+1)||array[y+1][x]<100)
            render(x,y+1,div+1);
        }
        //left 
        if(x-1>=0&&array[y][x-1]!=map.BLOCK)
        {
            if(array[y][x-1]>(div+1)||array[y][x-1]<100)
            render(x-1,y,div+1);
        }
        //right
         if(x+1<=map.arr.length-1&&array[y][x+1]!=map.BLOCK)
        {
             if(array[y][x+1]>(div+1)||array[y][x+1]<100)
            render(x+1,y,div+1);
        }
         //up
        if(y-1>=0&&array[y-1][x]!=map.BLOCK)
        {
            if(array[y-1][x]>(div+1)||array[y-1][x]<100)
            render(x,y-1,div+1);
        }
    }
    
    /***
     * 从终点出发寻找到起点的路径,非递归实现,以堆栈作为数据结构。
     * @return
     */
    public List<Point> FindPath()
    {
    	render(0, 0, this.div_BEGAIN);
    	
    	Stack<Point> stack=new Stack<Point>();
    	List<Point> list=new ArrayList<Point>();
    	stack.add(new Point(7,7));
    	while(!stack.empty())
    	{
    		Point p=stack.pop();
    		int value=this.array[p.getY()][p.getX()];
    		//left
    		if(p.getX()-1>=0&&array[p.getY()][p.getX()-1]==(value-1))
    		{
    			stack.push(new Point(p.getX()-1,p.getY()));
    			list.add(new Point(p.getX()-1,p.getY()));
    		}
    		//right
    		if(p.getX()+1<map.arr.length&&array[p.getY()][p.getX()+1]==(value-1))
    		{
    			stack.push(new Point(p.getX()+1,p.getY()));
    			list.add(new Point(p.getX()+1,p.getY()));
    		}
    		//up
    		if(p.getY()-1>=0&&array[p.getY()-1][p.getX()]==(value-1))
    		{
    			stack.push(new Point(p.getX(),p.getY()-1));
    			list.add(new Point(p.getX(),p.getY()-1));
    		}
    		//down
    		if(p.getY()+1<map.arr.length&&array[p.getY()+1][p.getX()]==(value-1))
    		{
    			stack.push(new Point(p.getX(),p.getY()+1));
    			list.add(new Point(p.getX(),p.getY()+1));
    		}
    	}
    	return list;
    }
}

 

实习期间写的小程序,没别的意思,只是不想把代码放到发霉,欢迎拍砖。

代码在附近里面。自行加个日志jar包就可以运行。

 

 

  • 大小: 44.1 KB
3
0
分享到:
评论
2 楼 武安y 2014-06-20  
kANKAN
1 楼 pywepe 2011-05-17  
我都用log4j

相关推荐

    数据结构课设-老鼠走迷宫游戏-java-swing

    在本项目"数据结构课设-老鼠走迷宫游戏-java-swing"中,开发者通过Java Swing构建了一个基于数据结构的游戏,让玩家控制一只老鼠在迷宫中寻找出路,同时还要避开猫的追捕并收集道具。这个项目展示了如何将编程理论与...

    Java Swing 小游戏 迷宫

    迷宫游戏的核心算法是设计和生成迷宫以及解决路径查找问题。这通常涉及数据结构,如二维数组或链表,来表示迷宫的墙壁和空地。生成迷宫的方法可能包括深度优先搜索(DFS)或广度优先搜索(BFS),而解决路径问题则...

    我写的老鼠走迷宫程序 很好用

    在编程领域,设计一个“老鼠走迷宫程序”是一个经典的算法问题,通常涉及到路径搜索、图论和数据结构等核心概念。这样的程序可以帮助我们理解如何让计算机模拟智能决策过程,解决实际生活中的寻路问题。下面,我们将...

    用swing做的迷宫小游戏

    用swing制作简单的迷宫小游戏,200多行代码,空格键可以显示路径

    Java课程设计基于Java Swing的老鼠迷宫小游戏源代码

    Java课程设计基于Java Swing的老鼠迷宫小游戏源代码

    基于SWING的可视化迷宫算法

    **基于SWING的可视化迷宫算法** 在计算机科学领域,数据结构和算法是核心课程,而迷宫算法作为其中的一部分,常被用来教授基础的路径寻找和问题解决策略。本项目利用Java的SWING库来实现一个可视化的迷宫求解器,...

    auto_order.rar_JAVA Swing mvc_mvc java swing_swing mvc_swing mvc

    标签"java_swing_mvc mvc_java_swing swing_mvc swing_mvc_de"进一步强调了主题,涵盖了Java Swing与MVC模式的结合,以及可能涉及的解构(decomposition)过程,这是将MVC模式应用到代码中的关键步骤。 在压缩包的...

    用Java swing写的魔板小游戏.zip

    用Java swing写的魔板小游戏.zip用Java swing写的魔板小游戏.zip 用Java swing写的魔板小游戏.zip用Java swing写的魔板小游戏.zip 用Java swing写的魔板小游戏.zip用Java swing写的魔板小游戏.zip 用Java swing写的...

    java的课程作业,用swing写一个小游戏.zip

    java的课程作业,用swing写一个小游戏.zipjava的课程作业,用swing写一个小游戏.zip java的课程作业,用swing写一个小游戏.zipjava的课程作业,用swing写一个小游戏.zip java的课程作业,用swing写一个小游戏.zip...

    java课程设计-走迷宫

    4. **游戏逻辑与算法**:实现走迷宫的核心算法是关键,可以采用深度优先搜索(DFS)或广度优先搜索(BFS)等路径查找算法。玩家在迷宫中移动,需要检测当前位置是否合法,以及如何找到下一个可移动的位置。 5. **数据...

    Swing MVC 代码示例

    Swing MVC(Model-View-Controller)是一种设计模式,它被广泛应用于图形用户界面(GUI)开发,包括Java Swing框架。在Swing中,MVC模式帮助开发者将应用程序的逻辑分解为三个相互独立的部分,从而提高代码的可读性...

    Java Swing MVC使用.rar

    Java Swing MVC 使用详解 在Java编程领域,Swing是一个用于构建桌面应用程序的图形用户界面(GUI)工具包,它是Java Foundation Classes(JFC)的一部分。而Model-View-Controller(MVC)是一种软件设计模式,它有...

    Java 走迷宫

    【Java 走迷宫】是一款使用Java编程语言开发的小型游戏,它具有图形用户界面(GUI),允许玩家通过键盘操作来控制角色在迷宫中寻找出路。这个游戏展示了Java在图形化编程和算法设计方面的应用。 一、Java GUI编程...

    Swing桌面小游戏,涉及MVC、Facade、Builder、策略、责任链等开发模式

    在本项目中,开发者利用Java Swing库创建了一个桌面小游戏,同时融入了多种设计模式,包括MVC(模型-视图-控制器)、Facade(门面模式)、Builder(建造者模式)、策略模式以及责任链模式。这些设计模式的运用使得...

    迷宫趣味游戏

    游戏中可能使用了Java的图形用户界面(GUI)库,如JavaFX或Swing,来创建交互式的迷宫地图。同时,Java的面向对象特性使得代码结构清晰,易于维护,适合开发这样的游戏项目。 此外,游戏的可玩性不仅在于自动求解,...

    swing中mvc模式

    在Swing中,MVC模式被巧妙地融入到各个组件中,以实现组件的功能和可定制性。 **模型(Model)** 模型是应用程序的核心,负责处理数据和业务逻辑。在Swing中,JTable、JList等组件有自己的模型类,如...

    迷宫问题 java swing

    迷宫问题是一种经典的计算机科学问题,涉及到路径搜索和算法设计。在本项目中,我们将使用Java Swing作为图形用户界面(GUI)工具包,来实现一个可视化的迷宫求解器。Java Swing是Java Foundation Classes(JFC)的...

    Java Swing组件写的游戏客户端.zip

    Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端...

Global site tag (gtag.js) - Google Analytics