2주동안 배웠던 자바 공부를 토대로 콘솔프로그램을 하나 만들었다.
프로그램을 실행한 모습은 다음과 같다.
Main클래스
package main;
import java.util.Scanner;
import com.kh.assg.KorMovie;
public class MovieGameMain {
String name;
public static boolean finish = false;
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("==========================");
System.out.println(" 한국 영화 제목 맞추기 ! ");
System.out.println("==========================\n");
System.out.println("ID를 입력해주세요.");
String id = sc.nextLine();
System.out.println( id+ " 님 환영합니다 !\n");
System.out.println("계속하려면 아무키나 입력하세요.");
String zero = sc.nextLine();
System.out.println("GAME START !!!! ");
//영화 장르 객체 생성
KorMovie km = new KorMovie();
while(!MovieGameMain.finish) {
//문제 내기
km.showKor();
//게임 더 하기
km.more();
System.out.println();
System.out.println();
}
System.out.println("게임을 종료합니다.");
}//main
}//class
Kormovie 클래스
package com.kh.assg;
import java.util.Random;
import java.util.Scanner;
import main.MovieGameMain;
public class KorMovie {
Scanner sc = new Scanner(System.in);
public void showKor() {//극한직업 실미도 왕의남자 청년경찰 해운대 엽기적인그녀 암살
//랜덤으로 한 문제 뽑기
//if 랜덤값이 초성문제면 consonant를 else if 랜덤값이 배우문제면 actor를, else 랜덤값이 배우면 script를 추출한다.
boolean isCorrect = false;
int cnt = 0;
//질문
String [] questions = {"다음 초성에 맞는 영화는 무엇일까요 ??", "다음 배우들이 나오는 영화는 무엇일까요 ??", "다음 명대사가 나오는 영화는 무엇일까요 ??"};
//초성
String [] consonant = {"ㄱㅎㅈㅇ", "ㅅㅁㄷ", "ㅇㅇ ㄴㅈ", "ㅊㄴㄱㅊ", "ㅎㅇㄷ", "ㅇㄱㅈㅇ ㄱㄴ", "ㅇㅅ"};
//배우
String [] actor = {"이하늬 신하균", "설경구 안성기", "감우성 이준기", "박서준 강하늘", "설경구 하지원", "차태현 전지현", "이정재 하정우 전지현"};
//명대사
String [] script = {"응 ~ 나 화교 출신", "날 쏘고 가라,,,","나는 두말 할 거 없이 광대, 광대지","졸라 과학수사!!","저기요, 이거 희미씨좀 주지요. 마!! 빨리 데리러 온나!!!",
"견우야 ~~ 미안해 ~","나 김원봉이요"};
Random rand1 = new Random();
Random rand2 = new Random();
Random rand3 = new Random();
Random rand4 = new Random();
if(questions[rand1.nextInt(3)].equals(questions[0]) ) {
System.out.println(questions[0]);
System.out.println(consonant[rand2.nextInt(7)]);
} else if(questions[rand1.nextInt(3)].equals(questions[1]) ) {
System.out.println(questions[1]);
System.out.println(actor[rand3.nextInt(7)]);
} else {
System.out.println(questions[2]);
System.out.println(script[rand4.nextInt(7)]);
}
while(true) {
String title = this.sc.nextLine();
cnt += 1;
switch (title) {
case "극한직업":
if(title.equals(consonant[0]) || title.equals(actor[0]) || title.equals(script[0]) )
System.out.println("극한직업 정답입니다.");
isCorrect = true;
break;
case "실미도":
if(title.equals(consonant[1]) || title.equals(actor[1]) || title.equals(script[1]) )
System.out.println("실미도 정답입니다.");
isCorrect = true;
break;
case "왕의 남자":
if(title.equals(consonant[2]) || title.equals(actor[2]) || title.equals(script[2]) )
System.out.println("왕의 남자 정답입니다.");
isCorrect = true;
break;
case "청년경찰":
if(title.equals(consonant[3]) || title.equals(actor[3]) || title.equals(script[3]) )
System.out.println("청년경찰 정답입니다.");
isCorrect = true;
break;
case "해운대":
if(title.equals(consonant[4]) || title.equals(actor[4]) || title.equals(script[4]) )
System.out.println("해운대 정답입니다.");
isCorrect = true;
break;
case "엽기적인 그녀":
if(title.equals(consonant[5]) || title.equals(actor[5]) || title.equals(script[5]) )
System.out.println("엽기적인 그녀 정답입니다.");
isCorrect = true;
break;
case "암살":
if(title.equals(consonant[6]) || title.equals(actor[6]) || title.equals(script[6]) )
System.out.println("암살 정답입니다.");
isCorrect = true;
break;
default :
System.out.println("다시 시도하세요.");
isCorrect =false;
break;
}
if(isCorrect)
break;
}
System.out.println(cnt+" 번만에 성공하셨습니다.\n");
}
public void more() {
System.out.println("게임을 더 하시겠습니까? (Y/N)");
String answer = sc.nextLine();
MovieGameMain.finish = answer.equals("y") || answer.equals("Y")? false : true;
}
}
우선 메인클래스와 koreamovie라는 클래스 두개를 만들었고 koreamovie클래스에서는 배열을 이용해서 초성, 배우, 명대사 라는 세 카테고리 배열을 만들었다.
그리고 이 세개의 배열을 랜덤객체를 이용해서 rand1,2,3,4라는 값에 각각 담아랜덤으로 세문제중에 한 문제를 뽑아서 출제될 수 있도록 하였다.
프로그램의 구조는 switch와 if문을 사용해서 사용자가 입력하는 타이틀 값이 각각의 배열과 일치할 때 정답처리가 될 수 있도록 했고, while문을 이용해서 사용자가 게임을 계속하겠다는 질문에 y값을 입력하면 문제가 계속 반복해서 나올 수 있도록 제작하였다.