소연의_개발일지
article thumbnail

4/25 제작코드

 

 

 

 

목차

개발진행 및 완료상황

개발완료보고서

제작 코드

구현 사진

만난 오류 + 해결

해야할 것


개발진행 및 완료상황

오늘은 조동현 교수님이 갑자기 개복치를 키워내라고 문제를 주셨다.

덕분에 내 멘탈이 개복치가 되었지만.. 시간도 빨리가고 알다가도 모를 파이썬에 대해 더 알아가는 시간을 가졌다.

일단 1차 구현은 완료한 상태이나(문제 조건에 있는 부분) 예외처리나 코드 모양이 좀 깔끔하지가 않은게 마음에 좀 걸린다. 함수를 배운 이후에 다시 도전해보는걸로..!


순서도

 

 

 

개발 완료 보고서

 

 

코드

main.py

import random
from art import bokki_style, die_ment_food, MENU, state, die_art, adventure_name, adventure_ment_failure, table_head, table_bottom, eating_cnt_dict
import os
import time

# 전역 변수들
bokki_weight = 0  # 복치 몸무게
bokki_point = 0.0 # 복치 포인트(mp)
bokki_size = 0 #복치 크기
die_cnt = 0  # 돌연사 횟수
eating_count = 7  # 먹이 랜덤 갯수 기본은 7
eating_upgrade_cnt = 0 #먹이 확률 때문에 존재. 먹이 업그레이드 하면 초기화
eating_cnt = 0  # 먹는 횟수(3번 먹으면 모험포인트 +=1 )
journey_point = 0  # 모험포인트
adventure_ugrade = 0 #모험 업그레이드
grow_cnt_2 = 0  # 진화할 때마다 초기화
eating_base = 0  # 어떤 메뉴를 먹는지

def assistant_ment(num):
    """안내 멘트"""
    ment = [
        '먹이를 먹기로 선택했습니다.', #0
        '모험을 떠나기로 선택했습니다.', #1
        '상점으로 갑니다.', #2
        '게임이 종료됩니다.', #3
        'MP가 부족해서 구매할 수 없습니다.'#4
    ]
    print(ment[num-1])

def eating():
    """복치가 먹고 증가한 몸무게 반환"""
    bokki_food = MENU[eating_base][0]  # 복치가 먹는 음식
    plus_wight = round(MENU[eating_base][1][0] * eating_count, 2)  # 증가 체중 = 먹는 음식 * 몇개
    print(f"{bokki_food}먹이를 {eating_count}만큼 섭취합니다.")  # 어떤 먹이를 몇 개 먹는지 알려주기
    print(f"체중이 {plus_wight}kg만큼 증가합니다.")
    return plus_wight


def bokki_random_die_adventure(num):
    """복치가 모험에서 돌연사할 확률 반환(돌연사 횟수)"""
    survival_per = 0
    if num == 0:
        survival_per = 50
    elif num == 1:
        survival_per = 75
    elif num == 2:
        survival_per = 95
    else:
        survival_per = 99
    if survival_per >= random.randint(0, 100):
        print("생존했습니다!")
        return 1
    else:
        print("돌연사했습니다!")
        return 0
def bokki_random_die_food(num, eating):
    """복치가 먹이를 먹고 돌연사할 확률 반환 (돌연사횟수, 먹이종류)"""
    survival_per = 0
    if eating == '동물성 플랑크톤':
        survival_per = 100
    else:
        survival_per = 92
    if num > 0:
        survival_per = 99.9
    if survival_per >= random.randint(0, 100):
        print("생존했습니다!")
        return 1
    else:
        print("돌연사했습니다!")
        return 0

def bokki_size_return(weight):
    """복치 몸무게 체크해서 반환"""
    global state
    if 0 <= weight <= 1.9:
        state_num = 0
    elif 2 <= weight <= 19.9:
        state_num = 1
    elif 20 <= weight <= 89.9:
        state_num = 2
    elif 90 <= weight <= 319.9:
        state_num = 3
    elif 320 <= weight <= 999.9:
        state_num = 4
    elif 1000 <= weight <= 2499.9:
        state_num = 5
    elif 2500 <= weight <= 4999.9:
        state_num = 6
    else:
        print('진화성공')
    bokki_state = list(state.keys())[state_num]
    return state_num

