Spaces:
Sleeping
Sleeping
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>"
|