필자는 Neople에서 개발하고 Nexon에서 서비스를 하는 게임인 Dungeon & Fighter을 즐겨한다.
이 게임 내에서 상위 던젼이나 레이드를 가기 위해서는 최소 +11 의 무기가 필요하다.
그런데 길드원을 보면 +12를 가는데 3000만골드가 들었다는 사람이 있고 또 다른사람은 10억골드 이상을 사용한 사람도 있다.
import random as rand
import numpy as np
print("강화기!!!!!")
"""
4 → 5 부터 reinfo[0]
"""
gold = 354600
cube = 120
reinforce = [0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.259, 0.18, 0.171, 0.16, 0.14]
gold_gop = [2, 2.2, 2.4, 2.6, 2.8, 3, 3, 5, 8, 12, 17]
print("원하시는 강화등급을 넣어주세요 (14까지 구현됨)")
want = int(input())
"""
변수들
"""
cube_usuage = 0
gold_usuage = 0
item_grade = 0
trying = 0
data = []
for i in range(1000):
while(True):
if item_grade == 0:
trying += 1
cube_usuage += 10
gold_usuage += gold
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
elif item_grade == 1:
trying += 1
cube_usuage += 20
gold_usuage += gold
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
elif item_grade == 2:
trying += 1
cube_usuage += 30
gold_usuage += gold
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
elif item_grade == 3:
trying += 1
cube_usuage += 40
gold_usuage += gold
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
elif item_grade == 4:
trying += 1
cube_usuage += 50
gold_usuage += gold * gold_gop[0]
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
elif item_grade == 5:
trying += 1
cube_usuage += 60
gold_usuage += gold * gold_gop[1]
if reinforce[0] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 1
print(" 현재 +{} ".format(item_grade))
elif item_grade == 6:
trying += 1
cube_usuage += 70
gold_usuage += gold * gold_gop[2]
if reinforce[1] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 1
print(" 현재 +{} ".format(item_grade))
elif item_grade == 7:
trying += 1
cube_usuage += 70
gold_usuage += gold * gold_gop[3]
if reinforce[2] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 1
print(" 현재 +{} ".format(item_grade))
elif item_grade == 8:
trying += 1
cube_usuage += 80
gold_usuage += gold * gold_gop[4]
if reinforce[3] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 1
print(" 현재 +{} ".format(item_grade))
elif item_grade == 9:
trying += 1
cube_usuage += 90
gold_usuage += gold * gold_gop[5]
if reinforce[4] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공! ".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 1
print(" 현재 +{} ".format(item_grade))
elif item_grade == 10:
trying += 1
cube_usuage += 100
gold_usuage += gold * gold_gop[6]
if reinforce[5] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 3
print(" 현재 +{} ".format(item_grade))
elif item_grade == 11:
trying += 1
cube_usuage += 120
gold_usuage += gold * gold_gop[7]
if reinforce[6] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade -= 3
print(" 현재 +{} ".format(item_grade))
elif item_grade == 12:
trying += 1
cube_usuage += 140
gold_usuage += gold * gold_gop[8]
if reinforce[7] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade = 0
print(" 무기가 터졌습니다....")
elif item_grade == 13:
trying += 1
cube_usuage += 160
gold_usuage += gold * gold_gop[9]
if reinforce[8] > rand.random():
item_grade += 1
print("+{0} → +{1} 강화 성공!".format(item_grade - 1, item_grade))
else:
print("+{0} 강화 실패!".format(item_grade), end="")
item_grade = 0
print(" 무기가 터졌습니다....")
if item_grade == want:
print("총 {0}번의 시도, {1} 골드, {2} 개의 큐브를 사용하였습니다!".format(trying, gold_usuage, cube_usuage))
gold_usuage = gold_usuage + (cube * cube_usuage)
data.append([trying, gold_usuage])
item_grade, trying, gold_usuage, cube_usuage = 0, 0, 0, 0
break
data = np.array(data)
plt.title("D&F +12 Weapon Reinforsement") # 차트 제목
plt.hist(data, bins=1000)
plt.xlabel("KRW")
plt.ylabel("Success")
plt.show()
data.mean()
Ghost