[Add] A* Pathfinding almost complete.
This commit is contained in:
		
							parent
							
								
									2874786ae6
								
							
						
					
					
						commit
						6e1a02f70f
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
#############################################################################
 | 
					#############################################################################
 | 
				
			||||||
# Makefile for building: Unuk-QT
 | 
					# Makefile for building: Unuk-QT
 | 
				
			||||||
# Generated by qmake (2.01a) (Qt 4.7.3) on: Thu Jan 5 16:49:04 2012
 | 
					# Generated by qmake (2.01a) (Qt 4.7.3) on: Sat Jan 7 00:36:51 2012
 | 
				
			||||||
# Project:  Unuk-QT.pro
 | 
					# Project:  Unuk-QT.pro
 | 
				
			||||||
# Template: app
 | 
					# Template: app
 | 
				
			||||||
# Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro
 | 
					# Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro
 | 
				
			||||||
@ -69,7 +69,8 @@ SOURCES       = ../src/libUnuk/Debug.cpp \
 | 
				
			|||||||
		../src/libUnuk/MapElement.cpp \
 | 
							../src/libUnuk/MapElement.cpp \
 | 
				
			||||||
		../src/libUnuk/MapEntities.cpp \
 | 
							../src/libUnuk/MapEntities.cpp \
 | 
				
			||||||
		../src/libUnuk/FPS.cpp \
 | 
							../src/libUnuk/FPS.cpp \
 | 
				
			||||||
		../src/libUnuk/MemManager.cpp 
 | 
							../src/libUnuk/MemManager.cpp \
 | 
				
			||||||
 | 
							../src/libUnuk/AStar.cpp 
 | 
				
			||||||
OBJECTS       = Debug.o \
 | 
					OBJECTS       = Debug.o \
 | 
				
			||||||
		main.o \
 | 
							main.o \
 | 
				
			||||||
		Input.o \
 | 
							Input.o \
 | 
				
			||||||
@ -96,7 +97,8 @@ OBJECTS       = Debug.o \
 | 
				
			|||||||
		MapElement.o \
 | 
							MapElement.o \
 | 
				
			||||||
		MapEntities.o \
 | 
							MapEntities.o \
 | 
				
			||||||
		FPS.o \
 | 
							FPS.o \
 | 
				
			||||||
		MemManager.o
 | 
							MemManager.o \
 | 
				
			||||||
 | 
							AStar.o
 | 
				
			||||||
DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
 | 
					DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
 | 
				
			||||||
		/usr/share/qt4/mkspecs/common/unix.conf \
 | 
							/usr/share/qt4/mkspecs/common/unix.conf \
 | 
				
			||||||
		/usr/share/qt4/mkspecs/common/linux.conf \
 | 
							/usr/share/qt4/mkspecs/common/linux.conf \
 | 
				
			||||||
@ -196,7 +198,7 @@ qmake:  FORCE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
dist: 
 | 
					dist: 
 | 
				
			||||||
	@$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0 
 | 
						@$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0 
 | 
				
			||||||
	$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h ../src/libUnuk/FPS.h ../src/libUnuk/MemManager.h ../src/libUnuk/MemClass.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp ../src/libUnuk/FPS.cpp ../src/libUnuk/MemManager.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0
 | 
						$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h ../src/libUnuk/FPS.h ../src/libUnuk/MemManager.h ../src/libUnuk/MemClass.h ../src/libUnuk/Node.h ../src/libUnuk/AStarBase.h ../src/libUnuk/AStar.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp ../src/libUnuk/FPS.cpp ../src/libUnuk/MemManager.cpp ../src/libUnuk/AStar.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:compiler_clean 
 | 
					clean:compiler_clean 
 | 
				
			||||||
@ -261,9 +263,9 @@ main.o: ../src/Unuk/main.cpp ../src/libUnuk/MainMenu.h \
 | 
				
			|||||||
		../src/libUnuk/MapEntities.h \
 | 
							../src/libUnuk/MapEntities.h \
 | 
				
			||||||
		../src/libUnuk/NPC.h \
 | 
							../src/libUnuk/NPC.h \
 | 
				
			||||||
		../src/libUnuk/Character.h \
 | 
							../src/libUnuk/Character.h \
 | 
				
			||||||
		../src/libUnuk/Collision.h \
 | 
					 | 
				
			||||||
		../src/libUnuk/MemClass.h \
 | 
							../src/libUnuk/MemClass.h \
 | 
				
			||||||
		../src/libUnuk/MemManager.h \
 | 
							../src/libUnuk/MemManager.h \
 | 
				
			||||||
 | 
							../src/libUnuk/Collision.h \
 | 
				
			||||||
		../src/Unuk/Game.h \
 | 
							../src/Unuk/Game.h \
 | 
				
			||||||
		../src/Unuk/Player.h \
 | 
							../src/Unuk/Player.h \
 | 
				
			||||||
		../src/libUnuk/IngameMenu.h \
 | 
							../src/libUnuk/IngameMenu.h \
 | 
				
			||||||
