小弟写了一个迷宫的算法 向大家请教
import java.util.Arrays;
import java.util.Scanner;
public class Migong {
/**
* 求迷宫的打印方法
* 01 02 03 04 05 00 01 02 03 04 5 4 4 3 3 2 2 1 1 //5阶迷宫每转一次湾 就要走的步数
* 16 17 18 19 06 10 11 12 13 14 4 3 3 2 2 1 1 //4阶迷宫每转一次湾 就要走的步数
* 15 24 25 20 07 20 21 22 23 24 3 2 2 1 1 //3阶迷宫每转一次湾 就要走的步数
* 14 23 22 21 08 30 31 32 33 34 2 1 1//2阶迷宫每转一次湾 就要走的步数
* 13 12 11 10 09 40 41 42 43 44 1//1阶迷宫每转一次湾 就要走的步数
*/
private static String[][] migong;
private static Integer n;
private static enum direct {
left,right,up,down
}
public static void main(String[] args) {
System.out.print("请输入迷宫的阶数:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
init_migong(n);
//第一次走n 步 以后每两次转弯少走一步
int step = n;
int num = 1;
int heng = 0; //横坐标
int zong = 0; //纵坐标
int upwan = 0;
int leftwan = 0;
//走的次数为 2 * n -1
for(int i = 0 ;i<(2 * n -1);i++){
String dir = next(i);
if(dir.equals("right")){
if(i==0){
zong = 0;
}else{
zong = zong + 1;
}
for(int j = 1;j<= (step);j++){
migong[heng][zong] = add_zero(num);
zong++;
num++;
}
}else if(dir.equals("down")){
heng = heng + 1;
zong = zong -1;
for(int j = 1;j<= step;j++){
migong[heng][zong] = add_zero(num);
heng++;
num++;
}
}else if(dir.equals("left")){
heng = heng -1;
zong = zong -1;
for(int j = step;j>=1;j--){
migong[heng][zong] = add_zero(num);
zong--;
if(1 == j){
zong = leftwan;
}
num++;
}
leftwan = leftwan +1;
}else if(dir.equals("up")){
upwan = upwan +1;
heng = heng -1;
for(int j = step;j>=1;j--){
migong[heng][zong] = add_zero(num);
heng--;
if(1 == j){
heng = upwan;
}
num++;
}
}
if(i%2==0){
step = step -1;
}
}
printmigong();
}
private static String next(int i){
int mod = i % 4;
String dir = "left";
switch (mod) {
case 0:
dir = direct.right.toString();
break;
case 1:
dir = direct.down.toString();
break;
case 2:
dir = direct.left.toString();
break;
case 3:
dir = direct.up.toString();
break;
}
return dir;
}
private static String add_zero(Integer num){
Integer temp = n * n;
String s = temp.toString();
Integer len = s.length();
Integer l = num.toString().length();
String zero = "";
for(int i = 1;i<=len -l;i++ ){
zero = zero + "0";
}
return zero + num;
}
private static void printmigong(){
for(int i = 0 ;i<migong.length;i++){
System.out.println(Arrays.toString(migong[i]));
}
}
private static void init_migong(Integer n) {
migong = new String[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
migong[i][j] = "-1";
}
}
}
}
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Java编程语言创建一个迷宫游戏。...通过学习和理解这些基本概念,你可以进一步完善这个Java迷宫游戏,增加更多特性,如多级难度、计时功能、动态迷宫生成等,从而提升游戏体验。
标题中的“一个简单的java迷宫生成程序”表明我们要讨论的是一个使用Java编程语言实现的算法,该算法用于创建迷宫。迷宫生成是计算机图形学和算法设计的一个有趣领域,通常涉及深度优先搜索(DFS)或Prim算法等方法...
本主题将深入探讨使用Java实现的基于深度优先搜索(DFS)和广度优先搜索(BFS)的迷宫生成与游戏玩法。这两种算法都是解决迷宫问题的有效工具,各有其特点和适用场景。 首先,让我们从深度优先搜索(DFS)开始。DFS...
NULL 博文链接:https://wang-jianxin.iteye.com/blog/1741218
《Java小游戏:走迷宫与走马》 在IT领域,尤其是编程学习中,通过制作小游戏来提升技能是一种常见的实践方法。"Java小游戏——走迷宫 走马.zip"是一个利用Java语言开发的迷宫游戏项目,旨在帮助开发者理解和运用...
总结起来,这个"java 走迷宫 maze"项目涵盖了迷宫生成、路径查找和用户界面显示等核心概念,涉及到了Java编程、算法和数据结构等多个方面。通过这个项目,开发者不仅可以提升编程技能,还能对图论和搜索算法有更深入...
### 分支限界法在电子老鼠闯迷宫问题中的应用 #### 一、问题背景与定义 本案例探讨了一个经典的搜索问题:电子老鼠如何在给定的迷宫中找到从起点到终点的最短路径。这里所用的方法是**分支限界法**,一种高效的...
总的来说,这个Java迷宫游戏项目涵盖了基础的编程概念,如数据结构(如二维数组表示迷宫),算法(迷宫生成),图形用户界面设计,事件处理,以及游戏逻辑的实现。对于初学者来说,这是一个很好的实践项目,可以帮助...
在这个"java swing 做的迷宫问题升级版"项目中,我们将深入探讨如何利用Swing构建一个迷宫游戏,并对其进行升级优化。 首先,迷宫问题是一个典型的算法问题,涉及到路径查找和数据结构。常见的迷宫算法有深度优先...
【迷宫问题与Java Swing应用】 迷宫问题是一种经典的计算机科学问题,涉及到路径搜索和算法设计。在本项目中,我们将使用Java Swing作为图形用户界面(GUI)工具包,来实现一个可视化的迷宫求解器。Java Swing是...
Java深度优先遍历算法在计算机科学中是一种常用的搜索策略,特别是在解决迷宫生成问题时。这个资源使用Eclipse IDE开发,旨在通过深度优先遍历(DFS, Depth-First Search)来随机生成迷宫。DFS是一种递归的遍历方法...
《迷宫趣味游戏》是一款基于Java开发的创新性游戏,旨在提供给玩家独特的探索与解谜体验。游戏的核心特点是自动生成地图以及自动求解功能,让玩家既能享受手动探索的乐趣,也能欣赏到算法的智慧。 首先,让我们深入...
【Java版三维迷宫游戏源码】是一款基于Java编程语言实现的小型三维迷宫游戏,其特点是体积小、代码精炼,同时包含了详尽的说明文档,为学习和理解Java编程,尤其是游戏开发的初学者提供了很好的实践素材。...
第一个上传的资源~是数据结构与算法的作业,解决了迷宫寻找通路的算法,回溯法深度优先,在一个简单窗口中显示迷宫,不过还挺漂亮的。还有一个试验报告,看不懂的可以在实验报告里看。试验报告第一个是电话本,第二...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个迷宫游戏,主要关注Java Swing作为图形用户界面(GUI)的构建工具以及迷宫生成算法的设计。首先,让我们了解一下Java Swing的基本概念。 Java Swing是Java ...
【Java小游戏:迷宫游戏与自动找路】 在编程领域,设计一款迷宫游戏不仅可以锻炼开发者的游戏编程技能,还能深入理解图论、算法和数据结构。本项目是基于Java实现的迷宫游戏,具备自动生成迷宫路径以及自动寻路功能...
这三种算法分别适合不同的迷宫情况,深度优先适合于那种主线支线明显的游戏(如RPG),而递归分割则适合转角较少的游戏(也许是FPS和ACT),至于prim,似乎适合最标准的迷宫游戏(因为很难走)。 2.寻找路径 因为...
Java 实现走迷宫回溯算法是一种常用的路径搜索算法,通过回溯法来解决迷宫问题。下面是对该算法的详细介绍和实现。 算法介绍 走迷宫回溯算法是一种基于栈的搜索算法,通过模拟人走迷宫的过程来搜索迷宫中的路径。...
游戏的核心玩法是驾驶卡丁车在迷宫中穿梭,通过设置不同难度和奖励机制,使得游戏具有较高的可玩性和挑战性。 一、Java编程基础 1. 类与对象:游戏中的卡丁车、迷宫、金币等元素都可以看作是Java中的类,每个类都...
在编程领域,迷宫问题是一个经典的算法挑战,它...通过分析和运行这些代码,可以更好地理解和学习如何在Java中实现回溯法解决迷宫问题。通过这种方式,你可以掌握如何设计和实现高效、可扩展的算法来解决复杂的问题。