def journey_point_plus(eat_cnt):
    """모험포인트 1 증가 출력(사실 필요없을지도)"""
    if eat_cnt % 3 == 0:
        print("3번 이상 먹어서 모험포인트가 1 증가합니다.")
        return 1
    else:
        return 0
def store_buy(num):
    """상점 메뉴판 출력"""
    if num == 1:
        print("먹이 업그레이드 입니다.")
        print("====현재 구매할 수 있는 먹이====")
        for i in range(eating_base+1,9):
            print(f"{i+1}번 메뉴:{MENU[i][0]} / 가격:{MENU[i][1][1]}원 ")
        print("="*32)
    if num == 3:
        print("모험 업그레이드 입니다.")
        print("====현재 구매할 수 있는 모험====")
        for i in range(1, 9):
            print(f"{i + 1}번 모험:{adventure_name[i][0]} / 가격:{adventure_name[i][1][1]}포인트 ")
        print("=" * 32)
    if num == 2:
        print("먹이 최대갯수 업그레이드 입니다.")
        item_cnt = 1
        for i, j in eating_cnt_dict.items():
            print(f"{item_cnt:<2}번 | {i:>2}개: {j}MP")
            item_cnt += 1
    user_choice_upgrade = int(input("몇 번 구매를 선택하시겠습니까?: "))
    return user_choice_upgrade

def adventure_sucess(adventure_ugrade):
    """모험 성공시 늘어난 체중과 mp반환"""
    print(f"몸무게가 {adventure_name[adventure_ugrade][1][0]}만큼 증가합니다.")
    print(f"mp가 {adventure_name[adventure_ugrade][1][1]}만큼 증가합니다.")
    weight = adventure_name[adventure_ugrade][1][0]
    point = adventure_name[adventure_ugrade][1][1]
    return (weight, point)
 
