[Phyton] 풍자의 또간집 선택지 게임

주혜린·2023년 6월 14일
0

[python]

목록 보기
1/1
post-thumbnail

🍽️ 풍자의 또간집 선택지 게임 소개

  • 유튜버 풍자의 채널인 또간집을 바탕으로 또간집에서 소개된 맛집들을 선택지에 따라 추천해주는 게임을 phyton을 사용하여 만들어보았습니다.

📁 사용한 데이터

  • 아래의 총 1-27 에피소드에서 소개된 식당의 데이터가 들어있는 파일을 사용했으며, 데이터 형식은 다음과 같이 [에피소드, 장소, 식당, 추천메뉴, 또간집 선정] 5개의 칼럼과 93개의 행으로 구성되어 있습니다.

again_restaurant.csv

💻 코딩하기

필요한 딕셔너리 및 리스트 생성하기

import csv

# 빈 딕셔너리 생성
pung_pick_dict = {}
episode_res_dict = {}
place_res_dict = {}
res_menu_dict = {}
gain_restaurant_list = []

with open ("./again_restaurant.csv") as fr:
    reader = csv.reader(fr)
    # column첫번째 줄은 pass
    for i, row in enumerate(reader):
        if i == 0:
            continue
        # 모든 행을 한행씩 읽어 리스트에 추가
        gain_restaurant_list.append(row)
        
		# 또간집 선정된 식당 딕셔너리 생성
        pick = row[4]
        restaurants_list = row[2].split(",")
        for restaurant in restaurants_list:
            pung_pick_dict[restaurant] = pick
            pung_pick_dict = {k:v for k,v in pung_pick_dict.items() if v != ''}
            
        # 에피소드별 식당 딕셔너리 생성    
        row[0] = str(row[0])
        if row[0] in episode_res_dict:
            episode_res_dict[row[0]].append(row[2])
        else:
            episode_res_dict[row[0]] = [row[2]]
        # 장소별 식당 딕셔너리 생성    
        row[1] = str(row[1])
        if row[1] in place_res_dict:
            place_res_dict[row[1]].append(row[2])
        else:
            place_res_dict[row[1]] = [row[2]]
        
        # 식당별 추천 메뉴 딕셔너리 생성
        res_menu_dict[row[2]] = row[3]
           
  • type_res는 음식 종류별로 식당이 정리된 딕셔너리인데 again_restaurant.csv의 정보로는 생성이 어려워 수작업을 통해 만들었습니다.
type_res = {
    "양식": ["이태리재", "에픽", "마지아레스토", "칼리프하우스", "우정", "그리지하우스", "자코비버거", "더테이블키친", "브릭오븐", "뉴오더클럽"],
    "일식": ["와타요업", "나나", "카미야", "토리카미", "고메스시", "유야케도쿄", "카라멘야", "소바식당", "카쿠시타", "경양카츠"],
    "태국식": ["코랏", "까폼", "더빛남", "맘맘테이블"],
    "중식": ["가원", "태동반점", "쟈니덤플링", "천진영감", "망원동칼짬뽕"],
    "디저트": ["꾸꾸붕어빵", "소금집델리", "무슨클럽", "광장시장 찹쌀꽈배기", "올드페리도넛"],
    "한식": ["신해바라기", "제주객주리조림", "다담", "명물", "밀양손만두", "토속촌 삼계탕", "경춘자의 라면땡기는날", "대복추어탕", "고향칼국수", "신혼부부", "장군본가", "길목", "광평 평양냉면갈비", "송종희어머니순두부", "도문집", "돈우마을", "남동어시장", "일미화평동냉면", "현암뚝방구이", "광천식당", "육장", "25시참숯구이", "엄마네돼지찌개", "맛삼", "선경준치회집", "조박사 토종순대국", "유동골뱅이", "대가주점", "어항로", "정성손칼국수", "섬집", "산울림1992", "후계동", "화육계", "청와옥", "떡도리탕", "상국이네", "원조전복죽", "아저씨댜구탕", "해운대밀면", "고인돌", "왕거미식당", "여원찜갈비", "산청엔흑돼지", "순대일번지", "골목집", "오복순대국", "곰삼이", "성수부두", "돈앤돈", "형제육회", "3시50분 순대", "순희네빈대떡", "원조누드치즈김밥", "모녀김밥", "라도집", "한남부대찌개", "순수식판"]
}

클래스를 사용하여 코드생성

class again_restaurant:
    def __init__(self, episode, place, restaurant, rec_menu, pung_pick):
        self.episode = episode
        self.place = place
        self.restaurant = restaurant
        self.rec_menu = rec_menu
        self.pung_pick = pung_pick
        
        
    def check_pung_pick(self):
        if self.restaurant in pung_pick_dict:
            print(f"{self.restaurant}(은)는 풍자 pick입니다.")
         
    def check_episode(self):
        if str(self.episode) in episode_res_dict:
            print(f"에피소드 {self.episode}의 식당 리스트는 다음과 같습니다.")
            print(episode_res_dict[str(self.episode)])
        else:
            print(f"에피소드 {self.episode}의 식당 리스트를 찾을 수 없습니다.")
    
    def check_place(self):
        if str(self.place) in place_res_dict:
            print(f"{self.place}의 식당 리스트는 다음과 같습니다.")
            print(place_res_dict[str(self.place)])
    
AgainRestaurant = [again_restaurant(*data) for data in gain_restaurant_list] 

또간집 게임 로직

  1. [장소, 에피소드, 음식 종류, 풍자 pick 중 선택]
  • 장소 선택 시

  • 에피소드 선택 시

  • 음식 종류 선택 시

  • 풍자 pick 선택 시

  1. 식당 추천 후 추천 메뉴 필요 선택
  • 추천 메뉴 [Y]
  • 추천 메뉴 [N]

📍 한계점 및 개선 방향

- 처음 만들어본 선택지 게임이라 함수를 사용하는 것이 익숙하지 않아 간단한 로직임에도 불구하고 코드가 복잡해진 것이 가장 아쉬웠습니다.
추후에 간단하게라도 사이트를 만들어서 또간집 선택지 게임의 완성도를 높이고 싶습니다.

profile
💻🐜💡

0개의 댓글