수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

3차원 미로문제 질문 할게요 !!

예님

2025.11.18




3차원 미로문제 입니다^^
레포트라서 짜고 있었습니다만.. 많이 어렵네요;;
소스가 다소 복잡해보이더라도...이해해주세요..
아직 초보라서 말입니다..

import java.util.*;
class stackmaze{//미로탐색경로
int row,col,hei,dir;
}
class move{//6방향의 좌표를 가질 이동클래스
int vert;//세로
int horiz;//가로
int jump;//높이
}
public class maze {
private static int max_stack_size=100;//스택의 최대 길이
private static int row_size=11;//미로의 최대 행 길이
private static int col_size=15;//미로의 최대 열 길이
private static int height_size=2;//미로의 최대 높이
static stackmaze stack[];//경로 저장
static move move[];//이동 좌표 저장

// 탐색한 경로를 표시할 배열
static int [][][]mark;//mark는 [높이+2][행+2][열+2]
static // 미로를 구성하는 배열 (바깥테두리는 모두 1로 표시)
int [][][]maze= {//maze는 [높이+2][행+2][열+2]
{//높이가 +2 를 더 해주었기 때문에 가장 위와 가장 아래는 전부 1 로 채움
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1},
{1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1},
{1,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1},
{1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,1},
{1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1},
{1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,1,1},
{1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1},
{1,0,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1},
{1,1,1,0,0,0,1,1,0,1,1,1,0,0,1,0,1},
{1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1},
{1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1},
{1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1},
{1,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1},
{1,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,1},
{1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1},
{1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,1,1},
{1,0,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1},
{1,0,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1},
{1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,0,1},
{1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1},
{1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
}
};
static int top=-1;//스택의 top변수
// 미로의 시작점은 1,1,1이고 끝나는 점을 가리키는 변수
public static int exit_row = row_size;
public static int exit_col = col_size;
public static int exit_hei = height_size;

public static void path(){
int row=0, col=0, hei=0, next_row, next_col, next_hei, dir;
boolean found=false;
stackmaze stack2;

mark[1][1][1]=1;// 처음 시작지점
top=0; // 스택에 처음 시작위치를 입력.
stack[0].row=1;
stack[0].col=1;
stack[0].hei=1;
stack[0].dir=1;
while(top-1&&!found)
{
stack2 = pop(top);
row=stack2.row;
col=stack2.col;
hei=stack2.hei;
dir=stack2.dir;
while(dir6&&!found)
{
next_row = row + move[dir].vert;// 현 좌표에서 이동할수 있는 위치를 계산
next_col = col + move[dir].horiz;
next_hei = hei + move[dir].jump;

if(next_row==exit_row&&next_col==exit_col&&next_hei==exit_hei)
found=true;// 만약 그곳이 출구라면 도착 표시
else if(maze[next_hei][next_row][next_col]==1&&mark[next_hei][next_row][next_col]==1)
{
mark[next_hei][next_row][next_col] = 1;
stack2.row = row;
stack2.col = col;
stack2.hei = hei;
stack2.dir = ++dir;
push(top, stack2);
row = next_row;
col = next_col;
hei = next_hei;
dir = 0;
}
else
++dir;
}
}

if(found==true)
{
system.out.println(the path is:);
system.out.println( row col hei);

for(int i=0 ; i = top ; i++)
{
system.out.printf( %3d,%3d,%3d , stack[i].hei, stack[i].row, stack[i].col);
if((i+1)%5 == 0)
system.out.println();
}
system.out.printf( %3d,%3d,%3d , hei, row, col);
system.out.println();
system.out.printf( %3d,%3d,%3d\n, exit_hei, exit_row, exit_col);
}
else
system.out.println( the maze does not have a path\n);// 못찾았으면 에러표시
}
public static void push(int top,stackmaze stackmaze){
if(top = max_stack_size-1)
{
stack_full();
return;
}
stack[++top] = stackmaze;
}
public static stackmaze pop(int top){
if(top == -1)
return stack_empty();
return stack[top--];
}
public static void stack_full(){
system.out.println(stack is full !!);
}
public static stackmaze stack_empty(){
stackmaze stack=new stackmaze();
stack.row=-1;
stack.col=-1;
stack.hei=-1;
stack.dir=-1;
system.out.println(stack is empty !! );
return stack;
}
public static void main(string[] args) {
//6가지의 좌표 변동값 저장
move[0].vert = -1;move[0].horiz = 0;move[0].jump = 0;//북
move[1].vert = 0;move[1].horiz = 1;move[1].jump = 0;//동
move[2].vert = 1;move[2].horiz = 0;move[2].jump = 0;//남
move[3].vert = 0;move[3].horiz = -1;move[3].jump = 0;//서
move[4].vert = 0;move[4].horiz = 0;move[4].jump = 1;//위
move[5].vert = 0;move[5].horiz = 0;move[5].jump = -1;//아래
path();
}
}exception in thread main java.lang.nullpointerexception
at maze.main(maze.java:185)
즉, 위의 소스코드 중 바탕색을 칠해 놓은 첫번째 줄에서 뜨는건데..어떠한 오류인지는 알겠는데..
해결을 못하겠네요

1. 널포인터익셉션 오류가 왜 뜨는지요??
2. 저 소스에서 좀더 개선할점이나 잘못된점을 짚어주세요

궁금한건 2가지 정도가 되겠네요, 잘부탁드려요 !

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2752135 [질문]칼라피커 콘트롤에 특정칼라를 선택된상태로만들려면 어떻게하면되나여? 널위해 2026-10-21
2752110 $box.find("img").width()에서 이미지에.. 해뜰참 2026-10-21
2752024 소숫점 뺄셈 !! ㅠㅜ 초롬 2026-10-20
2751970 자바 게임 만들려는데 부탁드립니다 (1) 라온제나 2026-10-19
2751908 자바스크립트 처리속도를 체크할 수 있는 방법 있나요? (1) 테이 2026-10-19
2751822 그누보드 아이프레임으로 구현했는데 제목 클릭해서 들어가면 푸터가 동동...떠다녀요 내꺼하자 2026-10-18
2751790 자바 그래픽 관련을 공부하고 싶은데요.. 어디 좋은 사이트나 책 없을까요?? (1) 큰재 2026-10-18
2751733 CTF가머죠? (5) 두동 2026-10-17
2751709 배열부분 궁금한 부분이있습니다. 딸기우유 2026-10-17
2751677 포인터 책을 보다가,,, (2) 동백 2026-10-17
2751648 익스플로 버전에 따라서 생기는 공백.. (1) 모아 2026-10-17
2751623 DEL 태그의에서 선굵기 및 컬러지정이 가능한가 해서요~ (4) 비치나 2026-10-16
2751573 테마 업로드 에러.. (1) 꽃 2026-10-16
2751548 수학? 물리?? (3) 찬늘 2026-10-16
2751461 상단네비 fixed ie6 핵 해결방안이 있을까요? 맑다 2026-10-15
2751436 레이아웃을 잡고 코딩을 하는데 드림위버에서의 결과와 IE에서 결과가 다르게 나오네요. (3) 키클 2026-10-15
2751403 형들좀도와주세요string compression (1) 알렉산더 2026-10-14
2751349 링크 다운로드하기 팬지 2026-10-14
2751267 플래시8 사용에서 플레이어 만들었는데요 (1) 블1랙캣 2026-10-13
2751182 회원가입 파랑새 2026-10-12
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com