tar / gem.py
CC2311's picture
Upload 9 files
4a3c644 verified
raw
history blame
1.3 kB
# calc/gem.py
def optimize_gem_stat(hp: int, atk: int, defn: int, gem_value: str, max_gems: int = 5):
"""
hp, atk, defn 에 젬 max_gems 개를 나누어 붙일 때
비벨(hp*atk*def) 최대가 되는 분배를 찾아 반환.
"""
try:
val = int(gem_value)
except ValueError:
val = 0
def calc_bibel(h, a, d):
return h * a * d
best = {"젬분배": (0, 0, 0), "HP": hp, "ATK": atk, "DEF": defn, "bibel": calc_bibel(hp, atk, defn)}
# 가능한 분배: 체(i), 공(j), 방(k) 젬 개수, i+j+k ≤ max_gems
for i in range(max_gems + 1):
for j in range(max_gems + 1 - i):
k = max_gems - i - j
new_hp = hp + val * 4 * i
new_atk = atk + val * j
new_def = defn + val * k
score = calc_bibel(new_hp, new_atk, new_def)
if score > best["bibel"]:
best = {
"젬분배": (i, j, k),
"HP": new_hp,
"ATK": new_atk,
"DEF": new_def,
"bibel": score
}
return best
# UI 에서 사용할 젬 분배 리스트 (max 5개)
GEM_DISTS = [(i, j, 5 - i - j) for i in range(6) for j in range(6 - i)]