@ -398,6 +400,8 @@ Collision.o: ../src/libUnuk/Collision.cpp ../src/libUnuk/Collision.h
 | 
				
			|||||||
Character.o: ../src/libUnuk/Character.cpp ../src/libUnuk/Character.h \
 | 
					Character.o: ../src/libUnuk/Character.cpp ../src/libUnuk/Character.h \
 | 
				
			||||||
		../src/Unuk/Globals.h \
 | 
							../src/Unuk/Globals.h \
 | 
				
			||||||
		../src/Unuk/Constants.h \
 | 
							../src/Unuk/Constants.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemClass.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemManager.h \
 | 
				
			||||||
		../src/libUnuk/ApplySurface.h \
 | 
							../src/libUnuk/ApplySurface.h \
 | 
				
			||||||
		../src/libUnuk/Debug.h \
 | 
							../src/libUnuk/Debug.h \
 | 
				
			||||||
		../src/libUnuk/ImageLoader.h \
 | 
							../src/libUnuk/ImageLoader.h \
 | 
				
			||||||
@ -416,6 +420,8 @@ NPC.o: ../src/libUnuk/NPC.cpp ../src/libUnuk/NPC.h \
 | 
				
			|||||||
		../src/libUnuk/Character.h \
 | 
							../src/libUnuk/Character.h \
 | 
				
			||||||
		../src/Unuk/Globals.h \
 | 
							../src/Unuk/Globals.h \
 | 
				
			||||||
		../src/Unuk/Constants.h \
 | 
							../src/Unuk/Constants.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemClass.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemManager.h \
 | 
				
			||||||
		../src/libUnuk/ApplySurface.h \
 | 
							../src/libUnuk/ApplySurface.h \
 | 
				
			||||||
		../src/libUnuk/Debug.h \
 | 
							../src/libUnuk/Debug.h \
 | 
				
			||||||
		../src/libUnuk/ImageLoader.h \
 | 
							../src/libUnuk/ImageLoader.h \
 | 
				
			||||||
@ -427,15 +433,15 @@ NPC.o: ../src/libUnuk/NPC.cpp ../src/libUnuk/NPC.h \
 | 
				
			|||||||
		../src/libUnuk/MapEntities.h \
 | 
							../src/libUnuk/MapEntities.h \
 | 
				
			||||||
		../src/libUnuk/Timer.h \
 | 
							../src/libUnuk/Timer.h \
 | 
				
			||||||
		../src/libUnuk/Text.h \
 | 
							../src/libUnuk/Text.h \
 | 
				
			||||||
		../src/libUnuk/Font.h \
 | 
							../src/libUnuk/Font.h
 | 
				
			||||||
		../src/libUnuk/MemClass.h \
 | 
					 | 
				
			||||||
		../src/libUnuk/MemManager.h
 | 
					 | 
				
			||||||
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o NPC.o ../src/libUnuk/NPC.cpp
 | 
						$(CXX) -c $(CXXFLAGS) $(INCPATH) -o NPC.o ../src/libUnuk/NPC.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Player.o: ../src/Unuk/Player.cpp ../src/Unuk/Player.h \
 | 
					Player.o: ../src/Unuk/Player.cpp ../src/Unuk/Player.h \
 | 
				
			||||||
		../src/Unuk/Globals.h \
 | 
							../src/Unuk/Globals.h \
 | 
				
			||||||
		../src/Unuk/Constants.h \
 | 
							../src/Unuk/Constants.h \
 | 
				
			||||||
		../src/libUnuk/Character.h \
 | 
							../src/libUnuk/Character.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemClass.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemManager.h \
 | 
				
			||||||
		../src/libUnuk/ApplySurface.h \
 | 
							../src/libUnuk/ApplySurface.h \
 | 
				
			||||||
		../src/libUnuk/Debug.h \
 | 
							../src/libUnuk/Debug.h \
 | 
				
			||||||
		../src/libUnuk/ImageLoader.h \
 | 
							../src/libUnuk/ImageLoader.h \
 | 
				
			||||||
