hp = 30
exp = 0
lv = 1



def 밥먹기():

    global hp    #hp는 전역변수

    print('피카츄가 밥먹는다')  # hp 5증가
    hp += 5
    return hp


def 잠자기():
    global hp

    print('피카츄가 잠잔다')  # hp 10증가
    hp += 10
    return hp


def 놀기():
    global hp, exp, lv

    print('피카츄가 논다')  # hp 5감소, exp 7증가. hp감소(죽었나?). exp증가(레벨업체크)
    hp -= 5
    flag = hp>0  #살았나 죽었나
    if flag:
        exp +=7
        레벨체크()
    return flag


def 운동하기():
    global hp, exp, lv

    print('피카츄가 운동한다')  # hp 5감소, exp 7증가. hp감소(죽었나?). exp증가(레벨업체크)
    hp -= 15
    flag = hp > 0  # 살았나 죽었나
    if flag:
        exp += 15
        레벨체크()
    return flag

def 상태체크(): #그냥 읽어올때는 전역변수를 알아서 찾아가기 때문에, 따로 변수 지정 안해도 됌.
    print('Lv:', lv, 'HP:', hp, 'EXP:', exp)

def 레벨체크():
    global exp, lv
    if exp>=20:
        lv+=1
        exp -=20
        print('레벨업!!')


def 종료():
    print('종료')


def main():

    global hp, exp, lv
    global exp
    global lv

    flag = True
    while flag:
        print('메뉴를 선택하시오.')
        num = int(input('1.밥먹기 2.잠자기 3.놀기 4.운동하기 5.상태체크 6.종료'))

        if num == 1:
            밥먹기()
        elif num == 2:
            잠자기()
        elif num == 3:
            flag = 놀기()
        elif num == 4:
            flag = 운동하기()
        elif num == 5:
            상태체크()
        elif num == 6:
            종료()
            break
        if not flag:
            print('캐릭터사망')
            종료()

main()

 

out)

'파이썬이 제일 쉽다면서요' 카테고리의 다른 글

python #인자  (0) 2021.06.07
python #immutable과 mutable  (0) 2021.06.07
python #함수(4) 지역변수, 전역변수  (0) 2021.06.04
python #함수(3)  (0) 2021.06.04
python #함수(2) 예제.약수구하기  (0) 2021.06.04
'''
피카츄게임

변수(상태값)
hp(에너지상태) : 0이면 죽음. 초기값 30
exp(경험치) : 0
lv (경험치 20마다 레벨 1 증가) 1

기능(함수로 구현)
밥먹기
잠자기
운동하기
놀기
종료
'''

hp = 30
exp = 0
lv = 1

while True:
    menu = int(input('1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료'))
    if menu == 1:
        print('피카츄가 밥먹는다')    #hp 5증가
        hp += 5
        print('Lv:', lv, 'HP:', hp, 'EXP:', exp)
    elif menu == 2:
        print('피카츄가 잠잔다')      #hp 10증가
        hp += 10
        print('Lv:', lv, 'HP:', hp, 'EXP:', exp)
    elif menu == 3:
        print('피카츄가 논다')      #hp 5감소, exp 7증가. hp감소(죽었나?). exp증가(레벨업체크)
        hp -= 5
        exp += 7
        if hp <=0:
            print('피카츄가 죽었습니다')
            break
        if hp>0 and exp >=20:
            lv += 1
            exp -= exp
            print('레벨업! Lv', lv)
        print('Lv:', lv, 'HP:', hp, 'EXP:', exp)
    elif menu == 4:
        print('피카츄가 운동한다')    #hp 15감소, exp 15증가
        hp -= 15
        if hp <=0:
            print('피카츄가 죽었습니다')
            break
        exp += 15
        if hp>0 and exp >=20:
            lv += 1
            exp -= exp
            print('레벨업! Lv', lv)
        print('Lv:', lv, 'HP:', hp, 'EXP:', exp)
    elif menu == 5:
        print('종료')
        break

print('게임종료')

out)

1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료 3
피카츄가 논다
Lv: 1 HP: 25 EXP: 7

1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료 2
피카츄가 잠잔다
Lv: 1 HP: 35 EXP: 7

1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료 4
피카츄가 운동한다
레벨업! Lv 2
Lv: 2 HP: 20 EXP: 0

1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료 4
피카츄가 운동한다
Lv: 2 HP: 5 EXP: 15

1.밥먹기 2.잠자기 3.놀기. 4.운동하기. 5.종료 3
피카츄가 논다
피카츄가 죽었습니다

게임종료​

휴... 처음 코딩을 짰을 때는 피카츄가 죽었는데 레벨업을 했다.

영면의 삶.......저승으로 돌아가거라 피카츄...

'파이썬이 제일 쉽다면서요' 카테고리의 다른 글

python #list (2)  (0) 2021.06.02
python #list  (0) 2021.06.02
python #연습문제  (0) 2021.06.01
python #반복문 : while, for  (0) 2021.06.01
python #연습문제  (0) 2021.06.01

+ Recent posts