python/연습장

내가 처음 만든 물고기 게임

joo_coding 2025. 3. 6. 09:03

문제점은 무엇이었으며, 개선사항은 어떤 것이 있는지

 

# 교수님 피드백
# 물고기를 종류별로 관리하지말고, 한번에 관리해라
# 굳이 판매가능한 물고기 리스트를 만들어서 관리하지말고, 판매할 때 조건이 충족되면 판매되게 설정해라
# 1턴 = 먹이주기, 수질관리, 수질 -= 10
# 무한 = 물고기판매, 물고기구매, 수조구매

fish = ['고등어', '도미', '참치']
mac = [] #마릿수는 len으로
domi = []
tuna = []

tank = 0 #마릿수
tank_vol = 10 #수조용량
water = 100 #수질
money = 1000 #잔고

# 물고기 성장률
mac_grow = 0

# 물고기 먹이 준 횟수
mac_feed = 0
domi_feed = 0
tuna_feed = 0

# 판매가능 물고기
good_mac = 0
good_domi = 0
good_tuna = 0

switch = True
while switch:

    while True:
        if money > -2000:
            #print(len(mac))
            #print(mac[0], mac[1]) #한바퀴는 돌고나서 보이게
            print(mac)
            print(domi)
            print(tuna)

            #print(f"[물고기 현황] 고등어:{len(mac)}| 도미:{len(domi)} | 참치:{len(tuna)}")
            print(f"[판매가능 물고기] 고등어:{good_mac}| 도미:{good_domi} | 참치:{good_tuna}")
            print(f"현재 수조: ({tank}/{tank_vol}) / 잔고: {money}원 / 수질: {water}")

            print("\n[1.먹이주기 /2.수질관리 /3.물고기 판매 /4.물고기 구매 /5.수조 구매]")
            user_input = input("ㄴ무엇을 하시겠습니까?: ")

            if 0<= tank < tank_vol : # 수조 안에는 물고기가 10마리 이하여야 한다

                if user_input == '1': #먹이주기 = 턴O
                    water -= 10
                    feed_menu = {'고등어': 1, '도미': 5, '참치': 20}

                    # 먹이주기 > 마릿수 만큼 줌 = (먹이수=마릿수)
                            # 금액: 먹이수 * 먹이가격
                    mac_food = (len(mac) *1) #먹이가격
                    domi_food = (len(domi) *5)
                    tuna_food = (len(tuna) *20)

                    total_food = mac_food + domi_food + tuna_food #총 금액
                    money -= total_food
                    print(f"총 {total_food}원 입니다. 잔고는 {money}원 입니다.")

                    # 물고기 먹이 준 횟수 = mac (먹이=마릿수) 마릿수만큼 늘어남
                    for i in mac:
                        i[1] += 1

                    for i in domi:
                        i[1] += 1

                    for i in tuna:
                        i[1] += 1


                    # 먹이를 다 주면
                    for i in range(len(mac)):
                        if mac[i][1] == 4:
                            mac[i] = good_mac
                            good_mac += 1

                    for i in range(len(domi)):
                        if mac[i][1] == 8:
                            domi[i] = good_domi

                    for i in range(len(tuna)):
                        if mac[i][1] == 12:
                            tuna[i] = good_tuna

                    # elif domi_feed == 8:
                    #     mac = good_domi
                    #
                    # elif tuna_feed == 12:
                    #     tuna = good_tuna


                elif user_input == '2': #수질관리 = 턴O
                    water -= 10
                    print(f"현재수질은 {water}% 입니다.")
                    print(input("수질은 구매하시겠습니까?(yes/no)"))
                    if 'yes':
                        water = 100
                    else:
                        break

                elif user_input == '3': #물고기판매 = 턴X
                    sale_fish = input("물고기를 판매 하시겠습니까?(yes/no): ")

                    if sale_fish == 'yes':
                        print("판매를 시작합니다.")

                        sale_price = {'고등어': 50, '도미': 300, '참치': 1800}

                        mac_sale = good_mac * 50 # 판매가능 마릿수 * 판매가
                        good_mac = 0
                        domi_sale = good_domi * 300
                        good_domi = 0
                        tuna_sale = good_tuna * 1800
                        good_tuna = 0

                        total_sale = mac_sale + domi_sale + tuna_sale
                        money += total_sale
                        print(f"총 {total_sale}원 입니다. 잔고는 {money}원 입니다.")

                    else:
                        print("처음으로 돌아갑니다.")

                elif user_input == '4': #물고기구매 = 턴x
                    # 어떤 물고기를 얼마만큼 살건지

                    print("[메뉴]\n1.고등어(10원) 2.도미(100원) 3.참치(1000원)")

                    fish = ['0', mac, domi, tuna] # 0,1,2,3 <- 1번이 고등어 일수있게
                    name = ['0','고등어','도미','참치']
                    price = [0, 10, 100, 1000]

                    user_input = input("어떤 물고기를 사시겠습니까?: ")
                    user_input = int(user_input)
                    user_input2 = input("몇마리 사시겠습니까?: ")
                    user_input2 = int(user_input2)

                    for i in range(1,4):

                        if user_input == i:  # 물고기 수 저장하기
                            for j in range(1, user_input2 + 1):
                                fish[i].append([f'{name[i]}', 0])
                                #print(mac[0], mac[1])

                    for i in range(1,4):  # i = 1,2,3

                        if user_input == i: #1번=고등어

                            print(f"{name[i]}를 {user_input2}마리 구매했습니다. "
                                  f"금액은 총 {(user_input2) * price[i]}원 입니다.")
                            money -= ((user_input2) * price[i])
                            tank += user_input2

                elif user_input == '5': #수조구매 = 턴x
                    print(input("수조를 구매 하시겠습니까?(yes/no)"))

                    if 'yes':
                        money -= 1000
                        tank_vol += 10
                        print(f"수조의 용량은 {tank_vol} 으로 증가 했습니다!")

                    else:
                        print("메뉴로 돌아갑니다.[enter]")


                elif money <= (-2000): #잔액이 -2천원일때 게임 끝
                    print("패배")
                    break

            else:
                print("수조가 꽉 찼습니다. 더 이상 구매 할 수 없습니다.")

        else: # 잔액실패
            print(f"잔액이 {money}원 입니다.")
            print("실패")
            switch = False
            break


# 개선사항
# 물고기 개별 성장률 ..ex)고등어1=성장률 75% / 고등어2=성장률 25%

# 교수님 피드백
# 물고기를 종류별로 관리하지말고, 한번에 관리해라
# 굳이 판매가능한 물고기 리스트를 만들어서 관리하지말고, 판매할 때 조건이 충족되면 판매되게 설정해라