여러 미니게임을 하나의 콘솔 게임에서 실행하는 파이썬 술게임 팀원 각자 미니게임 1개씩 제작 →
main.py에서 통합 실행
| 이름 | 담당 게임 | 파일 |
|---|---|---|
| 강보민 | game_1 | games/game_1.py |
| 이지연 | game_2 | games/game_2.py |
| 이주헌 | game_3 | games/game_3.py |
| 장희원 | game_4 | games/game_4.py |
| 정현민 | game_5 | games/game_5.py |
- 각 게임은 자유롭게 기획 (단, 아래 주의사항 준수)
main.py/players.py공용 파일은 수정이 필요하면 직접 고치지 말고 공유
각 팀원이 만든 미니게임을 아래에 정리합니다. (본인 파트는 직접 작성해주세요!)
게임 소개 지목이 체인처럼 이어지는 반응속도 게임입니다. 시작하는 사람이 "아싸 너너!" 하며 두 명을 동시에 지목하면, 지목당한 사람들이 각자 또 다른 사람을 지목하며 체인이 계속 이어집니다. 우연히 같은 사람이 두 번 지목당하면(더블 지목), 그 사람이 "아싸 홍삼 !"을 외쳐야 라운드가 평화롭게 끝나고, 그 사람이 다시 두 명을 지목하며 게임이 계속됩니다.
벌칙 조건
- 지목당했는데 3초 안에 다음 사람을 지목하지 못함 (오타, 시간초과, 자기자신 지목 포함)
- 더블 지목당했는데 3초 안에 "아싸 홍삼 !"을 외치지 못함
참고
- 인원이 2명일 때는 단순 핑퐁 버전으로 자동 전환됩니다.
- 3초 시간제한 입력은
threading기반으로 구현되어 있어 cmd, PowerShell, Git Bash 등 모든 터미널 환경에서 동작합니다.
게임 소개 정해진 순서를 라운드마다 하나씩 이어 붙여 외치는 게임입니다. 순서는 딸기 → 당근 → 수박 → 참외 → 메론이며, 5개를 넘어가면 다시 딸기부터 반복됩니다. 1라운드는 "딸기", 2라운드는 "딸기당근", 3라운드는 "딸기당근수박"... 이런 식으로 과일이 하나씩 누적되고, 누적된 순서 전체를 제한시간 안에 정확히 입력해야 다음 라운드로 넘어갑니다. 누군가 걸릴 때까지 라운드가 계속 이어집니다.
벌칙 조건
- 누적된 순서를 틀리게 입력함 (순서 오류, 오타 포함)
- 제한시간 안에 입력을 끝내지 못함 (시간초과)
참고
- 입력할 때 띄어쓰기는 무시되므로 "딸기당근수박", "딸기 당근 수박" 둘 다 정답 처리됩니다.
- 제한시간은 라운드가 올라갈수록 늘어나지만, 외울 양도 함께 늘어나 난이도가 점점 올라갑니다.
- 통과한 라운드의 답은 자동으로 가려져(●) 이전 정답을 보고 따라 칠 수 없습니다.
게임 소개
어목조동 게임은 참가자가 다른 플레이어를 지목한 뒤, 어·목·조·동 중 하나의 카테고리를 선택하는 게임입니다. 지목받은 플레이어는 제한시간 안에 해당 카테고리에 맞는 단어를 말해야 합니다.
어: 물고기 목: 나무 조: 새 동: 그 밖의 동물
정답을 말한 플레이어는 다음 지목자가 되어 다른 플레이어를 지목하고 카테고리를 선택합니다. 게임에서 한 번 나온 단어는 다시 사용할 수 없으며, 정답 횟수가 증가할수록 제한시간이 줄어듭니다.
벌칙 조건
- 선택된 카테고리에 해당하지 않는 단어를 말하면 1잔을 마십니다.
- 이미 나온 단어를 다시 말하면 1잔을 마십니다.
- 아무 단어도 입력하지 않으면 1잔을 마십니다.
- 제한시간 안에 답변하지 못하면 2잔을 마십니다.
- 벌칙 조건이 발생하면 해당 플레이어를 패배자로 선정하고 게임을 종료합니다.
게임 소개
모든 플레이어는 1~99까지의 숫자 중 하나를 무작위로 배정받고 각자 배정받은 숫자의 십의 자리와 일의 자리를 비교하여 벌칙자를 선정합니다.
벌칙 조건
Rule 1. 십의 자리가 겹칠 때 (최우선 적용) : 플레이어들 간에 십의 자리 숫자가 같은 경우가 발생하면, 그중 가장 작은 전체 숫자를 입력한 플레이어가 벌칙 당첨자가 됩니다. Rule 2. 일의 자리가 겹칠 때 (십의 자리가 모두 다를 때만 적용) : 모든 플레이어의 십의 자리 숫자가 전부 다르고, 일의 자리 숫자만 겹치는 경우가 발생하면, 그중 가장 큰 전체 숫자를 입력한 플레이어가 벌칙 당첨자가 됩니다. Rule 3. 게임 종료 : 모든 플레이어의 숫자가 십의 자리도, 일의 자리도 전혀 겹치지 않는다면 아무도 마시지 않고 게임이 종료됩니다. 추가 조건 1. 연속된 숫자 (11, 22, 33, 44, 55, 66, 77, 88) : 걸린 사람의 숫자가 이 중 하나라면, 해당 숫자를 가진 모든 플레이어가 연대책임으로 벌칙 1잔씩을 추가로 마십니다. 추가 조건 2. 0,9 : 걸린 사람의 숫자에 0 또는 9가 포함되어 있다면 (예: 9, 20, 49, 90 등), 해당 벌칙자만 1잔을 추가해서 마십니다.
게임 소개
서울 지하철 1~9호선에서 플레이어와 NPC가 돌아가며 현재 호선의 역 이름을 대는 콘솔 서바이벌 게임입니다. 시작할 호선을 외치면 순서대로 그 호선의 역을 하나씩 대고, 환승역에서는 역이름 환승 형식으로 다른 호선으로 갈아탈 수 있습니다. (그 역이 실제로 지나는 호선으로만 이동 가능) 서울 내의 지하철역으로만 범위를 한정하며, 수인분당, 경의중앙 등의 호선은 포함하지 않습니다. "이수 or 총신대입구"역은 "이수역"으로 통일합니다
벌칙 조건
아래 중 하나라도 해당하면 즉시 탈락하며, 탈락한 사람이 술을 마십니다.
- 현재 호선에 없는 역을 댄 경우
- 이미 나온 역을 다시 댄 경우 (중복)
- 환승역이 아닌 곳에서 환승을 시도한 경우
반드시 프로젝트 최상위 폴더에서 실행하세요: 프로젝트 폴더에서 아래 명령어를 순서대로 실행합니다.
pip install -r requirements.txt
python main.pygames/ 폴더 안에서 실행하면 import 에러가 발생하니 주의하세요.
각 게임은 함수 하나로 캡슐화
# games/game_N.py
def play(current_player, others, user_name):
# 이 안에서는 변수 이름 자유롭게 사용 가능
# 모듈이 분리되어 있어 다른 게임 파일과 변수명이 충돌하지 않음
...
return {current_player: 1}계약 4줄 요약
- 함수는 무조건 def play(current_player, others, user_name): 형태로 작성 — 이름과 순서 고정
current_player는 이번 게임을 선택한 플레이어의 이름 문자열- others는 나머지 플레이어의 이름 문자열 리스트, user_name은 실제로 키보드를 입력하는 사용자의 이름 문자열
- 리턴은 무조건
{이름: 잔수}딕셔너리, 아무도 마시지 않으면 빈 딕셔너리{}
게임 종류가 자유롭고 여러 명이 마실 수 있으므로 리턴값은 딕셔너리로 통일
current_player는 게임을 선택한 사람이고,user_name은 실제 키보드를 사용하는 사람 따라서 실제 사용자 차례인지 확인할 때는current_player == user_name또는 게임 진행 중 현재 차례의 플레이어와user_name을 비교 혼자 하는 게임은others를 사용하지 않아도 되고, 대결형 게임은random.choice(others)로 상대를 선택할 수 있음 사용하지 않는 파라미터가 있어도 문제 X
Piro25_PythonGame_2/
├── main.py # 메인 실행 (이름/주량/초대/게임 리스트/게임오버 처리)
├── players.py # 플레이어 상태 관리 (이름, 주량, 마신 잔 수)
└── games/
├── __init__.py # 빈 파일 (games를 패키지로 인식시킴)
├── game_1.py # 강보민
├── game_2.py # 이지연
├── game_3.py # 이주헌
├── game_4.py # 장희원
└── game_5.py # 정현민
- 각자 자기
game_N.py파일 하나만 작업 → 파일이 분리돼 있어 Git 충돌 거의 없음 - 실행은 반드시 최상위 폴더에서:
python main.py(games/ 안에서 실행하면 import 실패)
main: 최종 완성본 (직접 커밋 금지)develop: 개발 브랜치 (작업내용은 여기에 PR 날리기)이름: 각자 작업 브랜치 (예:보민,지연,주헌,희원,현민)- 작업 시작 전 항상
git pull origin develop - 작업 완료 → PR 올리기 → 리뷰 후 머지
형식: 타입: 내용
feat:기능·게임 구현 —feat: game_3 두부 게임 구현fix:버그·오류 수정 —fix: 잘못된 입력 예외처리 수정
- ❌ pygame 사용 금지 — 콘솔창에서 실행되도록 구현
- 양심상 너무 단순한 게임은 지양 — 한 게임 당 최소 20줄 이상 코드 작성
- ❌ 예시에 나와 있는 술게임 금지!! (초성 / 369 / 두부 / 좋아 / 사랑의 총알 게임 등)
- 주량 선택·초대 인원 등 잘못된 입력에 대한 예외처리 필수
- 한 명이 치사량에 도달하면 현재 상황 출력 후 게임 종료