자바 콘솔 프로젝트 만들기(한국 영화 맞추기 게임)

Noome_·2022년 4월 25일
1
post-thumbnail

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값을 입력하면 문제가 계속 반복해서 나올 수 있도록 제작하였다.

profile
철수네 개발자

0개의 댓글

관련 채용 정보