@ -447,9 +453,7 @@ Player.o: ../src/Unuk/Player.cpp ../src/Unuk/Player.h \
 | 
				
			|||||||
		../src/libUnuk/MapEntities.h \
 | 
							../src/libUnuk/MapEntities.h \
 | 
				
			||||||
		../src/libUnuk/Timer.h \
 | 
							../src/libUnuk/Timer.h \
 | 
				
			||||||
		../src/libUnuk/Text.h \
 | 
							../src/libUnuk/Text.h \
 | 
				
			||||||
		../src/libUnuk/Font.h \
 | 
							../src/libUnuk/Font.h
 | 
				
			||||||
		../src/libUnuk/MemClass.h \
 | 
					 | 
				
			||||||
		../src/libUnuk/MemManager.h
 | 
					 | 
				
			||||||
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Player.o ../src/Unuk/Player.cpp
 | 
						$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Player.o ../src/Unuk/Player.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Game.o: ../src/Unuk/Game.cpp ../src/Unuk/Game.h \
 | 
					Game.o: ../src/Unuk/Game.cpp ../src/Unuk/Game.h \
 | 
				
			||||||
@ -457,6 +461,8 @@ Game.o: ../src/Unuk/Game.cpp ../src/Unuk/Game.h \
 | 
				
			|||||||
		../src/Unuk/Globals.h \
 | 
							../src/Unuk/Globals.h \
 | 
				
			||||||
		../src/Unuk/Player.h \
 | 
							../src/Unuk/Player.h \
 | 
				
			||||||
		../src/libUnuk/Character.h \
 | 
							../src/libUnuk/Character.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemClass.h \
 | 
				
			||||||
 | 
							../src/libUnuk/MemManager.h \
 | 
				
			||||||
		../src/libUnuk/ApplySurface.h \
 | 
							../src/libUnuk/ApplySurface.h \
 | 
				
			||||||
		../src/libUnuk/Debug.h \
 | 
							../src/libUnuk/Debug.h \
 | 
				
			||||||
		../src/libUnuk/ImageLoader.h \
 | 
							../src/libUnuk/ImageLoader.h \
 | 
				
			||||||
@ -469,8 +475,6 @@ Game.o: ../src/Unuk/Game.cpp ../src/Unuk/Game.h \
 | 
				
			|||||||
		../src/libUnuk/Timer.h \
 | 
							../src/libUnuk/Timer.h \
 | 
				
			||||||
		../src/libUnuk/Text.h \
 | 
							../src/libUnuk/Text.h \
 | 
				
			||||||
		../src/libUnuk/Font.h \
 | 
							../src/libUnuk/Font.h \
 | 
				
			||||||
		../src/libUnuk/MemClass.h \
 | 
					 | 
				
			||||||
		../src/libUnuk/MemManager.h \
 | 
					 | 
				
			||||||
		../src/libUnuk/IngameMenu.h \
 | 
							../src/libUnuk/IngameMenu.h \
 | 
				
			||||||
		../src/libUnuk/Button.h \
 | 
							../src/libUnuk/Button.h \
 | 
				
			||||||
		../src/libUnuk/Input.h \
 | 
							../src/libUnuk/Input.h \
 | 
				
			||||||
@ -505,6 +509,10 @@ MemManager.o: ../src/libUnuk/MemManager.cpp ../src/libUnuk/MemClass.h \
 | 
				
			|||||||
		../src/libUnuk/MemManager.h
 | 
							../src/libUnuk/MemManager.h
 | 
				
			||||||
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o MemManager.o ../src/libUnuk/MemManager.cpp
 | 
						$(CXX) -c $(CXXFLAGS) $(INCPATH) -o MemManager.o ../src/libUnuk/MemManager.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AStar.o: ../src/libUnuk/AStar.cpp ../src/libUnuk/AStar.h \
 | 
				
			||||||
 | 
							../src/libUnuk/AStarBase.h
 | 
				
			||||||
 | 
						$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AStar.o ../src/libUnuk/AStar.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####### Install
 | 
					####### Install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
