public class DeepPri extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
private int gap=100;
private int width=25;
public DeepPri(){
getContentPane().setBackground(Color.gray);
setVisible(true);
setSize(800,800);
setResizable(false);
setCenter();
}
public void setCenter(){
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension d=kit.getScreenSize();
int wid=(int) d.getWidth();
int hei=(int) d.getHeight();
this.setLocation((wid-getWidth())/2, (hei-getHeight())/2);
}
@Override
public void paint(Graphics g){
super.paint(g);
int w=getWidth();
int length=w-2*gap;
for(int i=0;i<length/width+1;i++){
g.setColor(Color.green);
g.drawLine(gap+i*width, gap, gap+i*width, gap+length);
g.drawLine(gap, gap+i*width, gap+length, gap+i*width);
}
generateMaze();
}
public void generateMaze(){
Point currentPoint=new Point(gap,gap);
Stack<Point> route=new Stack<Point>();
List<Point> havePassed=new ArrayList<Point>();
route.add(currentPoint);
havePassed.add(currentPoint);
Color color=getContentPane().getBackground();
Graphics g=getGraphics();
g.setColor(color);
int w=getWidth();
g.drawLine(gap, gap, gap, gap+width);
g.drawLine(w-gap, w-gap, w-gap, w-gap-width);
//look for next point
while(true){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
int x=(int)currentPoint.getX();
int y=(int)currentPoint.getY();
int endX=getWidth()-gap;
int endY=getHeight()-gap;
List<Integer> list=new ArrayList<Integer>();
if(x+width<endX&&!havePassed.contains(new Point(x+width,y)))
list.add(1);
if(y+width<endY&&!havePassed.contains(new Point(x,y+width)))
list.add(2);
if(x-width>=gap&&!havePassed.contains(new Point(x-width,y)))
list.add(3);
if(y-width>=gap&&!havePassed.contains(new Point(x,y-width)))
list.add(4);
if(list.size()==0){
currentPoint =route.pop();
if(currentPoint.getX()==gap&¤tPoint.getY()==gap){
System.out.println("get out");
break;
}
continue;
}
int s = list.get(new Random().nextInt(list.size()));
switch(s){
case 1:g.drawLine(x+width, y+1, x+width, y+width-1);currentPoint=new Point(x+width,y);break;
case 2:g.drawLine(x+1, width+y, x+width-1, y+width);currentPoint=new Point(x,y+width);break;
case 3:g.drawLine(x,y+1,x,y+width-1);currentPoint=new Point(x-width,y);break;
case 4:g.drawLine(x+1, y, x+width-1, y);currentPoint=new Point(x,y-width);break;
default: break;
}
havePassed.add(currentPoint);
route.add(currentPoint);
}
}
/* public void crossMaze(){
Point p=new Point(gap,gap);
Graphics g=getGraphics();
}*/
public static void main(String[] args) {
DeepPri dp=new DeepPri();
dp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
- 浏览: 24804 次
相关推荐
标题中的“一个简单的java迷宫生成程序”表明我们要讨论的是一个使用Java编程语言实现的算法,该算法用于创建迷宫。迷宫生成是计算机图形学和算法设计的一个有趣领域,通常涉及深度优先搜索(DFS)或Prim算法等方法...
【原创】Java迷宫生成器是一个使用Java编程语言编写的程序,它的主要功能是自动生成迷宫。迷宫生成器通常包含算法设计和图形界面展示两大部分。在这个项目中,开发者利用了名为SimpleCanvas.java的类来实现图形界面...
在本项目中,"【原创】Java迷宫生成器升级版"是一个基于Java实现的迷宫生成软件,相比之前的版本,增加了迷宫生成过程的可视化动画效果,使得用户能够直观地观察到迷宫的生成过程。这个升级版的迷宫生成器主要涉及到...
【JAVA迷宫生成路径查找源码.zip】是一个包含JAVA编程语言实现的迷宫生成和路径查找算法的项目压缩包。这个项目可能是一个教学资源或学习示例,旨在帮助开发者理解和实践如何在Java环境中构建这样的算法。以下是这个...
总的来说,这个简单的Java迷宫生成代码提供了一个基础的DFS实现,适用于学习和理解迷宫生成的算法。通过对`InitMaze.java`和`MazePoint.java`的分析和实践,开发者可以深化对数据结构、递归以及图遍历的理解。
JAVA迷宫生成路径查找源码 源码描述: 一、源码介绍 Java做的迷宫游戏,可以制动随机生成迷宫,也可以制动寻找最短路径 二、主要功能 ,可以制动随机生成迷宫,也可以制动寻找最短路径. 三、注意事项 开发环境为...
java课程设计项目——Java语言编写的一个迷宫小游戏(源码+详细说明文档)java课程设计项目——Java语言编写的一个迷宫小游戏(源码+详细说明文档)java课程设计项目——Java语言编写的一个迷宫小游戏(源码+详细...
Java语言在游戏开发和算法实现中常常被用来创建各种有趣的应用,其中之一就是迷宫生成与解谜。在这个项目中,我们将深入探讨如何使用Java来实现一个迷宫的随机生成以及自动寻找路径的方法,同时会涉及树的深度遍历这...
**MazeJen** 是一个基于Java开发的开源迷宫生成器项目,它为用户提供了一种有趣的方式来创建和探索各种复杂的迷宫结构。这个工具利用了深度优先搜索(DFS)算法来生成迷宫,这是一种在图论和计算机科学中常用的算法...
使用时得在同一文件目录下放一张sbb.jpg的图片
在本文中,我们将深入探讨如何使用Java编程语言创建一个迷宫游戏。...通过学习和理解这些基本概念,你可以进一步完善这个Java迷宫游戏,增加更多特性,如多级难度、计时功能、动态迷宫生成等,从而提升游戏体验。
【Java多线程迷宫生成程序】是一种利用Java编程语言实现的、基于多线程技术的动态迷宫生成示例。这个小程序展示了如何在计算机图形学中应用多线程来实时生成随机迷宫,同时也提供了视觉动画效果,使得观察迷宫生成的...
Java迷宫课程设计是一项常见的编程练习,旨在帮助初学者掌握Java编程语言以及图形用户界面(GUI)开发。在这个项目中,我们使用了JavaFX库来创建用户界面,它是一个强大的工具,提供了丰富的功能来构建现代、动态的...
java实现随机迷宫生成、走迷宫小游戏的完整代码,初始化迷宫生成,按下空格为系统提示,上下左右控制移动。本实例需要从 .txt 文件中读取迷宫并绘制。 本程序适用于java程序员巩固类与对象、文件读取、事件响应、...
java迷宫自动生成与寻找路径。 可以设置迷宫大小,最大为50,最小为5。 按make为自动绘制迷宫,find为寻找路径。 使用递归、随机方向的方式生成迷宫,位操作来设置上下左右的墙。 文件包括源码与jar运行程序。
分成算法部分和界面部分,算法部分涉及到迷宫生成算法,深度优先,广度优先,运用了栈和队列等容器。界面部分采用javafx实现。有显示迷宫路线,更改迷宫大小,展示迷宫解谜动画过程。用户还可通过键盘控制史莱姆解谜...
本主题将深入探讨使用Java实现的基于深度优先搜索(DFS)和广度优先搜索(BFS)的迷宫生成与游戏玩法。这两种算法都是解决迷宫问题的有效工具,各有其特点和适用场景。 首先,让我们从深度优先搜索(DFS)开始。DFS...
本主题聚焦于使用Java实现求解迷宫最短路径的算法。在给定的压缩包中,包含两个文件:ShortPath.java和Position.java,它们分别代表了核心算法和坐标位置的数据结构。 首先,`Position.java`文件可能定义了一个类,...
Java迷宫小游戏是一种基于编程语言Java开发的娱乐项目,它结合了编程逻辑和游戏设计,为学习者提供了实践编程技能的机会。在这个游戏中,玩家需要控制一个角色在迷宫中找到出路,通过解决路径问题来完成游戏。下面...