[My Toy] 러시안 룰렛 - JAVA

MandarinePunch·2022년 3월 11일
0

토이 프로젝트

목록 보기
1/6
post-thumbnail

어제 학원 먼저 번 기수들의 프로젝트 발표를 봤는데, 보면서 느끼는 바가 많았다. 그래서 나도 코딩테스트만 죽어라 파기보다는 혼자 간단한 프로젝트를 만드는 게 낫겠다. 싶은 생각이 들었다.

자바라는 언어로 처음이니만큼 크게 어렵게는 하고 싶지 않아, 이번에 배운 메서드와 반복문을 토대로 게임을 하나 구현했다. ㅎㅎ

그리고 여담이지만.. Java에서는 C의 scanf처럼 값을 받아주려면 Scanner를 만들어야 한다는 것을 이 프로젝트를 만들면서 알았다 ㄷㄷ.

게임 내용은 다음과 같다.

  • 일반 러시안 룰렛과 규칙은 같다.
  • 단순히 게임 오버만 되면 재미가 없을 것 같아, 도박에 성공할 때마다 돈을 지급하기로 했다. (물론 게임머니)
  • 남은 기회를 count하고 탄약이 한 발 남을 때까지 죽지 않으면, 모든 상금을 획득한다.
  • 물론 중간에 게임을 포기할 수도 있다. 그 경우 지금까지 딴 돈을 획득한다.

러시안 룰렛 게임 메서드

// 입력값(num), 남은 기회(count), 리볼버 탄창(cylinder), scan을 매개변수로 지정했다.
public static void playRoulette(int num, int count, int[] cylinder, Scanner scan) {
	int i = 0;
	int money = 20;

	while(true) {
		if(count == 0) {
			System.out.println("대단한 배짱이군요! 당신은 살아남으셨습니다! 획득 머니 : "+(double)money/10000+"억원");
			break;
		}
		System.out.println("1.발사   2.여기서 그만");
		num = scan.nextInt();
		if (num == 1) {
			if(bullet == cylinder[i]) {
				System.out.println("빵! 사망하셨습니다.");
				break;
			} else {
				count--;
				money *= 5;
				if(money >= 10000) {
					System.out.println("찰칵... lucky! 운이 좋으시군요. 남은 기회 : "+count+", 획득 머니 : "+(double)money/10000+"억원");
				}else {						
					System.out.println("찰칵... lucky! 운이 좋으시군요. 남은 기회 : "+count+", 획득 머니 : "+money+"만원");
				}
				i++;
			}
		} else if (num == 2) {
			if(i == 0) {
				System.out.println("들어온 이상 한 발은 쏴야합니다..😈");
				continue;
			}else {					
				System.out.println("잘 생각하셨습니다. 목숨은 소중하니까요. 획득 머니 : "+money+"만원");
				break;
			}
		} else {
			System.out.println("1 또는 2를 눌러주세요");
			continue;
		}
	}
}

메모장에 먼저 짜야할 로직을 적어놓고 구현하면서 부족한 점을 고쳐나갔다. 정말 간단한 게임이지만, 테스트를 하면서 왠지 모를 중독성도 있는 것 같았다 ㅋㅋ.
매일은 아니더라도 종종 가벼운 프로젝트를 만드는 것도 괜찮은 것 같다.

처음에는 for문으로 감쌌었는데 증감값 i가 자꾸 걸리적거려서 while문으로 바꿔버렸다.

전체 코드

package russianroulette;

import java.util.Random;
import java.util.Scanner;

public class Roulette {
	static Random random = new Random();
	static int bullet;
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int[] cylinder = { 0, 1, 2, 3, 4, 5 };
		int count = cylinder.length-1;
		bullet = random.nextInt(cylinder.length);
		int num;
		
		System.out.println("        |\\___________________,");
		System.out.println("       |    ===== _______)___) ==========|||)");
		System.out.println("      |	   ||----||");
		System.out.println("   __/___   ====/");
		System.out.println("  (O___)\\\\_(_/");
		System.out.println(" (O___)");
		System.out.println("(O___)");
		System.out.println("러시안 룰렛에 오신 것을 환영합니다.");
		while (true) {
			System.out.println("1.게임 시작     2.게임 종료");
			num = scan.nextInt();
			if (num == 1) {
				System.out.println("★☆★☆★☆★게임을 시작하겠습니다★☆★☆★☆★");
				System.out.println("당신은 스스로 머리에 총을 겨냥하고 있습니다.");
				playRoulette(num, count, cylinder, scan);
				break;
			} else if (num == 2) {
				System.out.println("해보지도 않고.. 겁쟁이! 넌 못 나가!");
				continue;
			} else {
				System.out.println("1 또는 2를 눌러주세요");
				continue;
			}
		}
	}
	
	public static void playRoulette(int num, int count, int[] cylinder, Scanner scan) {
		int i = 0;
		int money = 20;
		
		while(true) {
			if(count == 0) {
				System.out.println("대단한 배짱이군요! 당신은 살아남으셨습니다! 획득 머니 : "+(double)money/10000+"억원");
				break;
			}
			System.out.println("1.발사   2.여기서 그만");
			num = scan.nextInt();
			if (num == 1) {
				if(bullet == cylinder[i]) {
					System.out.println("빵! 사망하셨습니다.");
					break;
				} else {
					count--;
					money *= 5;
					if(money >= 10000) {
						System.out.println("찰칵... lucky! 운이 좋으시군요. 남은 기회 : "+count+", 획득 머니 : "+(double)money/10000+"억원");
					}else {						
						System.out.println("찰칵... lucky! 운이 좋으시군요. 남은 기회 : "+count+", 획득 머니 : "+money+"만원");
					}
					i++;
				}
			} else if (num == 2) {
				if(i == 0) {
					System.out.println("들어온 이상 한 발은 쏴야합니다..😈");
					continue;
				}else {					
					System.out.println("잘 생각하셨습니다. 목숨은 소중하니까요. 획득 머니 : "+money+"만원");
					break;
				}
			} else {
				System.out.println("1 또는 2를 눌러주세요");
				continue;
			}
		}
	}
}

시연 영상

이 게임... 꽤 중독성 있다...😝

총 모양 출처 : 아스키 아트

profile
개발을 좋아하는 귤나라 사람입니다.

0개의 댓글