import java.util.PriorityQueue; class Node implements Comparable<Node>{ int F,G,H; int x; int y; Node parent; public int compareTo(Node a) { if(this.F>a.F) return 1; else return -1; } } public class Enemy { Node node; PriorityQueue<Node>open; PriorityQueue<Node>close; Node startnode; Enemy(){ open=new PriorityQueue<Node>(); close=new PriorityQueue<Node>(); startnode=new Node(); startnode.G=0; startnode.H=getH(x,y); startnode.x=x; startnode.y=y; startnode.F=startnode.G+startnode.H; } int x,y; char enemy='E'; void astar(){ open.add(startnode); while(true){ node=open.poll(); close.add(node); if(node.x==Packman.x && node.y== Packman.y){ System.out.println("찾음"); break; //종료 } System.out.println(node.x); System.out.println(node.y); Input_OpenNode(node); if(open.peek()==null){ System.out.println("길없음"); System.exit(0); //길없음 } } } void Input_OpenNode(Node node){ Node node2; if(!Packman.isWall(Packman.arr[node.x][node.y+1])){ node2=node; node2.y=y+1; node2.G=node2.G+1; open.add(node2); } if(!Packman.isWall(Packman.arr[node.x+1][node.y])){ node2=node; node2.x=x+1; node2.G=node2.G+1; open.add(node2); } if(!Packman.isWall(Packman.arr[node.x][node.y-1])){ <<<<<<<<<<<<<<<<<<<<<<<<<<<< 이부분 참고로 Enemy 의 x y는 1 1 로 초기화를 했었음 node2=node; node2.y=y-1; node2.G=node2.G+1; open.add(node2); } if(!Packman.isWall(Packman.arr[node.x-1][node.y])){ <<<<<<<<<<<<<<<<<<<<<<<<< 이부분 node2=node; node2.x=x-1; node2.G=node2.G+1; open.add(node2); } } void move(){ } int getH(int x,int y){ return Math.abs(Packman.x-x)+Math.abs(Packman.y-y); } void left(){ if(!Packman.isWall(Packman.arr[x][y-1])&& Packman.arr[x][y-1]!='E'){ if(Packman.arr[x][y-1]=='*') Packman. arr[x][y]='*'; else if(Packman.arr[x][y-1]==' ') Packman. arr[x][y]=' '; else if(Packman.arr[x][y-1]==Packman.packman) Packman. arr[x][y]='♬'; Packman. arr[x][y-1]='E'; y--; } } void right(){ if(!Packman.isWall(Packman.arr[x][y+1]) && Packman.arr[x][y+1]!='E'){ if(Packman.arr[x][y+1]=='*') Packman.arr[x][y]='*'; else if(Packman.arr[x][y+1]==' ') Packman. arr[x][y]=' '; else if(Packman.arr[x][y+1]==Packman.packman) Packman. arr[x][y]='♬'; Packman.arr[x][y+1]='E'; y++; } } void down(){ if(!Packman.isWall(Packman.arr[x+1][y])&&Packman.arr[x+1][y]!='E'){ char a=Packman.arr[x][y]; if(Packman.arr[x+1][y]=='*') Packman.arr[x][y]='*'; else if(Packman.arr[x+1][y]==' ') Packman.arr[x][y]=' '; else if(Packman.arr[x+1][y]==Packman.packman) Packman. arr[x][y]='♬'; Packman. arr[x+1][y]='E'; x++; } } void up(){ if(!Packman.isWall(Packman.arr[x-1][y])&&Packman.arr[x-1][y]!='E' ){ if(Packman.arr[x-1][y]=='*') Packman.arr[x][y]='*'; else if(Packman.arr[x-1][y]==' ') Packman.arr[x][y]=' '; else if(Packman.arr[x-1][y]==Packman.packman) Packman.arr[x][y]='♬'; Packman. arr[x-1][y]='E'; x--; } //위 } } |
댓글 1