아이템강화(확률)while

gyeorrr·2023년 1월 18일
0

while

while 반복문으로 게임에서 아이템 강화하는 것 처럼 확률을 설정할 수도 있다
여기서 알아야할 건 어떻게 확률을 설정하냐이다
처음에 내가 생각한 건 randrange의 범위를 설정하고, 그걸 점점 내리면 된다 생각하였는데(그게 되는지도 모르겠고)
아이템 레벨에 따라서 확률을 점점 내릴 수 있는 공식을 만들어야하는데 도무지 감이 안 왔다

문제

'''
주어진 돈으로 아이템을 강화하는 코드
[남은 돈이 0이면 종료]된다
[강화할 때 마다] 돈이 줄어들면서, [[확률]]적으로 아이템의 레벨이 상승한다
마지막에 남겨진 아이템의 레벨을 확인할 수 있어야 한다.
성공확률 = 100 - ((아이템레벨 - 1) * 5)

아이템레벨 올라가면 성공확률은 낮아짐


아이템레벨      성공확률        랜덤정수(0, 101)
1               100           랜덤값 <= 성공확률
2               95
3               90
4               85
5               80

'''

확률 변수선언

성공확률 = 100 - ((아이템레벨 - 1) * 5))

100 =(최고기준(randrange의 최댓값에 따라 변동될것임)

아이템레벨 - 1 = (아이템레벨이 1이면, -1을 해줌으로서 확률이 100%가 됨)
아이템레벨이 1씩 올라갈 때 부터 확률이 95%,90%,85% 각각 5퍼센트씩 떨어지게 만드는 설정값

  • 5 = 이게 확률이 얼마나 떨어지게하냐의 기준이다

변수선언

from random import randrange
money,itemlv = 10000,1

양식 만들기

while money:
   print(f'현재아이템레벨: {itemlv}')
   print(f'현재잔액 : {money}')
   print('1.강화진행')
   print('2.종료')
   choice = int(input('진행>>>'))

본격적인 식 , 제일 중요한 곳

   if choice == 1:
      money -= 500
      dice = randrange(0,101)
      rank = 100 - ((itemlv -1)* 5)
      print(f'{rank} : {dice} = {rank >= dice}')
      if rank >= dice:
         itemlv += 1
         print('강화성공!!!')
         print()
         print()

if choice == 1 choice의 값이 1일 때(강화하겠다고 선택했을 때)

money -= 500 money = money - 500 일단 500원 먼저 차감

★dice = randrange(0,101) choice == 1 이라는 선택을 하였을 때 randrange가 활성화 되게 만들어 주어야함

이유 : 이 식을 if choice == 1 안에가 아닌 변수선언 할 때 설정해버리면 randrange의 값이 변하지 않음(up&down 게임같이 값이 고정적이고 변하지 않아도 될 때 쓰면 됨)

rank = 100 - ((itemlv-1) * 5) 위와 똑같은 맥락으로 if choice ==1 식 안에 써야하며, 확률의 기준이 되는 식이다

if rank >= dice: rank의 값이 dice 보다 크거나 같을 때 강화가 성공된다

★(rank는 확률(100에서 시작해서 5씩 낮아짐 그말인 즉슨, 성공하는 경우의수가 5씩 줄어든다는 거임 , dice는 난수)
itemlv += 1 아이템레벨이 1 상승하고 itemlv의 값이 +1 한 값으로 바뀐다

Ex. itemlv = 1 이었다면 itemlv = 2 로 바뀐다는 뜻
      else :
         itemlv -= 1
         print('강화실패!!!')
  
   if choice == 2:
      print('강화종료')

else : rank >= dice , rank의 값이 dice 보다 크거나 같지않다면 다음식을 수행한다
itemlv -= 1 iemlv의 값이 1 감소된 값으로 변수선언

if choice == 2: choice의 값에 2를 입력하였을 때 실행

중요한 것

  1. randrange 의 위치
  2. 확률식 만들어주기 확률 = 100(최대기준) - (( 확률이 될 기준 - 1) * 5)
    여기서 -1 해주는 이유는 해당값을 초기값(100% 확률)으로 (0)으로 만들어주기위해서

생각을 너무 어렵게 하지말고 코드를 보면서 하나씩 차근차근 해석하자

0개의 댓글