diff --git a/DataModels/GC.py b/DataModels/GC.py index b8c4642..5d395b8 100644 --- a/DataModels/GC.py +++ b/DataModels/GC.py @@ -2,12 +2,12 @@ from DataModels.Cell import Cell from DataModels.Road import Road from DataModels.House import House from DataModels.Dump import Dump -from config import GRID_WIDTH, GRID_HEIGHT, DELAY +from config import GRID_WIDTH, GRID_HEIGHT, DELAY, CLOSE_ON_END from utilities import movement, check_moves, save_moveset from Traversal.DFS import DFS from Traversal.BestFS import BestFS from Traversal.BFS import BFS -import pygame +import pygame, sys class GC(Cell): moves_made = 0 @@ -109,6 +109,9 @@ class GC(Cell): def make_actions_from_list(self,environment): now = pygame.time.get_ticks() if len(self.moves)==0 or now - self.old_time <= DELAY: + if(len(self.moves)==0 and CLOSE_ON_END): + print("DONE") + sys.exit() return self.old_time = pygame.time.get_ticks() if self.moves[-1] == "pick_garbage": diff --git a/config.py b/config.py index 55c30b5..e1df761 100644 --- a/config.py +++ b/config.py @@ -11,9 +11,24 @@ try: else: MAP_NAME = map_mode except: - print("ERROR: Invalid map mode") + print("ERROR: Invalid map mode\n Please enter \"auto\" for generated map or provide a path to an existing map.") sys.exit() +if(len(sys.argv)>2): + CLOSE_ON_END = sys.argv[2] + if(CLOSE_ON_END != "true" and CLOSE_ON_END != "false"): + print("ERROR: Invalid close on end statement\n Please enter \"true\" or \"false\" to specify if app has to shut after finding solution.") + sys.exit() +else: + print("ERROR: Invalid close on end statement\n Please enter \"true\" or \"false\" to specify if app has to shut after finding solution.") + sys.exit() + +ALGORITHM = None +if(len(sys.argv)>3): + ALGORITHM = sys.argv[3] + if(ALGORITHM != "bfs" and ALGORITHM != "dfs" and ALGORITHM!= "bestfs"): + print("ERROR: Invalid agorithm statement\n Please enter \"bfs\", \"dfs\" or \"bestfs\" to specify algorithm you want to use.") + sys.exit() map = open( MAP_NAME, 'r' ) diff --git a/main.py b/main.py index 4439689..1251367 100755 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import pygame import sys from random import randint -from config import WINDOW_HEIGHT, WINDOW_WIDTH, GRID_HEIGHT, GRID_WIDTH, HOUSE_CAPACITY, FPS, GC_X, GC_Y, MAP_NAME +from config import WINDOW_HEIGHT, WINDOW_WIDTH, GRID_HEIGHT, GRID_WIDTH, HOUSE_CAPACITY, FPS, GC_X, GC_Y, MAP_NAME, ALGORITHM from PIL import Image,ImageDraw @@ -21,6 +21,8 @@ dump_count=0 FPS_CLOCK = pygame.time.Clock() GAME_WINDOW = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32) +algorithm = ALGORITHM + map = open(MAP_NAME, 'r') map.readline() map.readline() @@ -83,6 +85,15 @@ pygame_sprites.add(gc) while True: + if(algorithm != None): + if(algorithm == "bfs"): + gc.find_houses(map_objects,house_count,dump_count, "BFS") + elif(algorithm == "dfs"): + gc.find_houses(map_objects,house_count,dump_count, "DFS") + elif (algorithm == "bestfs"): + gc.find_houses_BestFS(map_objects) + algorithm = None + for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() diff --git a/vowpal_auto_run.ps1 b/vowpal_auto_run.ps1 index 9a32a67..29550b8 100644 --- a/vowpal_auto_run.ps1 +++ b/vowpal_auto_run.ps1 @@ -3,5 +3,5 @@ ) for($i = 1; $i -le $loop; $i++){ - python main.py + python main.py auto true bestfs }