소개 (시도한 내용과 동기)
원래는 Google AI Studio의 Build apps with Gemini 기능으로 웹 기반 카드 게임을 만들어보고 싶었음
하지만 회사 노트북 보안 문제로 Google AI Studio 로그인 자체가 불가능 → 계획 수정 필요
결국 웹 대신 로컬 환경에서 클로드 + 파이썬 조합으로 과제 완수
진행 방법 (사용한 도구, 프롬프트, 코드 등)
모각에서 공유된 예시 프롬프트를 활용
프롬프트를 구체적으로 작성하는 것의 중요성을 체감
MCP 설치 여부를 고민했지만, 클로드에게 바로 프롬프트를 전달 → 예상대로 py 파일 생성됨
파이썬 실행 과정에서 폴더 경로 문제를 경험 → 앞으로 터미널에서 경로를 직접 실행하는 방법을 익힐 필요성 확인
import tkinter as tk from tkinter import messagebox import random import time class MemoryCardGame: def __init__(self): self.root = tk.Tk() self.root.title("4x4 카드 맞추기 게임") self.root.geometry("600x700") self.root.configure(bg='#2c3e50') # 게임 변수들 self.cards = [] # 카드 버튼들 self.card_values = [] # 카드의 실제 값들 self.flipped_cards = [] # 현재 뒤집힌 카드들 self.matched_pairs = 0 # 맞춘 짝의 수 self.attempts = 0 # 시도 횟수 self.game_finished = False # 카드에 사용할 이모지들 (8쌍) self.symbols = ['🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼'] self.setup_ui() self.new_game() def setup_ui(self): """UI 구성""" # 제목 title_label = tk.Label( self.root, text="4x4 카드 맞추기 게임", font=('Arial', 20, 'bold'), bg='#2c3e50', fg='white' ) title_label.pack(pady=20) # 게임 정보 프레임 info_frame = tk.Frame(self.root, bg='#2c3e50') info_frame.pack(pady=10) # 시도 횟수 라벨 self.attempts_label = tk.Label( info_frame, text="시도 횟수: 0", font=('Arial', 14), bg='#2c3e50', fg='white' ) self.attempts_label.pack(side=tk.LEFT, padx=20) # 맞춘 짝 수 라벨 self.pairs_label = tk.Label( info_frame, text="맞춘 짝: 0/8", font=('Arial', 14), bg='#2c3e50', fg='white' ) self.pairs_label.pack(side=tk.LEFT, padx=20) # 게임 보드 프레임 self.game_frame = tk.Frame(self.root, bg='#2c3e50') self.game_frame.pack(pady=20) # 새 게임 버튼 new_game_btn = tk.Button( self.root, text="새 게임", font=('Arial', 14), bg='#3498db', fg='white', padx=20, pady=10, command=self.new_game ) new_game_btn.pack(pady=20) def new_game(self): """새 게임 시작""" # 기존 카드 버튼들 제거 for widget in self.game_frame.winfo_children(): widget.destroy() # 게임 상태 초기화 self.cards = [] self.card_values = [] self.flipped_cards = [] self.matched_pairs = 0 self.attempts = 0 self.game_finished = False # 카드 값 생성 (각 심볼을 2개씩) values = self.symbols + self.symbols random.shuffle(values) # 4x4 그리드로 카드 생성 for i in range(4): card_row = [] value_row = [] for j in range(4): index = i * 4 + j value = values[index] # 카드 버튼 생성 card = tk.Button( self.game_frame, text="?", font=('Arial', 24, 'bold'), width=4, height=2, bg='#34495e', fg='white', command=lambda row=i, col=j: self.flip_card(row, col) ) card.grid(row=i, column=j, padx=2, pady=2) card_row.append(card) value_row.append(value) self.cards.append(card_row) self.card_values.append(value_row) self.update_labels() def flip_card(self, row, col): """카드 뒤집기""" if self.game_finished: return card = self.cards[row][col] # 이미 뒤집힌 카드거나 매치된 카드인 경우 무시 if (row, col) in self.flipped_cards or card['bg'] == '#27ae60': return # 이미 2장이 뒤집힌 상태인 경우 무시 if len(self.flipped_cards) >= 2: return # 카드 뒤집기 card.config(text=self.card_values[row][col], bg='#ecf0f1', fg='black') self.flipped_cards.append((row, col)) # 2장이 뒤집힌 경우 확인 if len(self.flipped_cards) == 2: self.root.after(1000, self.check_match) # 1초 후 확인 def check_match(self): """짝 맞는지 확인""" if len(self.flipped_cards) != 2: return row1, col1 = self.flipped_cards[0] row2, col2 = self.flipped_cards[1] card1 = self.cards[row1][col1] card2 = self.cards[row2][col2] value1 = self.card_values[row1][col1] value2 = self.card_values[row2][col2] self.attempts += 1 if value1 == value2: # 짝이 맞는 경우 card1.config(bg='#27ae60') # 초록색으로 변경 card2.config(bg='#27ae60') self.matched_pairs += 1 # 게임 완료 확인 if self.matched_pairs == 8: self.game_finished = True messagebox.showinfo( "게임 완료!", f"축하합니다! 게임을 완료했습니다!\n총 시도 횟수: {self.attempts}회" ) else: # 짝이 틀린 경우 - 카드를 다시 뒤집기 card1.config(text="?", bg='#34495e', fg='white') card2.config(text="?", bg='#34495e', fg='white') # 뒤집힌 카드 목록 초기화 self.flipped_cards = [] self.update_labels() def update_labels(self): """라벨 업데이트""" self.attempts_label.config(text=f"시도 횟수: {self.attempts}") self.pairs_label.config(text=f"맞춘 짝: {self.matched_pairs}/8") def run(self): """게임 실행""" self.root.mainloop() # 게임 실행 if __name__ == "__main__": game = MemoryCardGame() game.run()결과와 배운 점
최종 결과물 (동물이 너무 많아서 다 맞추기가 어려움 ㅠㅠ)
AI 도구는 다양하지만, 어떤 도구를 선택하느냐가 결과에 큰 영향을 미친다는 점
프롬프트의 디테일이 작업 효율을 크게 좌우한다는 깨달음
파이썬은 범용성이 좋아서 AI 도구와 결합했을 때 큰 잠재력이 있음 → 앞으로도 계속 공부하고 활용할 계획
코딩 관련 MPC를 설치했다면 다른 결과물이 나왔을까?😇
도움 받은 글 (선택)
모각에서 공유된 프롬프트 예시
회사 노 트북 보안 때문에 구글 대신 클로드와 파이썬으로 완성한 카드게임
4개의 답글