print("개복치 키우기에 어서오세요")
# 게임 규칙 설명
game_start = 'y' # input("시작하시겠습니까?(y/n): ").lower()
if game_start == 'y':
    os.system("cls")
    while True:
        # 복치 사이즈 확인
        bokki_change_size = bokki_size_return(bokki_weight)
        if bokki_size != bokki_change_size:
            print(f"복치가 {list(state.keys())[bokki_change_size]}로 진화했습니다!")
            bokki_size += 1  # 사이즈 증가
            grow_cnt_2 = 0  # 진화하면 횟수만큼 mp얻는거 초기화

       # 복치왕 되었을 때
        if bokki_size == 6:
            print(f"당신은 {die_cnt}번만에 개복치를 환생시키고 수족관의 주인을 만들었습니다.")
            break

        # 복치 상태창
        bokki_table = f"상태: {list(state.keys())[bokki_size]}, 몸무게: {round(bokki_weight, 2)}kg, MP: {bokki_point}, 모험포인트: {journey_point}"
        base_table = table_head + bokki_style[bokki_size] + table_bottom + bokki_table
        print(base_table)
        print("1. 먹이, 2.모험, 3.상점, 4.종료")
        while True:
            user_choice = int(input("개복치가 무엇을 할 지 선택하세요: "))
            if user_choice in [1, 2, 3, 4]:
                break
            else:
                print("1부터 4사이의 숫자를 선택해 주세요!")
        assistant_ment(user_choice)

        #먹는것 선택
        if user_choice == 1:
            bokki_weight += eating()
            eating_cnt += 1  # 먹은 횟수 증가
            journey_point += journey_point_plus(eating_cnt)  # 3번 먹을 때마다 여행포인트 1 증가
            if bokki_random_die_food(eating_upgrade_cnt, MENU[eating_base][0]) == 0:
                print(die_art)
                die_cnt += 1  # 돌연사 횟수 +=1 -> 죽을 확률 감소
                print(f"돌연사 이유는...{die_ment_food[eating_base]}")  # 어떤 사인으로 죽었는지 출력
                print(f"MP가 {list(state.values())[bokki_size][2]}만큼 증가합니다.")
                bokki_point += float(list(state.values())[bokki_size][2])
                grow_cnt_2 = 2 #돌연사시 얻는 mp늘려줌
            else:
                bokki_size_num = bokki_size
            input("enter>>")
            os.system('cls')

        #모험 선택
        elif user_choice == 2:
            if journey_point > 0:
                print("포인트 1점을 사용해서 모험을 떠납니다.", end='')
                # for i in range(3):
                #     print('.', end='', flush=True)
                #     time.sleep(1)
                # print('')
                journey_point -= 1
                print(f"현재 도전할 수 있는 모험은\n[{adventure_name[adventure_ugrade][0]}]입니다.")
                # 도전에 성공했을 때
                if bokki_random_die_adventure(die_cnt) == 1:
                    ad_weight, ad_point = adventure_sucess(adventure_ugrade)
                    bokki_weight += ad_weight
                    bokki_point += float(ad_point)
                # 도전에 실패했을 때
                else:
                    print(die_art)
                    die_cnt += 1
                    print(f"돌연사 이유는...\n{adventure_ment_failure[adventure_ugrade]}")
                    print(f"MP가 {list(state.values())[bokki_size][2]}만큼 증가합니다.")
                    bokki_point += float(list(state.values())[bokki_size][2])
                    grow_cnt_2 = 2 #돌연사 시 얻는  mp늘려줌
            else:
                assistant_ment(5)
            input("enter>>")
            os.system('cls')

        #상점 선택
        elif user_choice == 3:
            user_buy_choice = int(input("어떤것을 업그레이드 하시겠습니까?\n(1.먹이종류/2.먹이갯수/3.모험/4.돌아가기): "))
            if user_buy_choice in [1,2,3]:
                ##메뉴 보여주기. 이 부분 더러워서 함수로 바꾸고 싶음
                user_pick = store_buy(user_buy_choice)
                if user_buy_choice == 1 and MENU[user_pick-1][1][1] < bokki_point:
                    print(f"먹이 {MENU[user_pick][0]}을 구매합니다.")
                    bokki_point -= MENU[user_pick-1][1][1]
                    eating_base = user_pick-1
                elif user_buy_choice == 2 and int(list(eating_cnt_dict.values())[user_pick-1]) < bokki_point:
                    print(f"먹이갯수를 {list(eating_cnt_dict.keys())[user_pick-1]}으로 업그레이드 합니다.")
                    eating_count = int(list(eating_cnt_dict.keys())[user_pick-1])
                elif user_buy_choice == 3 and adventure_name[user_pick-1][1][2] < bokki_point:
                    print(f"모험 {adventure_name[user_pick-1][0]}을 구매합니다.")
                    bokki_point -= adventure_name[user_pick-1][1][2]
                    adventure_ugrade = user_pick-1
                else:
                    assistant_ment(5)
                input("enter>>")
                os.system('cls')
            else:
                print("돌아갑니다.")
                os.system("cls")
                continue
            bokki_size_num = bokki_size
        else:
            break
else:
    print("게임이 종료됩니다.")
 