install:   FORCE
 | 
					install:   FORCE
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,9 @@ HEADERS += ../src/libUnuk/Debug.h \
 | 
				
			|||||||
    ../src/libUnuk/FPS.h \
 | 
					    ../src/libUnuk/FPS.h \
 | 
				
			||||||
    ../src/libUnuk/MemManager.h \
 | 
					    ../src/libUnuk/MemManager.h \
 | 
				
			||||||
    ../src/libUnuk/MemClass.h \
 | 
					    ../src/libUnuk/MemClass.h \
 | 
				
			||||||
    ../src/libUnuk/Node.h
 | 
					    ../src/libUnuk/Node.h \
 | 
				
			||||||
 | 
					    ../src/libUnuk/AStarBase.h \
 | 
				
			||||||
 | 
					    ../src/libUnuk/AStar.h
 | 
				
			||||||
SOURCES += ../src/libUnuk/Debug.cpp \
 | 
					SOURCES += ../src/libUnuk/Debug.cpp \
 | 
				
			||||||
    ../src/Unuk/main.cpp \
 | 
					    ../src/Unuk/main.cpp \
 | 
				
			||||||
    ../src/libUnuk/Input.cpp \
 | 
					    ../src/libUnuk/Input.cpp \
 | 
				
			||||||
@ -67,4 +69,5 @@ SOURCES += ../src/libUnuk/Debug.cpp \
 | 
				
			|||||||
    ../src/libUnuk/MapElement.cpp \
 | 
					    ../src/libUnuk/MapElement.cpp \
 | 
				
			||||||
    ../src/libUnuk/MapEntities.cpp \
 | 
					    ../src/libUnuk/MapEntities.cpp \
 | 
				
			||||||
    ../src/libUnuk/FPS.cpp \
 | 
					    ../src/libUnuk/FPS.cpp \
 | 
				
			||||||
    ../src/libUnuk/MemManager.cpp
 | 
					    ../src/libUnuk/MemManager.cpp \
 | 
				
			||||||
 | 
					    ../src/libUnuk/AStar.cpp
 | 
				
			||||||
 | 
				
			|||||||
@ -71,6 +71,7 @@
 | 
				
			|||||||
    <value type="QString">DISPLAY=:0</value>
 | 
					    <value type="QString">DISPLAY=:0</value>
 | 
				
			||||||
    <value type="QString">HOME=/home/allanis</value>
 | 
					    <value type="QString">HOME=/home/allanis</value>
 | 
				
			||||||
    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
					    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
				
			||||||
 | 
					    <value type="QString">LANGUAGE=</value>
 | 
				
			||||||
    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
					    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
				
			||||||
    <value type="QString">LOGNAME=allanis</value>
 | 
					    <value type="QString">LOGNAME=allanis</value>
 | 
				
			||||||
    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
					    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
				
			||||||
@ -110,6 +111,7 @@
 | 
				
			|||||||
    <value type="QString">DISPLAY=:0</value>
 | 
					    <value type="QString">DISPLAY=:0</value>
 | 
				
			||||||
    <value type="QString">HOME=/home/allanis</value>
 | 
					    <value type="QString">HOME=/home/allanis</value>
 | 
				
			||||||
    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
					    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
				
			||||||
 | 
					    <value type="QString">LANGUAGE=</value>
 | 
				
			||||||
    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
					    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
				
			||||||
    <value type="QString">LOGNAME=allanis</value>
 | 
					    <value type="QString">LOGNAME=allanis</value>
 | 
				
			||||||
    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
					    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
				
			||||||
@ -142,10 +144,11 @@
 | 
				
			|||||||
  <valuemap type="QVariantMap">
 | 
					  <valuemap type="QVariantMap">
 | 
				
			||||||
   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
 | 
					   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
 | 
				
			||||||
   <valuelist key="abstractProcess.Environment" type="QVariantList">
 | 
					   <valuelist key="abstractProcess.Environment" type="QVariantList">
 | 
				
			||||||
    <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ICZ0NvJNRS,guid=3b12f0647bd9cd4da4459e180000003d</value>
 | 
					    <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-nnryLpuskH,guid=b1dc32eb5ce3f37b1b9bd14200000047</value>
 | 
				
			||||||
    <value type="QString">DISPLAY=:0</value>
 | 
					    <value type="QString">DISPLAY=:0</value>
 | 
				
			||||||
    <value type="QString">HOME=/home/allanis</value>
 | 
					    <value type="QString">HOME=/home/allanis</value>
 | 
				
			||||||
    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
					    <value type="QString">HUSHLOGIN=FALSE</value>
 | 
				
			||||||
 | 
					    <value type="QString">LANGUAGE=</value>
 | 
				
			||||||
    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
					    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator</value>
 | 
				
			||||||
    <value type="QString">LOGNAME=allanis</value>
 | 
					    <value type="QString">LOGNAME=allanis</value>
 | 
				
			||||||
    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
					    <value type="QString">LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:</value>
 | 
				
			||||||
