`
chenyuxiaoxiao
  • 浏览: 71303 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java 迷宫的走法

    博客分类:
  • java
阅读更多
小弟写了一个迷宫的算法 向大家请教
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编程语言创建一个迷宫游戏。...通过学习和理解这些基本概念,你可以进一步完善这个Java迷宫游戏,增加更多特性,如多级难度、计时功能、动态迷宫生成等,从而提升游戏体验。

    一个简单的java迷宫生成程序

    标题中的“一个简单的java迷宫生成程序”表明我们要讨论的是一个使用Java编程语言实现的算法,该算法用于创建迷宫。迷宫生成是计算机图形学和算法设计的一个有趣领域,通常涉及深度优先搜索(DFS)或Prim算法等方法...

    java迷宫程序及代码

    本主题将深入探讨使用Java实现的基于深度优先搜索(DFS)和广度优先搜索(BFS)的迷宫生成与游戏玩法。这两种算法都是解决迷宫问题的有效工具,各有其特点和适用场景。 首先,让我们从深度优先搜索(DFS)开始。DFS...

    java迷宫

    NULL 博文链接:https://wang-jianxin.iteye.com/blog/1741218

    java小游戏——走迷宫 走马.zip

    《Java小游戏:走迷宫与走马》 在IT领域,尤其是编程学习中,通过制作小游戏来提升技能是一种常见的实践方法。"Java小游戏——走迷宫 走马.zip"是一个利用Java语言开发的迷宫游戏项目,旨在帮助开发者理解和运用...

    java 走迷宫 maze

    总结起来,这个"java 走迷宫 maze"项目涵盖了迷宫生成、路径查找和用户界面显示等核心概念,涉及到了Java编程、算法和数据结构等多个方面。通过这个项目,开发者不仅可以提升编程技能,还能对图论和搜索算法有更深入...

    分支限界法-电子老鼠闯迷宫 java

    ### 分支限界法在电子老鼠闯迷宫问题中的应用 #### 一、问题背景与定义 本案例探讨了一个经典的搜索问题:电子老鼠如何在给定的迷宫中找到从起点到终点的最短路径。这里所用的方法是**分支限界法**,一种高效的...

    Java开发的基础版迷宫游戏

    总的来说,这个Java迷宫游戏项目涵盖了基础的编程概念,如数据结构(如二维数组表示迷宫),算法(迷宫生成),图形用户界面设计,事件处理,以及游戏逻辑的实现。对于初学者来说,这是一个很好的实践项目,可以帮助...

    java swing 做的迷宫问题升级版

    在这个"java swing 做的迷宫问题升级版"项目中,我们将深入探讨如何利用Swing构建一个迷宫游戏,并对其进行升级优化。 首先,迷宫问题是一个典型的算法问题,涉及到路径查找和数据结构。常见的迷宫算法有深度优先...

    迷宫问题 java swing

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

    Java深度优先遍历算法随机生成迷宫

    Java深度优先遍历算法在计算机科学中是一种常用的搜索策略,特别是在解决迷宫生成问题时。这个资源使用Eclipse IDE开发,旨在通过深度优先遍历(DFS, Depth-First Search)来随机生成迷宫。DFS是一种递归的遍历方法...

    迷宫趣味游戏

    《迷宫趣味游戏》是一款基于Java开发的创新性游戏,旨在提供给玩家独特的探索与解谜体验。游戏的核心特点是自动生成地图以及自动求解功能,让玩家既能享受手动探索的乐趣,也能欣赏到算法的智慧。 首先,让我们深入...

    java版三维迷宫游戏源码

    【Java版三维迷宫游戏源码】是一款基于Java编程语言实现的小型三维迷宫游戏,其特点是体积小、代码精炼,同时包含了详尽的说明文档,为学习和理解Java编程,尤其是游戏开发的初学者提供了很好的实践素材。...

    java实现寻找迷宫通路并在窗口中显示

    第一个上传的资源~是数据结构与算法的作业,解决了迷宫寻找通路的算法,回溯法深度优先,在一个简单窗口中显示迷宫,不过还挺漂亮的。还有一个试验报告,看不懂的可以在实验报告里看。试验报告第一个是电话本,第二...

    Java迷宫游戏

    在本文中,我们将深入探讨如何使用Java编程语言来实现一个迷宫游戏,主要关注Java Swing作为图形用户界面(GUI)的构建工具以及迷宫生成算法的设计。首先,让我们了解一下Java Swing的基本概念。 Java Swing是Java ...

    java小游戏迷宫游戏自动生成路径自动找路

    【Java小游戏:迷宫游戏与自动找路】 在编程领域,设计一款迷宫游戏不仅可以锻炼开发者的游戏编程技能,还能深入理解图论、算法和数据结构。本项目是基于Java实现的迷宫游戏,具备自动生成迷宫路径以及自动寻路功能...

    迷宫算法Java程序设计.zip

    这三种算法分别适合不同的迷宫情况,深度优先适合于那种主线支线明显的游戏(如RPG),而递归分割则适合转角较少的游戏(也许是FPS和ACT),至于prim,似乎适合最标准的迷宫游戏(因为很难走)。 2.寻找路径 因为...

    Java实现走迷宫回溯算法

    Java 实现走迷宫回溯算法是一种常用的路径搜索算法,通过回溯法来解决迷宫问题。下面是对该算法的详细介绍和实现。 算法介绍 走迷宫回溯算法是一种基于栈的搜索算法,通过模拟人走迷宫的过程来搜索迷宫中的路径。...

    java卡丁车过迷宫

    游戏的核心玩法是驾驶卡丁车在迷宫中穿梭,通过设置不同难度和奖励机制,使得游戏具有较高的可玩性和挑战性。 一、Java编程基础 1. 类与对象:游戏中的卡丁车、迷宫、金币等元素都可以看作是Java中的类,每个类都...

    迷宫问题(Java实现)

    在编程领域,迷宫问题是一个经典的算法挑战,它...通过分析和运行这些代码,可以更好地理解和学习如何在Java中实现回溯法解决迷宫问题。通过这种方式,你可以掌握如何设计和实现高效、可扩展的算法来解决复杂的问题。

Global site tag (gtag.js) - Google Analytics