art.py

                 """,
        1: """
            ⠀⠀⢠⢤⡀⠀⠀⢀⠠⡀⠀⢀⣀⣠⠤⠴⣒⠖⠂⠀⠀
            ⠀⠀⠸⡄⠙⣷⣰⠚⠋⠉⠉⠙⡤⣤⠶⠏⢀⡴⠋⠃⠀
            ⠀⠀⠀⡵⠞⠉⠀⠀⠀⠀⠀⠀⠈⠚⢶⢤⡞⠀⠀⡇⠀
            ⠀⠀⢰⠃⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡨⡑⣤⣰⠃⠀
            ⠀⠀⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡁⠀⠀
            ⠀⠀⢱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠹⠀⠀
            ⠀⠀⠀⠘⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣜⠀⠀⡇⠀
            ⠀⠀⠀⢀⡴⠋⠤⣀⣀⣀⣀⣀⣀⣀⡤⢿⡘⠷⠼⠃⠀
            ⠀⠀⡐⣩⠒⠒⠋⠁⠈⠊⠀⠘⡐⠁⠂⣀⡉⢢⡀⠀⠀
            ⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀
                 """,
        2: """
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⢸⡇⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠁⢀⣸⠅⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⡠⠔⠂⠉⠉⠉⠁⠀⠈⠉⠉⠒⠢⣀⠀⠀
            ⠀⠀⠀⡀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣧⠀
            ⠀⡠⢴⠀⠀⠘⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⡄
            ⠀⡇⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⠄
            ⠀⠈⠁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⢉⡿⠀
            ⠀⠀⠀⠀⠂⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡸⠃⠀
            ⠀⠀⠀⠀⠀⠀⠀⠈⠛⠷⠶⠶⠶⡀⠰⣶⡟⠛⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠀⣹⠇⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀
                 """,
                       3: """
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠃⣾⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠁⠀⣸⡟⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠠⠐⠒⠊⠉⠉⠉⠛⠛⠣⠤⣀⡀⠀
            ⠀⠀⠀⠄⠀⠀⠀⠀⠀⠐⠂⣄⠀⠀⠀⠀⠀⠀⠈⢻⡀
            ⡎⢣⠆⠀⠀⠛⠃⠀⠀⠀⣠⣿⠆⠀⠀⠀⠀⠀⣀⣾⡇
            ⠀⢸⠀⠀⠀⠀⠀⠀⠀⠸⠛⠉⠀⠀⠀⠀⣠⣿⣿⣿⡇
            ⢰⣼⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠚⠛⠋⠉⢹⠃
            ⠀⠀⠈⠢⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣯⠀
            ⠀⠀⠀⠀⠀⠉⠉⠒⠲⠦⠤⠤⣤⣤⣤⣤⣶⠚⠋⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⢹⡿⠀⠀⠀⠀
            ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠁⠀⠀⠀⠀
                 """,
    4: """

        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠷⡀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠈⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⠀⣠⡟⠃⠀⠀⠀⠀⠀⠀⠀⠀
                    ⠤⢤⣤⡤⠤⠤⢼⣧⣤⣤⣤⣤⣴⣿⣧⣤⡄⠘
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠊⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠳⣆⣀⣴⢮⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣯⠁⢈⡆⠀⠀
        ⠀⡠⠊⠑⣦⠎⠀⠀⠀⠀⠀⠀⠀⠀⠞⠀⡄⢹⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣴⠾⠀⠀⠀
        ⠀⡇⠀⠀⡏⠀⠀⠀⠀⠿⠇⠀⠀⢀⠀⣠⢡⢺⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣏⠀⢣⠀⠀
        ⠀⠑⢄⠀⠁⠀⠀⠀⠀⠒⠚⠀⠀⠘⠀⠀⡀⣻⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡃⡜⠀⠀
        ⠀⠀⡘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣷⡇⠀⠀
        ⠀⣸⠀⢰⡆⠐⢤⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠛⣿⡟⢟⠀⠀⠀
        ⠀⠹⣶⣾⡷⣄⠸⡀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠈⡆⠀⠀
        ⠀⠀⠀⠀⠀⠈⠲⡇⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣴⣿⣟⡀⠀⣱⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⢣⠹⡦⣄⡀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣽⣶⣿⣿⣿⣿⠻⢧⣝⣛⣻⠉⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠣⡐⠤⢍⠉⠓⠒⠉⠉⠙⠻⣉⠉⠉⠈⠙⢿⣿⠃⠀⠀⠉⠉⠁⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠑⠤⣀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠤⠾⠃⠀⠀⠀⠀⠀⠀⠀⠀

                 """,
    5: """
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢀⣀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⣿⡶⡟⠀⠀⣠⣠⠄⣀⡀⠀⠀⠀⠀⠀⠁⠀⢀⡀⠆⠀⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠘⢃⡷⢋⣟⣭⣤⣤⡈⡄⠹⡀⠀⠀⠀⠀⡠⠎⠀⠀⠀⠀⠀⣼⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⣴⠛⠋⢹⣯⠈⣿⣿⣿⣿⢸⠀⡇⠀⠀⠀⣼⠃⠀⠀⠀⠀⢀⣿⡿⠁⠀⠀⠀⣤⣤⠀⠀⠀⠀⠀
            ⢲⢸⡀⣼⣿⣿⣇⣘⢿⠿⠟⣈⣫⡷⠖⠒⠛⠒⠒⠒⠒⠲⠶⠿⠿⠷⣶⣆⠀⠉⠁⠀⢩⠖
        ⠀⠀⠀⠀⠸⣄⠳⣝⡿⠟⠉⣀⠤⠖⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢿⣀⣠⡿⢧⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠹⢥⡤⠖⠋⠁⢀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡍⠀⢈⡆⠀⠀⠀
        ⠀⠀⡀⠐⠢⣄⡄⠁⠀⠠⠐⠈⠀⠀⠀⠀⡠⠃⠀⡘⣦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⣰⣾⠀⠀⠀⠀
        ⠀⢸⠀⠀⠀⡟⠀⠀⠀⠀⣾⣿⡇⠀⠀⢰⠀⠀⢀⠂⢿⠿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡃⠀⢦⠀⠀⠀
        ⠀⠸⡀⠀⠀⠇⠀⠀⠀⠀⠉⣉⣡⡄⠀⣸⠀⠐⠚⢐⡼⣰⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⡀⢸⠀⠀⠀
        ⠀⠀⠈⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣶⣾⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣷⣆⡏⠀⠀⠀
        ⠀⠀⡄⠋⢀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠇⠀⠀⠀
        ⠀⢠⠃⠀⢸⡇⠑⡄⠆⢰⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠒⠐⠀⠈⢹⣿⠙⢻⠀⠀⠀⠀
        ⠀⠈⢦⣤⣾⡷⡄⣣⠀⢸⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡏⠀⠈⡇⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠈⢹⢸⠀⠠⠣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⡟⠀⠀⣹⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠈⠆⢻⣤⣱⠍⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣐⣠⣬⣾⣿⣿⣿⣿⣿⡛⠿⠶⢶⠟⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠑⠢⣑⣒⠝⠒⠦⠤⠤⠤⠤⠖⢾⣿⠿⠿⠛⠛⠛⣿⣿⣿⡏⠀⠈⠛⠓⠒⠋⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠂⠀⠀⠀⠈⠛⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⢆⠀⠀⢹⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠒⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
             """,
                       6: """
        ⠀⠀⠀⠀⠀⠀⠀⢰⠤⡴⠟⠀⢀⡀⢀⣀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡄⠶⠶⠓⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠸⠋⢢⠽⢢⠄⠀⠉⡅⠠⡉⣦⡄⠄⢀⡀⠀⠀⠀⠀⡠⠄⠉⠁⠀⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⢀⡠⠇⢶⠋⢢⣤⣄⣦⡠⠤⣷⢾⣃⣽⠩⣀⠀⢠⠊⠀⠀⠀⠀⠀⠀⣀⣾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⢴⠋⣁⡀⢀⣸⣆⠈⢿⣿⣿⡯⣷⣻⢾⠷⠁⠰⡱⠉⠁⠀⠀⠀⠀⠀⠀⣸⣿⡿⠀⠀⠀⠀⢠⣤⡄⠀⠀⠀⠀
            ⠒⠇⢸⡁⢶⣿⡿⣿⡄⢨⣿⣿⣵⡏⣁⣤⣇⠛⠁⠀⠒⠒⠒⠒⠒⠒⠦⠾⠿⠿⢷⣶⠂⠀⠀⠀⠀⠉⡱
        ⠀⠀⠀⠀⡅⡎⣿⣔⡛⢓⣿⣿⣇⣸⠿⠚⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⢀⣠⣾⡁⠀⠀⠀
        ⠀⠀⠀⢔⠪⡸⠝⣓⡟⣛⠿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣟⠋⠀⢁⠄⠀⠀
        ⠀⠀⠀⠀⠑⠔⠴⠿⠛⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠠⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⢀⡞⠀⠀⠀
        ⠀⢠⠀⠀⠀⠹⡞⠀⠀⠀⢠⣤⣤⠀⠀⠀⠀⢀⠊⠀⠀⠀⢸⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠾⠛⠃⡀⠀⠀
        ⠀⢸⠀⠀⠀⢰⠀⠀⠀⠀⢸⣿⣿⠀⢐⡊⠁⢸⠀⠀⢀⣶⠉⣴⠉⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠁⠀⠀
        ⠀⠈⢣⣀⠀⢸⠀⠀⠀⠀⠀⠠⠤⠖⠂⠀⠀⠼⠀⠈⠉⢠⣼⣷⣾⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⢀⡄⠀⠀
        ⠀⠀⠀⠈⡇⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣴⣶⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣆⣸⠀⠀⠀
        ⠀⠀⡐⠉⠁⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⠄⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⡿⠀⠀⠀
        ⠀⢠⠃⠀⠀⣿⠀⠀⠒⠀⠒⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠂⠀⠂⠀⠀⠀⠀⠀⠀⠈⠁⣿⠉⠛⠣⠀⠀⠀
        ⠀⠈⢤⣤⣤⣿⣶⢈⣸⠰⢀⢸⠀⢤⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⠘⠄⠀⠀
        ⠀⠀⠀⠀⠀⠀⠹⣯⡎⡄⡇⢸⠀⠸⡐⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⡟⠀⠀⠈⡁⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⡇⡇⡇⣷⠀⡧⡘⠇⡀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣤⣾⣿⡟⢧⣄⣀⣠⡇⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⢃⢹⢰⡘⠀⣷⠷⣌⠉⣼⣀⣀⣀⣀⣀⣤⣶⣶⠶⠶⠟⠻⠿⣿⣿⣿⣿⡿⠙⠛⠳⠦⠤⠤⠏⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⢿⡘⡷⣤⠙⠊⢹⢆⠱⠦⡡⢄⠀⠀⠈⠓⠒⢀⠀⠀⠀⠀⠘⢿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢡⠘⢤⡌⣉⠁⠀⠟⠀⢤⠜⣀⠀⠀⠀⠀⠀⠐⠤⠄⣀⠀⠀⠀⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠂⠈⠀⠇⠀⠈⠑⠂⠁⠀⠃⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⡀⣸⡧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
                 """

}

table_head = """
╭┈────────────────복치상태창──────────────────┈┈╮

