Skip to content

Repository files navigation

💚 25기 4주차 팀 과제 PR – 숫자 카드 게임 💚


✅ 과제 개요


👥 팀원 및 역할 분담

이름 담당 기능
한지수 로그인/회원가입 (소셜+일반)
임현아 숫자 카드 생성 및 공격
정현민 반격 기능, 게임 취소 기능
이환희 점수 계산 및 저장, 도커 작성 및 이미지 배포
정다희 게임 리스트 페이지, 게임 상세 페이지, 프론트엔드 완성(전체 CSS 통일)

개인 브랜치명

feat/이름이니셜

모든 팀원이 직접 커밋 및 구현에 참여하였습니다.


🔧 구현 기능 체크리스트

기능 구현 여부 설명
로그인/회원가입 (필수)소셜 로그인, (선택)일반 로그인
숫자 카드 생성 및 공격 랜덤 카드 5개 중 1개 선택 + 공격 대상 지정
반격 기능 구현 카드 선택 → 즉시 결과 반영
점수 계산 및 저장 승/패/무 처리, 점수 증감
게임 리스트 페이지 상태별 게임 분기: 진행중 / 반격대기 / 종료
게임 상세 페이지 카드, 결과, 버튼 상태 표시
게임 취소 기능 반격 전 본인 공격 게임만 삭제 가능
랭킹 페이지 유저별 누적 점수 정렬 및 표시
프론트엔드 완성 HTML/CSS 스타일링, 버튼 UI 등
도커 이미지 배포 배포한 도커 허브 링크 등
도커 컴포즈 구현

🔗 협업 도구 사용 내역

