def game(): tick = 0 state = [[(list(), list()) for x in range(3)] for y in range(3)] red_hq = HQ(TEAM.RED, 1, 0) blue_hq = HQ(TEAM.BLUE, 1, 2) state[0][1][TEAM.RED].append(red_hq) state[2][1][TEAM.BLUE].append(blue_hq) red_player_ai = RedPlayerAI(red_hq) blue_player_ai = BluePlayerAI(blue_hq) if VISUAL: gs = pl.GridSpec(5, 1) state_view = pl.subplot(gs[:3, :]) assets_view = pl.subplot(gs[3, :]) progress_view = pl.subplot(gs[4, :]) data_manager = DataManager() data_manager.reset() model = data_manager.get_model() blue_player_ai.model = model result = RESULT.DRAW while True: if red_player_ai.hq.hp <= 0 and blue_player_ai.hq.hp <= 0: print "DRAW" data_manager.add_win(RESULT.DRAW) break elif red_player_ai.hq.hp <= 0: print "BLUE WIN" result = RESULT.BLUE_WIN data_manager.add_win(RESULT.BLUE_WIN) break elif blue_player_ai.hq.hp <= 0: print "RED_WIN" result = RESULT.RED_WIN data_manager.add_win(RESULT.RED_WIN) break # print 'R', red_player_ai.money, red_hq.hp # print 'B', blue_player_ai.money, blue_hq.hp state = blue_player_ai.act(state, q=data_manager.transform(state, red_player_ai, blue_player_ai)) state = red_player_ai.act(state) state = group_ai(state) state = update(state) red_player_ai.money += 1 blue_player_ai.money += 1 red_asstes, blue_assets = data_manager.evaluate_state(state, red_player_ai, blue_player_ai) data_manager.add_sa(tick, red_player_ai, blue_player_ai, state, red_asstes, blue_assets) state = update(state) if VISUAL: draw(state_view, assets_view, progress_view, state, data_manager) tick += 1 # print if VISUAL: pl.pause(3) data_manager.save() return result