Skip to content

Latest commit

 

History

History
56 lines (51 loc) · 2.76 KB

211206.md

File metadata and controls

56 lines (51 loc) · 2.76 KB

Day 62

Riot Open API 사용

project repository

오늘은 최근 전적 중에 2판 이상 같이 팀으로 플레이 했던 소환사를 찾고 해당 소환사와의 게임에서 승률을 계산해서 테이블 위젯으로 보여주는 것을 구현했다.

def who_played_with(self):
    self.play_with = {}
    for i in self.match_info_dict:
        for v in self.game_detail_data[i]:
            if (self.game_detail_data[i][v]['match_result'] == self.game_detail_data[i][self.summoner_info['name']]['match_result']) and (v != self.summoner_info['name']):
                if v in self.play_with:
                    self.play_with[v]['count'] += 1
                else:
                    self.play_with[v] = {}
                    self.play_with[v]['count'] = 1
                    self.play_with[v]['win'] = 0

                if self.game_detail_data[i][v]['match_result']:
                    self.play_with[v]['win'] += 1

일단 닉네임을 key 값으로 하고 나올 때마다 count를 증가 시키고, 승리한 판수는 win의 값을 증가시키도록 해서 하나의 딕셔너리를 완성시킨다.
결과적으로 {닉네임 : {'count': , 'win': }} 이런 식으로 완성이 된다.

def display_win_rate_teammate(self):
    column_headers = ['닉네임', '총 판수', '이긴 판수', '승률']
    player_count = 0
    player_name_list = []
    for k, v in self.l.play_with.items():
        if v['count'] >= 2:
            player_count += 1
            player_name_list.append(k)

    self.win_rate_table.setRowCount(player_count)
    self.win_rate_table.setColumnCount(len(column_headers))
    self.win_rate_table.setHorizontalHeaderLabels(column_headers)

    temp_list = [0 for i in range(len(column_headers))]
    row = 0
    for i in player_name_list:
        temp_list[0] = i
        temp_list[1] = self.l.play_with[i]['count']
        temp_list[2] = self.l.play_with[i]['win']
        temp_list[3] = round(self.l.play_with[i]['win'] / self.l.play_with[i]['count'] * 100, 2) 

        for k, v in enumerate(temp_list):
            # float형도 그냥 쓸 수 있도록 하는 부분임
            item = QTableWidgetItem(v)
            item.setData(Qt.DisplayRole, v)
            self.win_rate_table.setItem(row, k, item)
        row += 1
    self.win_rate_table.sortItems(1, order = Qt.DescendingOrder)
    self.win_rate_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
    self.win_rate_table.resizeRowsToContents()

같이 플레이한 판수가 2판이 넘는 소환사의 이름은 미리 추출해서 리스트 형태로 만들어두고 이 리스트를 이용해서 데이터를 추출하여 테이블 위젯에 추가하고 총 판수를 기준으로 정렬될 수 있도록 한다.