소연의_개발일지
article thumbnail

4/25 제작코드

 

 

 

 

1. 목차

개발진행 및 완료상황

개발완료보고서

제작 코드

구현 사진

만난 오류 + 해결

해야할 것


2. 개발진행 및 완료상황

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

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

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


3. 순서도

 

 

 

5.1. main.py

<python />
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)
 
<python />
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("게임이 종료됩니다.")
 
<code />
""", 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, }
 
<code />
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 = [ '착수 시의 충격: 개복치는 기생충을 떨쳐내기 위해 점프하지만 그 착수 시의 충격으로 까끔 죽는다.', '물이 차가워서: 개복치는 맛있는 먹이를 찾아서 한 번에 심해로 잠수하지만 물이 너무 차서 쇼크사한다.', '바위에 격돌: 개복치는 거의 앞으로만 헤엄칠 수 있기 때문에 바위를 피하지 못하고 자주 부딪혀 죽는다.', '바짝 말라버린다: 개복치는 일광욕한 채로 자버려서 가끔 육지로 떠올라 죽는다.', '바다거북이 무서워서: 개복치는 바다거북에게 충돌하는 것을 예감하고 패닉이 되어 호흡법을 잊어버려 죽는다.', '인간에게 먹힌다: 개복치는 잘 그물에 걸려 인간에게 먹혀 죽는다.', '새들의 발톰에 고름: 개복치는 일광욕을 하여 몸의 기생충을 먹게 하지만 자주 새들의 발톱에 상처를 입어 고름이 생겨 죽는다.', '동료의 죽음: 개복치는 눈 앞에서 동료가 죽는 모습을 보고 그 스트레스로 죽는다.', '아침해가 너무 강해서: 개복치는 섬세하기 때문에, 아침해가 너무 밝으면 놀라서 죽는다. 그런데도 영문명은 선피쉬.', ]
 

 

 

복치 성장

 

어린이로 성장한 복치

.

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

젊은이로 진화한 복치

메뉴판 1번

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

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

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

.

더 부담스러운 개복치왕

 

성장완~!!🤗👏👏

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

 

7. 만난 오류

 

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 오류는 코드에서 함수를 호출할 때, 함수 이름 다음에 ()를 붙이지 않아서 발생하는 오류이다.

 

수정한 부분

<code />
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)
 

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

 

 

8. 해야할 것

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

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

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

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

 

profile

소연의_개발일지

@ssoyxon

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