피로그래밍 24기 4주차 팀 과제 - 숫자 카드 게임
1~10 사이의 숫자 카드로 다른 유저와 대결하는 웹 게임입니다.
랜덤으로 결정되는 승부 규칙(큰 숫자 승리 또는 작은 숫자 승리)에 따라 승패가 결정되며,
승리 시 자신의 카드 숫자만큼 점수를 획득하고, 패배 시 점수를 잃게 됩니다.
- 공격자가 5장의 랜덤 카드 중 1장을 선택하고 상대를 지정
- 수비자가 5장의 랜덤 카드 중 1장을 선택하여 반격
- 승부 규칙이 랜덤으로 결정됨 (큰 숫자 승리 / 작은 숫자 승리)
- 승자는 자신의 카드 숫자만큼 점수 획득, 패자는 점수 차감
- 누적 점수로 랭킹 결정
- Backend: Django 5.2.10
- Frontend: HTML, CSS, JavaScript
- Database: SQLite3
- Authentication: Django Allauth (소셜 로그인)
http://127.0.0.1:8000/admin접속- admin으로 로그인
- Users → ADD USER + 클릭
- 유저 2~3명 생성 (Username/Password: user1/fortest1, user2/fortest2)
브라우저 1 (user1):
- 로그인 → 게임 시작 → 카드 선택 → 상대 선택(user2) → 공격
브라우저 2 (user2):
- 로그인 → 게임 전적 → 반격하기 → 카드 선택 → 결과 확인
Piro24_CardGame_2/
├── config/ # Django 설정
├── games/ # 게임 앱
│ ├── models.py # Game, PlayerScore 모델
│ ├── services.py # 게임 로직
│ ├── views/ # 뷰 함수들
│ └── templates/games/ # HTML 템플릿
├── accounts/ # 인증 앱
├── manage.py
└── requirements.txt
- ⚔️ 게임 생성/공격: 5장 중 1장 선택, 상대 지정
- 🛡️ 반격: 공격받은 게임에 카드 선택
- 📋 게임 전적: 진행중/반격대기/완료 게임 확인 (최신순)
- 🎮 게임 상세: 카드, 승부 규칙, 결과 표시
- 🏆 랭킹: 누적 점수 순위
- ❌ 게임 취소: 반격 전 취소 가능
- 큰 숫자 승리: 더 큰 카드가 승리
- 작은 숫자 승리: 더 작은 카드가 승리
- 승리: 자신의 카드 숫자만큼 점수 획득
- 패배: 자신의 카드 숫자만큼 점수 차감
- 무승부: 점수 변동 없음
ModuleNotFoundError 발생 시:
pip install requests PyJWT cryptography python3-openid oauthlib requests-oauthlibDB 초기화 (데이터 삭제 주의):
rm db.sqlite3
python manage.py migrate
python manage.py createsuperuser피로그래밍 24기 2조