File size: 2,415 Bytes
db315f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
데이터 모델 정의 파일
"""

from dataclasses import dataclass
from config import FINAL_ROUND


@dataclass
class Worldcup:
    """
    이미지 월드컵 이미지 리스트를 받아서 참가 이미지들 리스트와 다음 승리자 리스트(다음 라운드 출전 리스트)를 가지고 있는 클래스.
    이 클래스는 다음 메소드들을 가지고 있음.
    getCurrentRoundImages (다음 대전 이미지 2개를 리스트로 반환함.)
    winImage (0 또는 1을 입력 받아 승리자 리스트에 추가하고 다음 라운드를 위해 index를 증가시킴.)
    처음에는 8강 이미지 (8개) 가 주어지고, 이 이미지들 중 getCurrentRoundImages 를 호출해서 그 둘 중 이긴 이미지에 대한  피드백을 winImage 에 전달하고, 이긴 이미지를 승리자 리스트에 추가함.
    이렇게 해서 8강, 4강, 결승전 이미지들을 반환하며 대전을 진행할 수 있는 클래스

    사용 예시:
    worldcup = Worldcup(images=이미지_리스트)
    """

    images: list
    winners: list = None
    index: int = 0

    def __post_init__(self):
        if self.winners is None:
            self.winners = []

    def getCurrentRoundImages(self):
        # 현재 라운드의 이미지가 모두 소진되었는지 확인
        # 다음 대전할 이미지 2개 반환
        return self.images[self.index : self.index + 2]

    def winImage(self, winnerIndex):
        print("winImage winnerIndex:", winnerIndex)
        self.winners.append(self.images[self.index + winnerIndex])
        self.index += 2

        if self.getKangRound() == FINAL_ROUND:
            return self.winners[0]

        if self.index >= len(self.images):
            print("winImage 다음 라운드로 진행", self.index, len(self.images))
            # 다음 라운드로 진행: winners를 새로운 images로 설정
            self.images = self.winners
            self.winners = []
            self.index = 0

    # 현재 몇강인지 가져오는 함수
    def getKang(self):
        return len(self.images)

    # 현재 라운드 가져오는 함수 (8강 2차전 할 때, 2에 해당 하는 값)
    def getRound(self):
        return self.index // 2 + 1

    def getKangRound(self):
        if self.getKang() == 2:
            return FINAL_ROUND
        return f"## <center>{self.getKang()}{self.getRound()}차전</center>"