コード例 #1
0
ファイル: main.py プロジェクト: rex8312/Test0710
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