‘카카오 클라우드 스쿨 in Jeju’를 진행하며 제작한 CLI 프로그램입니다.
- 프로젝트 이름 : TCP 통신을 사용한 Buckshot Roulette
- 원작 : Buckshot Roulette (steam)
- 프로젝트 개발 기간 : 2024.05.16 ~
- 개발 언어 : Java 21
- 개발 IDE : IntelliJ IDEA CE
서버 실행
cd 5-haisely-java-cli/src/main/java
javac com/buckshot/NetworkMain.java
java com.buckshot.NetworkMain
클라이언트 실행
cd 5-haisely-java-cli/src/main/java
javac com/buckshot/ClientMain.java
java com.buckshot.ClientMain
5-haisely-java-cli/
├── .idea/
│ └── (IDE configuration files)
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── buckshot/
│ │ │ ├── Core/
│ │ │ │ ├── GameManager.java
│ │ │ │ └── User.java
│ │ │ ├── Items/
│ │ │ │ ├── Beer.java
│ │ │ │ ├── Cigarette.java
│ │ │ │ ├── Handcuff.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── Knife.java
│ │ │ │ ├── Magnifier.java
│ │ │ │ └── UserItem.java
│ │ │ └── Utils/
│ │ │ └── RandomUtils.java
│ │ └── resources/
│ │ └── (Resource files)
│ └── test/
│ ├── java/
│ │ └── (Test source files)
│ └── resources/
│ └── (Test resource files)
├── .DS_Store
├── .gitignore
├── README.md
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
- 플레이어 2명이 돌아가면서 자신 혹은 상대에게 총을 발사한다.
- 자신에게 발사할 총알이 공포탄인 경우 턴이 유지되고, 그 외의 경우 상대의 턴으로 넘어간다.
- 상대방의 체력이 0 이하가 되면 승리한다.
- 총에 3개~8개의 총알이 장전된다. (이 때, 공포탄과 실탄의 개수가 표기된다)
- 장전된 총알을 다 소모한 경우 라운드가 끝이난다.
- 사용자는 자신의 턴에서 3가지 행동을 할 수 있다.
- 아이템 사용
- 자신에게 총을 쏘기
- 적에게 총을 쏘기
- 아이템을 사용할 경우, 자신의 테이블에 있는 아이템 중 하나를 선택하여 사용할 수 있다.
- 자신에게 총을 쏜 경우, 공포탄이 발사되었을 때 턴이 넘어가지 않는다.
- 적에게 총을 쏜 경우, 무조건 상대에게 턴이 넘어간다.
- 게임 시작
- 플레이어의 이름을 입력받는다. (Player 1, Player 2)
- 플레이어의 이름을 출력한 뒤 라운드를 시작한다.
- 플레이어의 피가 0 이하가 되거나, 10개의 라운드를 진행한 이후에도 게임이 끝나지 않은 경우 게임이 종료된다.
- 라운드 시작
- 라운드 시작을 알린다. (Round 1)
- 총에 랜덤하게 총알을 장착한다.
- 장착한 총알의 실탄과 공포탄 수를 출력한다.
- 플레이어 턴이 시작된다.
- 총알을 다 소모한 경우, 해당 라운드를 종료하고 다음 라운드를 시작한다.
게임 시작 화면 (플레이어 이름 입력) |
라운드 시작 (총 장전, 아이템 분배) |
|
|
- 플레이어는 다음 3가지 행동 중 하나를 선택할 수 있다.
- 아이템 사용 (턴을 유지)
- 자신에게 총을 쏘기 (공포탄일 경우 턴을 유지하고, 실탄일 경우 턴을 상대에게 넘김)
- 적에게 총을 쏘기 (실탄 여부와 상관 없이, 턴이 상대에게 넘김)
아이템 사용 |
자신에게 쏘기 (공포탄 발사) |
적에게 쏘기 (실탄 발사) |
|
|
|
- 플레이어는 자신의 테이블에 있는 아이템 중 하나를 선택하여 사용할 수 있다.
- 담배 : 자신의 체력을 1 올려준다. 최대 체력(6)일 경우 아이템만 소모한다.
- 돋보기 : 현재 장전된 총알이 공포탄인지 실탄인지 알 수 있다.
- 맥주 :장전된 탄알을 버리고, 공포탄인지 실탄인지 표기한다.
- 수갑 : 상대방이 다음 턴에 행동할 수 없도록 막는다.
- 식칼 : 총의 데미지를 2로 올린다.
수갑 |
식칼 |
|
|
- 플레이어 중 한 명의 체력이 0 이가 된 경우, 다른 플레이어의 승리를 출력하고 프로그램을 종료한다.
- 10개의 라운드가 진행된 후에도 끝나지 않은 경우, 무승부를 출력하고 프로그램을 종료한다.
플레이어 우승 |
무승부 |
|
|