@ -155,13 +158,13 @@
 | 
				
			|||||||
    <value type="QString">QTDIR=/usr/share/qt4</value>
 | 
					    <value type="QString">QTDIR=/usr/share/qt4</value>
 | 
				
			||||||
    <value type="QString">SHELL=/bin/bash</value>
 | 
					    <value type="QString">SHELL=/bin/bash</value>
 | 
				
			||||||
    <value type="QString">SHLVL=1</value>
 | 
					    <value type="QString">SHLVL=1</value>
 | 
				
			||||||
    <value type="QString">SSH_AGENT_PID=3260</value>
 | 
					    <value type="QString">SSH_AGENT_PID=3398</value>
 | 
				
			||||||
    <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-lozFEJmg3235/agent.3235</value>
 | 
					    <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-LnbIeWkr3373/agent.3373</value>
 | 
				
			||||||
    <value type="QString">TERM=linux</value>
 | 
					    <value type="QString">TERM=linux</value>
 | 
				
			||||||
    <value type="QString">USER=allanis</value>
 | 
					    <value type="QString">USER=allanis</value>
 | 
				
			||||||
    <value type="QString">WINDOWPATH=7</value>
 | 
					    <value type="QString">WINDOWPATH=7</value>
 | 
				
			||||||
    <value type="QString">XAUTHORITY=/home/allanis/.Xauthority</value>
 | 
					    <value type="QString">XAUTHORITY=/home/allanis/.Xauthority</value>
 | 
				
			||||||
    <value type="QString">XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1323089410.422893-1130065724</value>
 | 
					    <value type="QString">XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1325788236.314939-282202860</value>
 | 
				
			||||||
    <value type="QString">_=/usr/bin/startx</value>
 | 
					    <value type="QString">_=/usr/bin/startx</value>
 | 
				
			||||||
   </valuelist>
 | 
					   </valuelist>
 | 
				
			||||||
   <value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
 | 
					   <value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,92 @@
 | 
				
			|||||||
