Exemplo n.º 1
0
def test_code(data):
    test_data = data
    test_dir = os.getcwd()  # os.path.join(os.getcwd(), 'match')
    extension = {
        '': '',
        'C': '.c',
        'C++': '.cpp',
        'PYTHON': '.py',
        'JAVA': '.java'
    }
    update_url = 'http://203.246.112.32:8000/api/v1/code/' + str(
        test_data['challenger_code_id']) + '/'

    # code_filename = 'challenger{0}'.format(extension[test_data['challenger_language']])
    code_filename = 'challenger.py'

    # code_path = os.path.join(test_dir, code_filename)

    # code = test_data['challenger_code']

    # with open(code_path, 'w') as f:
    #     f.write(code)
    challenger = UserProgram('challenger', test_data['challenger'],
                             test_data['challenger_language'], test_dir,
                             code_filename)

    game_manager = GameManager(challenger=challenger,
                               oppositer=challenger,
                               placement_rule=test_data['placement'],
                               action_rule=test_data['action'],
                               ending_rule=test_data['ending'],
                               board_size=test_data['board_size'],
                               board_info=test_data['board_info'],
                               obj_num=test_data['obj_num'],
                               problem=test_data['problem'])

    _, _, _, result, _ = game_manager.play_game()
    print('result :', result)
    available = False
    if result == 'finish':
        available = True
Exemplo n.º 2
0
def match(match_data):
    match_dir = os.getcwd()  # os.path.join(os.getcwd(), 'match')
    extension = {
        '': '',
        'C': '.c',
        'C++': '.cpp',
        'PYTHON': '.py',
        'JAVA': '.java'
    }
    # update_url = 'http://127.0.0.1:8000/api/v1/game/' + match_data['match_id']

    challenger_code_filename = 'challenger{0}'.format(
        extension[match_data['challenger_language']])
    oppositer_code_filename = 'oppositer{0}'.format(
        extension[match_data['oppositer_language']])

    challenger_code_path = os.path.join(match_dir, challenger_code_filename)
    oppositer_code_path = os.path.join(match_dir, oppositer_code_filename)

    # challenger_code = select_code(match_data['challenger'], match_data['problem'])
    # oppositer_code = select_code(match_data['oppositer'], match_data['problem'])
    challenger_code = match_data['challenger_code']
    oppositer_code = match_data['oppositer_code']

    with open(challenger_code_path, 'w') as f:
        f.write(challenger_code)

    with open(oppositer_code_path, 'w') as f:
        f.write(oppositer_code)

    challenger = UserProgram(match_data['challenger'],
                             match_data['challenger_language'], match_dir,
                             challenger_code_filename)
    oppositer = UserProgram(match_data['oppositer'],
                            match_data['oppositer_language'], match_dir,
                            oppositer_code_filename)

    game_manager = GameManager(challenger=challenger,
                               oppositer=oppositer,
                               placement_rule=match_data['placement'],
                               action_rule=match_data['action'],
                               ending_rule=match_data['ending'],
                               turn=match_data['turn'],
                               board_size=match_data['board_size'],
                               board_info=match_data['board_info'],
                               obj_num=match_data['obj_num'])

    match_result, board_record, placement_record = game_manager.play_game()
    req = requests.put(update_url,
                       data={
                           'match_result': match_result,
                           'board_record': board_record,
                           'placement_record': placement_record
                       })
    # with open('result.txt', 'w') as f:
    #     f.write(match_result)
    # with open('result.txt', 'a') as f:
    #     f.write(board_record)
    # with open('result.txt', 'a') as f:
    #     f.write(placement_record)

    #   update match data
    update_match_data(match_result, board_record, placement_record)
Exemplo n.º 3
0
def match(data):
    match_data = data
    match_dir = os.getcwd()  # os.path.join(os.getcwd(), 'match')
    extension = {
        '': '',
        'C': '.c',
        'C++': '.cpp',
        'PYTHON': '.py',
        'JAVA': '.java'
    }
    update_url = 'http://203.246.112.32:8000/api/v1/game/' + str(
        match_data['match_id']) + '/'

    challenger_code_filename = 'challenger{0}'.format(
        extension[match_data['challenger_language']])
    oppositer_code_filename = 'oppositer{0}'.format(
        extension[match_data['opposite_language']])

    challenger_code_path = os.path.join(match_dir, challenger_code_filename)
    oppositer_code_path = os.path.join(match_dir, oppositer_code_filename)

    challenger_code = match_data['challenger_code']
    oppositer_code = match_data['opposite_code']

    with open(challenger_code_path, 'w') as f:
        f.write(challenger_code)

    with open(oppositer_code_path, 'w') as f:
        f.write(oppositer_code)

    challenger = UserProgram('challenger', match_data['challenger'],
                             match_data['challenger_language'], match_dir,
                             challenger_code_filename)
    oppositer = UserProgram('opposite', match_data['opposite'],
                            match_data['opposite_language'], match_dir,
                            oppositer_code_filename)

    game_manager = GameManager(challenger=challenger,
                               oppositer=oppositer,
                               placement_rule=match_data['placement'],
                               action_rule=match_data['action'],
                               ending_rule=match_data['ending'],
                               board_size=match_data['board_size'],
                               board_info=match_data['board_info'],
                               obj_num=match_data['obj_num'],
                               problem=match_data['problem'])

    winner, board_record, placement_record, result, error_msg = game_manager.play_game(
    )
    # with open('result.txt', 'w') as f:
    #    f.write(match_result)
    # with open('result.txt', 'a') as f:
    #    f.write(board_record)
    # with open('result.txt', 'a') as f:
    #    f.write(placement_record)
    data = {
        "winner": winner,
        "record": board_record,
        "placement_record": placement_record,
        "result": result,
        "error_msg": error_msg
    }
    data2 = {
        "winner": winner,
        "placement_record": placement_record,
        "result": result,
        "error_msg": error_msg
    }
    print(data2)
    r = requests.patch(update_url, data=data)
    print('request ok')