"""
table_bottom = '''
╰───────────────────────────────────────────────╯
'''

die_art = '''
'두-둥!''
_人人人人_
> 돌연사 <
 ̄Y^Y^Y^Y ̄
'''

state = {
    '별사탕': [0, 0, 30],
    '아기': [40, 20, 120],
    '어린이': [70, 60, 240],
    '젊은이': [230, 90, 560],
    '사회의 일원': [600, 140, 900],
    '개복치왕': [1950, 360, 1950],
    '수족관 주인': [3340, 680, 3340],
}
print(list(state.values())[0][2])

eating_cnt_dict = {
'8' : 24,
'9' : 64,
'10' : 96,
'11' : 128,
'12' : 192,
'13' : 400,
'14' : 60,
'15' : 800,
'16' : 1200,
'17' : 2080,
'18' : 3120,
'19' : 4000,
'20' : 6000,

}
 
MENU = [
    ['동물성 플랑크톤', [0.1, 0]],
    ['해파리', [0.2, 110]],
    ['오징어', [0.4, 220]],
    ['새우', [0.7, 600]],
    ['정어리', [1.0, 1200]],
    ['게', [1.4, 3200]],
    ['가리비', [2.5, 6500]],
    ['굴', [4.0, 11000]],
    ['닭새우', [4.0, 11000, 23000]],
]

die_ment_food = [
    '이유 없음: 개복치가 동물성 플랑크톤을 실증내해서 죽었습니다.',
    '비닐봉투: 개복치는 해파리와 비닐봉투를 착각하여 잘 질식하여 죽는다.',
    '오징어를 너무 먹었어: 개복치는 내장도 약하여 정말 좋아하는 오징어를 너무 많이 먹어 소화를 전혀 시키지 못해서 죽는다.',
    '새우의 껍질: 개복치는 내장도 약하여 새우를 완전히 삼켜 그 껍질이 식도를 찔러 가끔 죽는다.',
    '정어리의 뼈: 개복치는 식도도 약해서 정어리의 작은 뼈가 찔러서 고름이 생겨 죽는다.',
    '게의 다리: 개복치는 내장도 약하여 게의 다리가 찔러서 고름이 생겨 죽는다.',
    '가리비의 껍질: 개복치는 내장도 약하여 가리비의 껍질이 찔러 고름이 생겨 죽는다.',
    '굴의 껍질: 아마 개복치가 아니라도 껍질을 먹으면 내장을 찔러서 고름이 생겨 죽을 것이다.',
    '닭새우의 껍질: 개복치는 수족관에서 닭새우를 먹는 등 아주 비용이 많이 든다. 껍질이 남아있으면, 물론 죽을 것이다.',
]

'''모험 제목/ 성공 시 얻는 체중/ 성공 시 얻는 mp/ 구입시 필요한 mp'''
adventure_name = [

    ['몸이 가려워', [2.6, 30, 0]],
    ['해저에는 진수성찬이', [3.9, 30, 0]],
    ['바위의 그림자에는 보물이', [4.9, 40, 0]],
    ['햇몉 쬐기', [11.8, 40, 0]],
    ['바다거북아, 안녕', [21.5, 50, 0]],
    ['물고기 천국', [23.7, 60, 0]],
    ['새들은 친구들', [49.9, 110, 0]],
    ['동료를 구해라!', [87.4, 220, 0]],
    ['빛의 방향으로', [120, 300, 0]],
]
adventure_ment_failure = [
    '착수 시의 충격: 개복치는 기생충을 떨쳐내기 위해 점프하지만 그 착수 시의 충격으로 까끔 죽는다.',
    '물이 차가워서: 개복치는 맛있는 먹이를 찾아서 한 번에 심해로 잠수하지만 물이 너무 차서 쇼크사한다.',
    '바위에 격돌: 개복치는 거의 앞으로만 헤엄칠 수 있기 때문에 바위를 피하지 못하고 자주 부딪혀 죽는다.',
    '바짝 말라버린다: 개복치는 일광욕한 채로 자버려서 가끔 육지로 떠올라 죽는다.',
    '바다거북이 무서워서: 개복치는 바다거북에게 충돌하는 것을 예감하고 패닉이 되어 호흡법을 잊어버려 죽는다.',
    '인간에게 먹힌다: 개복치는 잘 그물에 걸려 인간에게 먹혀 죽는다.',
    '새들의 발톰에 고름: 개복치는 일광욕을 하여 몸의 기생충을 먹게 하지만 자주 새들의 발톱에 상처를 입어 고름이 생겨 죽는다.',
    '동료의 죽음: 개복치는 눈 앞에서 동료가 죽는 모습을 보고 그 스트레스로 죽는다.',
    '아침해가 너무 강해서: 개복치는 섬세하기 때문에, 아침해가 너무 밝으면 놀라서 죽는다. 그런데도 영문명은 선피쉬.',
]
 

 

4. 구현사진

 

 

복치 성장

 

어린이로 성장한 복치

.

돌연사시 그 이유를 알려준다.

젊은이로 진화한 복치

메뉴판 1번

먹이갯수 메뉴판은 for문으로 나오게 구현

부족하면 구매할 수 없다고 알려줌

사회의 일원으로 성장한 복치. 이제 좀 부담스럽다.

.

더 부담스러운 개복치왕

 

성장완~!!🤗👏👏

아스키코드는 시연님이 제공해주셨다. 감사합니다.

 

만난 오류

 

1.

"AttributeError: 'int' object has no attribute 'items'"

이 오류는 일반적으로 딕셔너리가 아닌 정수형(integer)을 순회하려고 할 때 발생한다. 따라서 해당 에러가 발생하면, 코드를 수정하여 정수형을 순회하지 않도록 해야 한다고 한다. 하지만 나는..

eating_cnt 가 딕셔너리로 되어있는지 확인하는 과정에서 cnt가 아니라 count 임을 알아냈다.(변수 실수)

그래서 eating_cnt가 아니라 eating_count를 사용해야 했다..

 

2.

TypeError: 'int' object is not callable 오류

TypeError: 'int' object is not callable 오류는 코드에서 함수를 호출할 때, 함수 이름 다음에 ()를 붙이지 않아서 발생하는 오류이다.

 

수정한 부분

def adventure_sucess(adventure_ugrade):
    print(f"몸무게가 {adventure_name[adventure_ugrade][1][0]}만큼 증가합니다.")
    print(f"mp가 {adventure_name[adventure_ugrade][1][1]}만큼 증가합니다.")
    weight = adventure_name[adventure_ugrade][1][0]
    point = adventure_name[adventure_ugrade][1][1]
    return (weight, point)

ad_weight, ad_point = adventure_ugrade(adventure_ugrade)
 

여기서는 함수 이름을 잘못 써서 실수를 했다. 이때쯤 집중력이 바닥나고 있었나보다.

 

 

해야할 것

오늘 개복치 만드느라 함수를 예습하지 못했다. 내일은 함수 진도를 나가신다고 하니까.. 열공해야지

- 파이썬 함수들 종류에 대해서 복습하기

- 우리반 사람들 개복치 코드 리뷰하기

- 내 코드 예외처리 및 아쉬운 부분 수정

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!