Go-Home간 연동 시 개체값 변환해주는 코드


GO_HP=input("HP 개체값은 얼마입니까?: ")
GO_ATK=input("공격 개체값은 얼마입니까?: ")
GO_DEF=input("방어 개체값은 얼마입니까?: ")
SPD="스피드 개체값은 0~31 사이에서 랜덤으로 정해집니다. "
# 포켓몬 고 포켓몬의 HP, 공격, 방어 개체값을 입력받는다

int_HP=int(GO_HP)
int_ATK=int(GO_ATK)
int_DEF=int(GO_DEF)
# 문자열을 int로 바꿔준다 

HP=int_HP*2+1
ATK=int_ATK*2+1
DEF=int_DEF*2+1
# 계산 공식: GO 개체값*2+1 (예: GO에서 15면 연동시 31)
# 공격과 방어는 각각 물리특수에 동일하게 분배된다. (예: GO에서 공격이 15면 연동 시 물리공격과 특수공격이 31)

if HP <= 15:
    HP_stat = "적당하다"
elif HP <=25:
    HP_stat = "상당히 좋다"
elif HP <=29:
    HP_stat = "굉장히 좋다"
elif HP == 30:
    HP_stat = "훌륭하다 (U)"
elif HP == 31:
    HP_stat = "최고 (V)"
else: 
    HP_stat = "별로인 듯 (Z)"
# 해당 스테이터스 값 범위별로 그래프에 나오는 판정(HP)

if ATK <= 15:
    ATK_stat = "적당하다"
elif ATK <=25:
    ATK_stat = "상당히 좋다"
elif ATK <=29:
    ATK_stat = "굉장히 좋다"
elif ATK == 30:
    ATK_stat = "훌륭하다 (U)"
elif ATK == 31:
    ATK_stat = "최고 (V)"
else: 
    ATK_stat = "별로인 듯 (Z)"
# 해당 스테이터스 값 범위별로 그래프에 나오는 판정(공격)

if DEF <= 15:
    DEF_stat = "적당하다"
elif DEF <=25:
    DEF_stat = "상당히 좋다"
elif DEF <=29:
    DEF_stat = "굉장히 좋다"
elif DEF == 30:
    DEF_stat = "훌륭하다 (U)"
elif DEF == 31:
    DEF_stat = "최고 (V)"
else: 
    DEF_stat = "별로인 듯 (Z)"
# 해당 스테이터스 값 범위별로 그래프에 나오는 판정(방어)
# else라고 해도 GO에서 연동할 때 *2하고 +1하는 구조라 Z는 스피드 말고 안 나온다. 
# 총 합에 따른 대사도 있긴 한데 그거는 스피드가 랜덤이라 계산을 못 함. 

print("해당 포켓몬의 HP 개체값은 ",HP_stat,",", HP, "입니다. ")
print("해당 포켓몬의 공격/특수공격의 개체값은 ",ATK_stat,",", ATK, "입니다. ")
print("해당 포켓몬의 방어/특수방어의 개체값은 ", DEF_stat,",",DEF, "입니다. ")
print(SPD)
# GO에는 스피드라는 개념이 없으므로 스피드는 연동 시 0~31 중 랜덤으로 정해진다. 
# 운 나쁘면 5v1z 쌉가능... (z=0) 물론 운 좋으면 6V도 가능하다. (V=31)

어? HTML도 코드블록이 되네…? 이럴거면 입력기에 코드블럭을 추가하지 왜


포켓몬 GO에서 개체값은 체공방 세개지만 본가는 공격과 방어가 물리특수로 나뉘어져 있다. 그래서 변환한 다음 공격과 방어에 해당하는 수치를 물리특수에 똑같이 적용한다. 즉 GO에서 공격이 15였으면 연동 시 물공과 특공 2V는 보장된다.

참고로 연동 시 변환되는 수치 공식과 적용되는 스테이터스를 알고 있으면 GO에서 98%인 개체를 보면 연동 시 최소 몇V가 보장되는지 알 수 있다. 98%는 스테이터스 중 두 개가 15이고 하나가 14이기 때문. 98%인 포켓몬이 공격과 방어가 15고 HP가 14면 29/V/V/V/V/?라 4V가 보장되고 HP와 공격 or 방어가 15이고 나머지 하나가 14일 경우 V/V/29/V/29/? or V/29/V/29/V/?로 3V가 보장된다.

1. 연동 시 수치 변환
GO 개체값*2+1

2. 연동 시 적용되는 수치
HP->HP
공격->물리/특수(동일 수치)
방어->물리/특수(동일 수치)
스피드: 0~31 사이에서 랜덤

즉, 위 공식때문에 GO에서 000이었으면 스피드를 제외한 모든 개체값이 1이다. GO에서 온 포켓몬이 스피드를 제외한 다른 스테이터스 개체값이 Z(0)일 수는 없다. 참고로 5v1z는 내가 뽑아봤음… 성격은 랜덤이고 특성은 일특.