Example #1
0
def main(WIDTH, HEIGHT, SEARCHERS, RESCUERS, targets=5):
    manager = mp.Manager()
    searchm = manager.list()
    rescuem = manager.list()
    mazem = manager.list()
    comq = mp.Queue()

    m = Maze(WIDTH, HEIGHT, targets)
    print (type(mazem), type(m.maze))
    mazem[:] = m.maze
    m.maze = mazem
    display = GNUI(WIDTH, HEIGHT, "Map")
    display2 = GNUI(WIDTH, HEIGHT, "Maze")

    display.update(m.getMaze(), [])

    db = DatabaseAgent("[email protected]", "secret")
    db.width = WIDTH
    db.height = HEIGHT
    time.sleep(1)
    db.start()
    time.sleep(1)

    searchers = mp.Process(target=searchmanager, args=(SEARCHERS, searchm, comq, m))
    rescuers = mp.Process(target=rescuemanager, args=(RESCUERS, rescuem, comq, m))
    pf = mp.Process(target=pathmanager, args=(comq,))
    mothership = mp.Process(target=mothermanager, args=(comq,))

    pf.start()
    mothership.start()
    searchers.start()
    rescuers.start()

    try:
        for i in range(100000):
            display.update(db.map.getMap(), list(searchm), list(rescuem))
            display2.update(m.getMaze(), list(searchm), list(rescuem))
            time.sleep(0.1)

            if isReady(db.map.getMap(), rescuem):
                print ("FINISHED!")
                break
    except KeyboardInterrupt:
        pass
    except Exception, ex:
        print traceback.format_exc()