#include "AStar.h"
 | 
					#include "AStar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AStar::AStar(void) {
 | 
					AStar::AStar(void) {
 | 
				
			||||||
 | 
					  while(_openList.size() > 0) {
 | 
				
			||||||
 | 
					    _openList.pop();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  _closedList.clear();
 | 
				
			||||||
 | 
					  _solution.clear();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AStar::~AStar(void) {
 | 
					AStar::~AStar(void) {
 | 
				
			||||||
 | 
					  AStarBase* best = 0;
 | 
				
			||||||
 | 
					  while(_openList.size() > 0) {
 | 
				
			||||||
 | 
					    best = _openList.top();
 | 
				
			||||||
 | 
					    _openList.pop();
 | 
				
			||||||
 | 
					    delete best;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  _closedList.clear();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Solved the situation given by the initial state with AStar,
 | 
				
			||||||
 | 
					 * and returns a vector of AStarBase that solves the problem.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					std::vector<AStarBase*> AStar::Solve(AStarBase* initState) {
 | 
				
			||||||
 | 
					  AStarBase* best = 0;
 | 
				
			||||||
 | 
					  while(_openList.size() > 0) {
 | 
				
			||||||
 | 
					    best = _openList.top();
 | 
				
			||||||
 | 
					    _openList.pop();
 | 
				
			||||||
 | 
					    delete best;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  _closedList.clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  _openList.push(initState);
 | 
				
			||||||
 | 
					  return GetSolutionSequence(Search());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Search for the best path.
 | 
				
			||||||
 | 
					AStarBase* AStar::Search(void) {
 | 
				
			||||||
 | 
					  AStarBase* best = 0;
 | 
				
			||||||
 | 
					  long key = 0;
 | 
				
			||||||
 | 
					  std::vector<AStarBase*> child;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while(_openList.size() > 0) {
 | 
				
			||||||
 | 
					    while(_closedList.find(key) != _closedList.end()) {
 | 
				
			||||||
 | 
					      // Take the best state, and check if it is on the closed list.
 | 
				
			||||||
 | 
					      if(_openList.size() > 0) {
 | 
				
			||||||
 | 
					        best = _openList.top();
 | 
				
			||||||
 | 
					        _openList.pop();
 | 
				
			||||||
 | 
					      } else 
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      key = best->CalculateKey();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // Put best on the closed list.
 | 
				
			||||||
 | 
					    _closedList[key] = best;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check id best is our goal.
 | 
				
			||||||
 | 
					    if(best->isGoal())
 | 
				
			||||||
 | 
					      return best;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Generate the children.
 | 
				
			||||||
 | 
					    child = best->GenerateChildren();
 | 
				
			||||||
 | 
					    for(unsigned int i = 0; i < child.size(); i++) {
 | 
				
			||||||
 | 
					      _openList.push(child[i]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Generate a solution sequence for a given state.
 | 
				
			||||||
 | 
					std::vector<AStarBase*> AStar::GetSolutionSequence(AStarBase* node) {
 | 
				
			||||||
 | 
					  _solution.clear();
 | 
				
			||||||
 | 
					  AStarBase* state = node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while(state != 0) {
 | 
				
			||||||
 | 
					    _closedList.erase(state->_key);
 | 
				
			||||||
 | 
					    _solution.insert(_solution.begin(), state);
 | 
				
			||||||
 | 
					    state = state->_parent;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Delete the states which are not part of the solution.
 | 
				
			||||||
 | 
					  while(_closedList.size() > 0) {
 | 
				
			||||||
 | 
					    state = _closedList.begin()->second;
 | 
				
			||||||
 | 
					    _closedList.erase(state->_key);
 | 
				
			||||||
 | 
					    delete state;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return _solution;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,35 @@
 | 
				
			|||||||
#include <list>
 | 
					#ifndef _ASTAR_H_
 | 
				
			||||||
 | 
					#define _ASTAR_H_
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					#include <map>
 | 
				
			||||||
 | 
					#include <queue>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "AStarBase.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AStar {
 | 
					class AStar {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  AStar(void);
 | 
					  AStar(void);
 | 
				
			||||||
  ~AStar(void);
 | 
					  ~AStar(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::vector<AStarBase*> Solve(AStarBase* initState);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  
 | 
					  // Comparison structure.
 | 
				
			||||||
 | 
					  struct Cmp : public std::binary_function<AStarBase*, AStarBase*, bool> {
 | 
				
			||||||
 | 
					     bool operator()(AStarBase* a1, AStarBase* a2) const {
 | 
				
			||||||
 | 
					       return (a1->_totalEstimatedCost >= a2->_totalEstimatedCost);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					   };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::priority_queue<AStarBase*, std::vector<AStarBase*>, Cmp > _openList;
 | 
				
			||||||
 | 
					  std::map<const long, AStarBase*> _closedList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AStarBase* Search(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::vector<AStarBase*> GetSolutionSequence(AStarBase* node);
 | 
				
			||||||
 | 
					  std::vector<AStarBase*> _solution;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								src/libUnuk/AStarBase.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/libUnuk/AStarBase.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					#ifndef _ASTARBASE_H_
 | 
				
			||||||
 | 
					#define _ASTARBASE_H_
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AStarBase {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  AStarBase(void) { };
 | 
				
			||||||
 | 
					  virtual ~AStarBase(void) { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Generate a unique key.
 | 
				
			||||||
 | 
					  virtual long CalculateKey(void) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Aproximate the heuristic cost to the goal.
 | 
				
			||||||
 | 
					  virtual double Estimate(void) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Have we reached the goal?
 | 
				
			||||||
 | 
					  virtual bool isGoal(void) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  virtual std::vector<AStarBase*> GenerateChildren(void) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  AStarBase* _parent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  double _pastCost;
 | 
				
			||||||
 | 
					  double _totalEstimatedCost;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  long _key;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
#ifndef _NODE_H_
 | 
					 | 
				
			||||||
#define _NODE_H_
 | 
					 | 
				
			||||||
#include <vector>
 | 
					 | 
				
			||||||
#include <iostream>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class Node {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
  Node(int xArg, int yArg);
 | 
					 | 
				
			||||||
  virtual ~Node(void);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  inline int GetX(void) const { return x; }
 | 
					 | 
				
			||||||
  inline int GetY(void) const { return y; }
 | 
					 | 
				
			||||||
  inline float GetCost(void)  { return _cost; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
  int x, y;
 | 
					 | 
				
			||||||
  float _cost;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user