실습 - "간단한 게임" 만들어보기 (가위바위보, 숫자맞추기)
02-4. 실습: "간단한 게임" 만들어보기 (가위바위보, 숫자맞추기)
"이제 진짜 재미있는 것을 만들어볼까요? 게임 개발자가 된 기분이에요!"
안녕하세요!
🌟 Chapter 2.3을 완주하신 분들: 지금까지 정말 많은 것들을 배우셨네요! 🎉
🎯 Chapter 2.4부터 시작하시는 분들: 걱정하지 마세요! 이번 시간에는 재미있는 게임을 만들면서 프로그래밍의 즐거움을 느껴보겠습니다.
📚 이전 내용 간단 요약 (선택 사항)
Chapter 2.1~2.3에서 배운 핵심 개념:
# 기본 구조 (Chapter 2.1)
name = "김코딩"
score = 85
# 조건문으로 등급 계산
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
else:
grade = 'C'
# 여러 데이터 처리 (Chapter 2.2)
students = ["김코딩", "이파이썬", "박데이터"]
for student in students:
print(student)
# 에러 예방 (Chapter 2.3)
score_input = input("점수: ")
if score_input.isdigit():
score = int(score_input)
print(f"점수: {score}점")
else:
print("숫자를 입력해주세요!")
# 기본 구조 (Chapter 2.1)
name = "김코딩"
score = 85
# 조건문으로 등급 계산
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
else:
grade = 'C'
# 여러 데이터 처리 (Chapter 2.2)
students = ["김코딩", "이파이썬", "박데이터"]
for student in students:
print(student)
# 에러 예방 (Chapter 2.3)
score_input = input("점수: ")
if score_input.isdigit():
score = int(score_input)
print(f"점수: {score}점")
else:
print("숫자를 입력해주세요!")
💡 핵심 아이디어:
- 기본 문법으로 프로그램 작성
- 여러 데이터 처리
- 안전한 에러 처리
- 이제 이 모든 것을 조합해서 게임을 만들어보자!
💡 지금까지의 학습 여정
Chapter 2에서 마스터한 핵심 기술들:
✅ 변수, 함수, 조건문의 기초 (2.1)
✅ 리스트와 for문으로 데이터 처리 (2.2)
✅ 에러 처리와 AI 협업 디버깅 (2.3)
✅ 완전한 프로그램 설계 및 구현 능력
✅ 변수, 함수, 조건문의 기초 (2.1)
✅ 리스트와 for문으로 데이터 처리 (2.2)
✅ 에러 처리와 AI 협업 디버깅 (2.3)
✅ 완전한 프로그램 설계 및 구현 능력
이제 이 모든 지식을 결합해서 무엇을 만들 수 있을까요?
바로 진짜 재미있는 게임을 만들어볼 시간입니다! 🎮
🎯 왜 게임을 만들까요?
🎮 게임 개발의 학습 효과:
- 모든 프로그래밍 개념 종합 활용
- 사용자 상호작용 경험
- 로직 설계 및 문제 해결 능력 향상
- 성취감과 재미를 동시에!
🎮 게임 개발의 학습 효과:
- 모든 프로그래밍 개념 종합 활용
- 사용자 상호작용 경험
- 로직 설계 및 문제 해결 능력 향상
- 성취감과 재미를 동시에!
🎯 이번 시간에 만들 게임들
- 가위바위보 게임: 컴퓨터와 대결하는 클래식 게임
- 숫자맞추기 게임: 추리력을 시험하는 두뇌 게임
- 게임 통합 시스템: 두 게임을 하나로 합친 미니 게임센터
📋 시작하기 전에
Cursor를 열고 새 Python 파일을 만들어주세요:
Ctrl+N
으로 새 파일 생성Ctrl+S
로 저장 →mini_games.py
로 저장- Chat 패널 열기 (
Ctrl+L
)
🎮 PART 1: 가위바위보 게임 만들기
게임 설계부터 시작하기
Chat에 입력:
가위바위보 게임을 만들고 싶어요.
어떤 기능들이 필요하고 어떻게 설계하면 좋을까요?
가위바위보 게임을 만들고 싶어요.
어떤 기능들이 필요하고 어떻게 설계하면 좋을까요?
🤖 AI와 함께 게임 설계
AI가 제안할 설계:
가위바위보 게임 필요 기능:
1. 사용자 입력 받기 (가위/바위/보)
2. 컴퓨터 선택 랜덤 생성
3. 승부 판정 로직
4. 점수 시스템
5. 게임 반복 및 종료
6. 에러 처리 (잘못된 입력)
가위바위보 게임 필요 기능:
1. 사용자 입력 받기 (가위/바위/보)
2. 컴퓨터 선택 랜덤 생성
3. 승부 판정 로직
4. 점수 시스템
5. 게임 반복 및 종료
6. 에러 처리 (잘못된 입력)
🎯 실습 1: 기본 가위바위보 만들기
Chat에 요청:
간단한 가위바위보 게임을 단계별로 만들어주세요.
먼저 기본 버전부터 시작해주세요.
간단한 가위바위보 게임을 단계별로 만들어주세요.
먼저 기본 버전부터 시작해주세요.
AI가 만들어줄 기본 버전:
import random
print("=== 가위바위보 게임 ===")
while True:
print("\n가위, 바위, 보 중 하나를 선택하세요!")
# 사용자 입력
user_choice = input("당신의 선택 (종료: q): ")
# 종료 조건
if user_choice == 'q':
print("게임을 종료합니다!")
break
# 올바른 입력인지 확인
if user_choice not in ['가위', '바위', '보']:
print("❌ 가위, 바위, 보 중에서 선택해주세요!")
continue
# 컴퓨터 선택
choices = ['가위', '바위', '보']
computer_choice = random.choice(choices)
print("당신:", user_choice)
print("컴퓨터:", computer_choice)
# 승부 판정
if user_choice == computer_choice:
print("🤝 비겼습니다!")
elif (user_choice == "가위" and computer_choice == "보") or \
(user_choice == "바위" and computer_choice == "가위") or \
(user_choice == "보" and computer_choice == "바위"):
print("🎉 당신이 이겼습니다!")
else:
print("😅 컴퓨터가 이겼습니다!")
import random
print("=== 가위바위보 게임 ===")
while True:
print("\n가위, 바위, 보 중 하나를 선택하세요!")
# 사용자 입력
user_choice = input("당신의 선택 (종료: q): ")
# 종료 조건
if user_choice == 'q':
print("게임을 종료합니다!")
break
# 올바른 입력인지 확인
if user_choice not in ['가위', '바위', '보']:
print("❌ 가위, 바위, 보 중에서 선택해주세요!")
continue
# 컴퓨터 선택
choices = ['가위', '바위', '보']
computer_choice = random.choice(choices)
print("당신:", user_choice)
print("컴퓨터:", computer_choice)
# 승부 판정
if user_choice == computer_choice:
print("🤝 비겼습니다!")
elif (user_choice == "가위" and computer_choice == "보") or \
(user_choice == "바위" and computer_choice == "가위") or \
(user_choice == "보" and computer_choice == "바위"):
print("🎉 당신이 이겼습니다!")
else:
print("😅 컴퓨터가 이겼습니다!")
실행 후 Chat에서 질문:
이 코드를 더 좋게 만들 수 있는 방법이 있나요?
에러 처리와 반복 기능을 추가해주세요.
이 코드를 더 좋게 만들 수 있는 방법이 있나요?
에러 처리와 반복 기능을 추가해주세요.
🎯 실습 2: 고급 가위바위보 게임
Chat에 요청:
간단한 가위바위보 게임을 만들어주세요.
안전한 입력 처리도 포함해주세요.
간단한 가위바위보 게임을 만들어주세요.
안전한 입력 처리도 포함해주세요.
AI가 만들어줄 간단 버전:
import random
print("🎮 가위바위보 게임!")
print("=" * 30)
# 게임 선택지
choices = ['가위', '바위', '보']
# 점수 저장용 변수
user_score = 0
computer_score = 0
game_count = 0
# 게임 시작
print("게임을 시작합니다! (종료하려면 'q' 입력)")
# 게임 반복 (while 사용!)
while True:
print(f"\n--- {game_count + 1}게임 ---")
# 사용자 입력 (안전하게)
user_input = input("가위, 바위, 보 중 선택: ").strip()
# 종료 확인
if user_input == 'q':
print("게임을 종료합니다!")
break
# 올바른 선택인지 확인
if user_input not in choices:
print("❌ 가위, 바위, 보 중에서만 선택해주세요!")
continue # 다시 입력받기
# 컴퓨터 선택
computer_choice = random.choice(choices)
print(f"당신: {user_input}")
print(f"컴퓨터: {computer_choice}")
# 승부 판정
if user_input == computer_choice:
result = "무승부"
elif (user_input == '가위' and computer_choice == '보') or \
(user_input == '바위' and computer_choice == '가위') or \
(user_input == '보' and computer_choice == '바위'):
result = "승리"
user_score += 1
else:
result = "패배"
computer_score += 1
game_count += 1
print(f"결과: {result}!")
print(f"현재 점수 - 당신: {user_score}, 컴퓨터: {computer_score}")
# 최종 결과
print("\n" + "=" * 30)
print("🏆 최종 결과")
print(f"총 게임 수: {game_count}")
print(f"당신: {user_score}승")
print(f"컴퓨터: {computer_score}승")
if user_score > computer_score:
print("🎉 축하합니다! 당신이 이겼습니다!")
elif user_score < computer_score:
print("😅 아쉽네요. 컴퓨터가 이겼습니다!")
else:
print("🤝 무승부입니다!")
import random
print("🎮 가위바위보 게임!")
print("=" * 30)
# 게임 선택지
choices = ['가위', '바위', '보']
# 점수 저장용 변수
user_score = 0
computer_score = 0
game_count = 0
# 게임 시작
print("게임을 시작합니다! (종료하려면 'q' 입력)")
# 게임 반복 (while 사용!)
while True:
print(f"\n--- {game_count + 1}게임 ---")
# 사용자 입력 (안전하게)
user_input = input("가위, 바위, 보 중 선택: ").strip()
# 종료 확인
if user_input == 'q':
print("게임을 종료합니다!")
break
# 올바른 선택인지 확인
if user_input not in choices:
print("❌ 가위, 바위, 보 중에서만 선택해주세요!")
continue # 다시 입력받기
# 컴퓨터 선택
computer_choice = random.choice(choices)
print(f"당신: {user_input}")
print(f"컴퓨터: {computer_choice}")
# 승부 판정
if user_input == computer_choice:
result = "무승부"
elif (user_input == '가위' and computer_choice == '보') or \
(user_input == '바위' and computer_choice == '가위') or \
(user_input == '보' and computer_choice == '바위'):
result = "승리"
user_score += 1
else:
result = "패배"
computer_score += 1
game_count += 1
print(f"결과: {result}!")
print(f"현재 점수 - 당신: {user_score}, 컴퓨터: {computer_score}")
# 최종 결과
print("\n" + "=" * 30)
print("🏆 최종 결과")
print(f"총 게임 수: {game_count}")
print(f"당신: {user_score}승")
print(f"컴퓨터: {computer_score}승")
if user_score > computer_score:
print("🎉 축하합니다! 당신이 이겼습니다!")
elif user_score < computer_score:
print("😅 아쉽네요. 컴퓨터가 이겼습니다!")
else:
print("🤝 무승부입니다!")
실행 후 Chat에서 질문:
1. while True와 break는 어떻게 작동하나요?
2. continue는 언제 사용하나요?
3. random.choice()는 어떤 원리인가요?
1. while True와 break는 어떻게 작동하나요?
2. continue는 언제 사용하나요?
3. random.choice()는 어떤 원리인가요?
## 🔢 PART 2: 숫자맞추기 게임 만들기
### 게임 기획하기
**Chat에 질문:**
## 🔢 PART 2: 숫자맞추기 게임 만들기
### 게임 기획하기
**Chat에 질문:**
숫자맞추기 게임을 만들고 싶어요. 어떤 기능들이 있으면 재미있을까요?
### 🎯 실습 3: 기본 숫자맞추기 게임
**Chat에 요청:**
### 🎯 실습 3: 기본 숫자맞추기 게임
**Chat에 요청:**
1부터 100까지 숫자 중 하나를 맞추는 게임을 만들어주세요. 힌트 기능과 시도 횟수 제한도 포함해주세요.
AI가 만들어줄 간단한 숫자맞추기 게임:
```python
import random
print("=== 숫자맞추기 게임 ===")
# 컴퓨터가 1부터 10까지 숫자 중 하나를 선택
secret_number = random.randint(1, 10)
attempts = 0
max_attempts = 3
print("컴퓨터가 1부터 10까지 숫자 중 하나를 생각했습니다!")
print(f"총 {max_attempts}번의 기회가 있어요.")
while attempts < max_attempts:
# 사용자 입력받기
user_input = input(f"\n{attempts + 1}번째 시도 - 숫자를 맞춰보세요: ")
# 숫자인지 확인
if user_input.isdigit():
guess = int(user_input)
attempts += 1
# 범위 확인
if 1 <= guess <= 10:
# 정답 확인
if guess == secret_number:
print(f"🎉 정답입니다! {attempts}번 만에 맞추셨네요!")
break
elif guess < secret_number:
print("📈 더 큰 수를 입력하세요!")
else:
print("📉 더 작은 수를 입력하세요!")
else:
print("❌ 1부터 10 사이의 숫자를 입력해주세요!")
attempts -= 1 # 잘못된 입력은 횟수에 포함하지 않음
else:
print("❌ 숫자를 입력해주세요!")
# 게임 종료
if attempts == max_attempts and guess != secret_number:
print(f"💥 게임 오버! 정답은 {secret_number}이었습니다.")
AI가 만들어줄 간단한 숫자맞추기 게임:
```python
import random
print("=== 숫자맞추기 게임 ===")
# 컴퓨터가 1부터 10까지 숫자 중 하나를 선택
secret_number = random.randint(1, 10)
attempts = 0
max_attempts = 3
print("컴퓨터가 1부터 10까지 숫자 중 하나를 생각했습니다!")
print(f"총 {max_attempts}번의 기회가 있어요.")
while attempts < max_attempts:
# 사용자 입력받기
user_input = input(f"\n{attempts + 1}번째 시도 - 숫자를 맞춰보세요: ")
# 숫자인지 확인
if user_input.isdigit():
guess = int(user_input)
attempts += 1
# 범위 확인
if 1 <= guess <= 10:
# 정답 확인
if guess == secret_number:
print(f"🎉 정답입니다! {attempts}번 만에 맞추셨네요!")
break
elif guess < secret_number:
print("📈 더 큰 수를 입력하세요!")
else:
print("📉 더 작은 수를 입력하세요!")
else:
print("❌ 1부터 10 사이의 숫자를 입력해주세요!")
attempts -= 1 # 잘못된 입력은 횟수에 포함하지 않음
else:
print("❌ 숫자를 입력해주세요!")
# 게임 종료
if attempts == max_attempts and guess != secret_number:
print(f"💥 게임 오버! 정답은 {secret_number}이었습니다.")
🎮 PART 3: 미니 게임센터 만들기
두 게임을 하나로 합치기
Chat에 요청:
가위바위보와 숫자맞추기 게임을 선택할 수 있는
간단한 메뉴를 만들어주세요.
가위바위보와 숫자맞추기 게임을 선택할 수 있는
간단한 메뉴를 만들어주세요.
🎯 실습 3: 간단한 게임 메뉴
AI가 만들어줄 게임 메뉴:
import random
print("=== 미니 게임센터 ===")
while True:
print("\n어떤 게임을 하고 싶나요?")
print("1. 가위바위보")
print("2. 숫자맞추기")
print("3. 종료")
choice = input("선택하세요 (1-3): ")
if choice == '1':
# 가위바위보 게임
print("\n=== 가위바위보 게임 ===")
while True:
user_choice = input("가위, 바위, 보 중 선택 (종료: q): ")
if user_choice == 'q':
break
if user_choice not in ['가위', '바위', '보']:
print("❌ 가위, 바위, 보 중에서 선택해주세요!")
continue
choices = ['가위', '바위', '보']
computer_choice = random.choice(choices)
print("당신:", user_choice)
print("컴퓨터:", computer_choice)
if user_choice == computer_choice:
print("🤝 비겼습니다!")
elif (user_choice == "가위" and computer_choice == "보") or \
(user_choice == "바위" and computer_choice == "가위") or \
(user_choice == "보" and computer_choice == "바위"):
print("🎉 당신이 이겼습니다!")
else:
print("😅 컴퓨터가 이겼습니다!")
elif choice == '2':
# 숫자맞추기 게임
print("\n=== 숫자맞추기 게임 ===")
secret_number = random.randint(1, 10)
attempts = 0
max_attempts = 3
print("컴퓨터가 1부터 10까지 숫자 중 하나를 생각했습니다!")
print(f"총 {max_attempts}번의 기회가 있어요.")
while attempts < max_attempts:
user_input = input(f"{attempts + 1}번째 시도 - 숫자를 맞춰보세요: ")
if user_input.isdigit():
guess = int(user_input)
attempts += 1
if guess == secret_number:
print(f"🎉 정답입니다! {attempts}번 만에 맞추셨네요!")
break
elif guess < secret_number:
print("📈 더 큰 수를 입력하세요!")
else:
print("📉 더 작은 수를 입력하세요!")
else:
print("❌ 숫자를 입력해주세요!")
if attempts == max_attempts and guess != secret_number:
print(f"💥 게임 오버! 정답은 {secret_number}이었습니다.")
elif choice == '3':
print("👋 게임센터를 종료합니다. 즐거우셨나요?")
break
else:
print("❌ 1, 2, 3 중에서 선택해주세요!")
import random
print("=== 미니 게임센터 ===")
while True:
print("\n어떤 게임을 하고 싶나요?")
print("1. 가위바위보")
print("2. 숫자맞추기")
print("3. 종료")
choice = input("선택하세요 (1-3): ")
if choice == '1':
# 가위바위보 게임
print("\n=== 가위바위보 게임 ===")
while True:
user_choice = input("가위, 바위, 보 중 선택 (종료: q): ")
if user_choice == 'q':
break
if user_choice not in ['가위', '바위', '보']:
print("❌ 가위, 바위, 보 중에서 선택해주세요!")
continue
choices = ['가위', '바위', '보']
computer_choice = random.choice(choices)
print("당신:", user_choice)
print("컴퓨터:", computer_choice)
if user_choice == computer_choice:
print("🤝 비겼습니다!")
elif (user_choice == "가위" and computer_choice == "보") or \
(user_choice == "바위" and computer_choice == "가위") or \
(user_choice == "보" and computer_choice == "바위"):
print("🎉 당신이 이겼습니다!")
else:
print("😅 컴퓨터가 이겼습니다!")
elif choice == '2':
# 숫자맞추기 게임
print("\n=== 숫자맞추기 게임 ===")
secret_number = random.randint(1, 10)
attempts = 0
max_attempts = 3
print("컴퓨터가 1부터 10까지 숫자 중 하나를 생각했습니다!")
print(f"총 {max_attempts}번의 기회가 있어요.")
while attempts < max_attempts:
user_input = input(f"{attempts + 1}번째 시도 - 숫자를 맞춰보세요: ")
if user_input.isdigit():
guess = int(user_input)
attempts += 1
if guess == secret_number:
print(f"🎉 정답입니다! {attempts}번 만에 맞추셨네요!")
break
elif guess < secret_number:
print("📈 더 큰 수를 입력하세요!")
else:
print("📉 더 작은 수를 입력하세요!")
else:
print("❌ 숫자를 입력해주세요!")
if attempts == max_attempts and guess != secret_number:
print(f"💥 게임 오버! 정답은 {secret_number}이었습니다.")
elif choice == '3':
print("👋 게임센터를 종료합니다. 즐거우셨나요?")
break
else:
print("❌ 1, 2, 3 중에서 선택해주세요!")
🎯 완성도 높이기
Chat에 이런 질문들을 해보세요
1. 게임 개선:
"이 게임들에 어떤 기능을 더 추가하면 재미있을까요?"
"난이도 조절 기능을 추가하는 방법을 알려주세요."
"이 게임들에 어떤 기능을 더 추가하면 재미있을까요?"
"난이도 조절 기능을 추가하는 방법을 알려주세요."
2. 코드 최적화:
"이 코드에서 중복되는 부분을 줄이는 방법이 있나요?"
"더 효율적인 코드 구조로 개선해주세요."
"이 코드에서 중복되는 부분을 줄이는 방법이 있나요?"
"더 효율적인 코드 구조로 개선해주세요."
3. 새로운 게임:
"비슷한 난이도로 만들 수 있는 다른 게임 아이디어를 제안해주세요."
"틱택토 게임을 추가하려면 어떻게 해야 하나요?"
"비슷한 난이도로 만들 수 있는 다른 게임 아이디어를 제안해주세요."
"틱택토 게임을 추가하려면 어떻게 해야 하나요?"
🎊 학습 성과 체크
오늘의 달성도
✅ 완료 체크:
- [ ] 게임 로직 설계 및 구현
- [ ] 사용자 상호작용 시스템 구축
- [ ] 에러 처리가 포함된 견고한 프로그램
- [ ] 파일 I/O를 활용한 데이터 저장
- [ ] 객체지향 프로그래밍 기초 적용
- [ ] 완전한 미니 프로젝트 완성
✅ 완료 체크:
- [ ] 게임 로직 설계 및 구현
- [ ] 사용자 상호작용 시스템 구축
- [ ] 에러 처리가 포함된 견고한 프로그램
- [ ] 파일 I/O를 활용한 데이터 저장
- [ ] 객체지향 프로그래밍 기초 적용
- [ ] 완전한 미니 프로젝트 완성
실력 향상 지표
Before (Chapter 2-3 이후):
- 개별 개념들을 따로 이해
- 간단한 예제 코드 작성 가능
After (Chapter 2-4 이후):
- 여러 개념을 통합한 완전한 프로그램 설계
- 사용자 경험을 고려한 인터페이스 구현
- 실제 사용 가능한 수준의 프로젝트 완성
- 게임 개발의 기초 원리 이해
Before (Chapter 2-3 이후):
- 개별 개념들을 따로 이해
- 간단한 예제 코드 작성 가능
After (Chapter 2-4 이후):
- 여러 개념을 통합한 완전한 프로그램 설계
- 사용자 경험을 고려한 인터페이스 구현
- 실제 사용 가능한 수준의 프로젝트 완성
- 게임 개발의 기초 원리 이해
🌟 마무리
축하합니다! 이제 여러분은 진짜 게임 개발자가 되었습니다! 🎉
🔥 오늘의 성취
- 두 개의 완전한 게임 완성
- 통합 게임센터 시스템 구축
- 모든 배운 개념들의 실전 적용
- 사용자 친화적 인터페이스 설계
💬 다음 Chapter 예고
다음 Chapter 3에서는 Edit 기능으로 코드 개선하기를 배워보겠습니다!
- Ctrl+K로 코드 선택하고 개선하기
- AI와 함께 코드 리팩토링하기
- 더 읽기 쉽고 효율적인 코드 만들기
🎯 과제 (선택사항)
게임 개발자 도전:
AI에게 요청:
"오늘 만든 미니 게임센터에 새로운 게임을 하나 더 추가해주세요.
기존 게임들과 비슷한 수준의 복잡도로 만들어주세요."
AI에게 요청:
"오늘 만든 미니 게임센터에 새로운 게임을 하나 더 추가해주세요.
기존 게임들과 비슷한 수준의 복잡도로 만들어주세요."
여러분은 이제 AI와 함께 어떤 프로그램이든 만들 수 있는 진짜 개발자가 되었습니다! 🚀
💡 오늘 만든 게임들을 친구들에게 자랑해보세요! 여러분이 직접 만든 첫 번째 게임입니다!