""" 데이터 모델 정의 파일 """ 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"##
{self.getKang()}강 {self.getRound()}차전
"