어제 학원 먼저 번 기수들의 프로젝트 발표를 봤는데, 보면서 느끼는 바가 많았다. 그래서 나도 코딩테스트만 죽어라 파기보다는 혼자 간단한 프로젝트를 만드는 게 낫겠다. 싶은 생각이 들었다.
자바라는 언어로 처음이니만큼 크게 어렵게는 하고 싶지 않아, 이번에 배운 메서드와 반복문을 토대로 게임을 하나 구현했다. ㅎㅎ
그리고 여담이지만.. Java에서는 C의 scanf처럼 값을 받아주려면 Scanner를 만들어야 한다는 것을 이 프로젝트를 만들면서 알았다 ㄷㄷ.
// 입력값(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;
}
}
}
}
이 게임... 꽤 중독성 있다...😝
총 모양 출처 : 아스키 아트