Spaces:
Sleeping
Sleeping
""" | |
데이터 모델 정의 파일 | |
""" | |
from dataclasses import dataclass | |
from config import FINAL_ROUND | |
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>" | |