도구 사용 여부 링크 또는 설명
노션 (https://app.notion.com/p/1-8d1ecc3b753182289524811f91cf7405) – 공개 설정 필수
(챌린지)피그마 (https://www.figma.com/design/LXk4l347Y1UNF2W2bqVV5p/piro25_card_game?node-id=0-1&p=f&t=m1RTgWPupr8lRnUN-0) image

| | (챌린지)기타 도구 | / ❌ | [선택 사항] | | (챌린지)추가 기능 구현 | / ❌ | 구현 설명 |


🧠 어려웠던 점 / 고민한 부분(선택)


🙆 기타 사항

챌린지 등 추가로 공유할 내용이 있다면 적어주세요.

🃏 Piro25_CardGame

피로그래밍 25기 마지막 팀 과제 — 피로그래머 숫자 카드 게임

유저 간 숫자 카드 대결 웹 서비스입니다. 카드를 골라 상대에게 공격을 걸고, 상대가 반격하면 승패가 결정되어 점수가 오르내립니다. 누적 점수로 랭킹이 매겨집니다.

🎮 게임 방식

  1. 로그인 user🅰️로 로그인합니다. (소셜 로그인 필수, 일반 로그인 선택)

  2. 공격 신청 user🅰️가 자신이 낼 숫자 카드를 선택하고, 다른 유저에게 게임을 신청합니다.

    • 숫자 카드는 1~10 사이 숫자 중 랜덤으로 5장이 제공되며, 그중 1장을 선택합니다.
    • 여러 명의 유저 중 공격할 상대를 지정할 수 있습니다.
  3. 공격 확인 user🅱️가 로그인하면, 자신에게 요청된 대결을 게임 리스트에서 확인할 수 있습니다. (상태: 반격대기)

  4. 반격 요청받은 대결에 대해 user🅱️도 자신의 숫자 카드 5장 중 1장을 선택해 반격합니다.

  5. 결과 판정 user🅰️와 user🅱️가 각각 카드를 제출하면 게임 결과가 결정됩니다.

    • 승패는 두 카드 숫자의 크기 비교로 정해지며, "더 큰 숫자가 이기는지" 또는 "더 작은 숫자가 이기는지"의 기준은 게임마다 랜덤으로 정해집니다.
    • 승리자는 자신의 카드 숫자만큼 점수를 획득하고, 패배자는 자신의 카드 숫자만큼 점수를 잃습니다.
    • 무승부일 경우 양쪽 모두 점수 변동이 없습니다.
  6. 게임 취소 본인이 신청(공격)한 게임은, 상대가 반격하기 전까지만 취소(삭제)할 수 있습니다. 상대가 이미 반격했다면 취소할 수 없습니다.

  7. 랭킹 랭킹 페이지에서 전체 유저의 누적 점수를 기준으로 순위가 정렬되어 표시됩니다. (동점자는 공동 순위로 처리)

게임 상태 흐름

상태 의미
진행중 내가 공격을 신청했고, 상대의 반격을 기다리는 중
반격대기 상대의 공격을 받았고, 내가 반격해야 하는 상태
종료 양쪽 모두 카드를 제출해 승/패/무가 결정된 상태

🛠 기술 스택

  • Backend: Django
  • Frontend: HTML / CSS / JS (Django 템플릿)
  • 인증: 소셜 로그인 (Google / Naver / Kakao)
  • 배포: Docker / Docker Compose

📁 프로젝트 구조

Piro25_CardGame/
├── config/          # 프로젝트 설정 (settings, urls)
├── accounts/        # 유저 · 인증 (커스텀 User, 소셜 로그인)
├── games/           # 게임 핵심 로직 (공격 / 반격 / 취소 / 결과)
├── ranking/         # 랭킹 리그
├── templates/       # 공통 base.html
├── static/          # 공통 css / js
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── manage.py

앱은 역할별로 나뉘어 있습니다. 각자 담당 앱 안에서 작업하면 충돌이 최소화됩니다.


🚀 시작하기

1. 레포 클론 & develop 브랜치로 이동

git clone https://github.com/Pirogramming-25/Piro25_CardGame_1.git
cd Piro25_CardGame_1
git switch develop

기본 브랜치가 main일 수 있으니 반드시 develop으로 이동한 뒤 작업을 시작하세요.

2. 가상환경 생성 & 패키지 설치

python -m venv venv

# 활성화
source venv/bin/activate      # macOS / Linux
venv\Scripts\activate         # Windows

pip install -r requirements.txt

3. 환경변수(.env) 설정

cp .env.example .env          # Windows: copy .env.example .env

.env.example은 키 이름만 있는 껍데기입니다. 실제 값을 채워야 서버가 뜹니다.

  • SECRET_KEY, 소셜 로그인 키(Google / Naver / Kakao) 등 민감한 값은 git에 올라가지 않습니다.
  • 이 값들은 팀 리더가 디스코드 DM / 노션 비공개 페이지 등 안전한 경로로 별도 전달합니다.
  • ⚠️ .env 파일은 절대 커밋하지 마세요. (.gitignore에 이미 포함되어 있습니다.)

4. 마이그레이션 적용

python manage.py migrate
python manage.py createsuperuser   # 선택: admin으로 데이터 확인용

5. 서버 실행 확인

python manage.py check
python manage.py runserver

check 통과 후 http://127.0.0.1:8000 이 뜨면 세팅 완료입니다. 🎉


🌿 Git 협업 규칙

브랜치 전략

  • main : 최종 제출용 (직접 머지 금지)
  • develop : 통합 브랜치 (여기서 각자 개인 브랜치를 땀)
  • 개인 브랜치 : 자기 이름으로 브랜치를 파서 작업

작업 흐름

git switch develop
git pull                          # 최신 develop 상태로 동기화
git switch -c 이름           # 자기 이름으로 브랜치 생성

# ... 작업 & 커밋 ...

git push origin 이름        # push 후 develop 대상으로 PR 생성
  • 작업은 항상 develop에서 딴 자기 이름 브랜치에서 진행합니다.
  • 완료되면 develop 대상으로 PR을 올립니다. (main에 직접 머지 금지)
  • 커밋은 팀원 각자 자기 몫을 직접 남깁니다.

⚠️ 팀 필수 규칙

  • 마이그레이션 파일(*/migrations/0001_*.py)은 반드시 커밋합니다. 무시하면 팀원 간 DB 스키마가 어긋납니다.
  • 새 패키지를 설치하면 반드시 requirements.txt를 갱신해서 커밋하세요.
    pip freeze > requirements.txt
    갱신을 깜빡하면 다른 팀원이 pull 후 "나는 안 돌아간다" 상황이 발생합니다.
  • .env, 소셜 로그인 키 등 민감 정보는 절대 커밋하지 않습니다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages