본문 바로가기
java/예제&실습

[명품자바] 7장 오픈챌린지

by unhyepnhj 2024. 6. 20.

영어 단어 뜻 맞추기 게임

 

영어 단어와 한글 단어로 구성되는 Word 클래스를 작성

여러 개의 Word 객체를 Vector<Word> 컬렉션에 삽입

이 중 랜덤하게 사용자에게 문제 출제

벡터 내에 정답이 아닌 단어를  랜덤하게 3개 선택하고 정답과 함께 4개의 보기 출력

-1 입력 시 종료

 

ex)

painting?

(1)그림 (2)감정 (3)아기 (4)오류

>> 

 

Word 클래스와 WordQuiz 클래스를 작성하고 WordQuiz 클래스에 main() 메소드

WordQuiz 클래스에서 아래와 같이 벡터를 만들고 미리 여러 개의 Word 객체를 삽입하는 코드 작성

Vector<Word> v=new Vector<Word>();
v.add(new Word("love", "사랑"));
v.add(new Word("animal", "동물"));

 

Word 클래스

public class Word {
	String eng;
	String kor;
	
	public Word(String eng, String kor) {
		this.eng=eng;
		this.kor=kor;
	}
	
	public String getEng() {
		return eng;
	}
	public String getKor() {
		return kor;
	}
}

 

MakeQustion 클래스

import java.util.*;

public class MakeQuestion {
	int ex[] = {0, 0, 0, 0}; // 4개의 선지 배열을 0으로 초기화
	
	public MakeQuestion(int num, int size) {
		int answerNum = (int)(Math.random()*4);		//정답 번호
		ex[answerNum] = num; // 정답의 Vector<Word> 인덱스 번호
		for(int i=0; i<4; i++) {
			int n = (int)(Math.random()*size);
			if(ex[i]==0) {
				ex[i] = n;
			}
			else continue;
			
			for(int j=0; j<4; j++) {
				if(i!=j && ex[j]==ex[i]) {
					ex[i]=0;
					i--;
				}
				else continue;
			}
		}
	}
}

 

WordQuiz 클래스

import java.util.*;

public class WordQuiz {
	Scanner scanner=new Scanner(System.in);
	Vector<Word> v=new Vector<>();
	
	public void setWords() {
		v.add(new Word("love", "사랑"));
		v.add(new Word("animal", "동물"));
		v.add(new Word("rice", "밥"));
		v.add(new Word("java", "자바"));
		v.add(new Word("flower", "꽃"));		
		v.add(new Word("baby", "아기"));
		v.add(new Word("dog", "개"));
		v.add(new Word("friend", "친구"));
	}
	
	public void showQuestion() {
		while(true) {
			System.out.println();
			int answerIndex=(int)(Math.random()*v.size());		//랜덤 번호
			String question=v.get(answerIndex).getEng();		//해당하는 영어 단어
			System.out.println(question+"?");
			
			MakeQuestion mq=new MakeQuestion(answerIndex, v.size());
			for(int i=0; i<4; i++) {
				System.out.print("("+(i+1) + ")"+v.get(mq.ex[i]).getKor()+" ");
			}
			System.out.print(":>");
			int sel = scanner.nextInt(); // 사용자가 고른 번호
			if(sel == -1) { // -1 입력 시 종료
				System.out.println("종료합니다...");
				return;
			}
			else if(mq.ex[(sel-1)]==answerIndex)
				System.out.println("Excellent!!");
			else
				System.out.println("No. !!");
		}
	}
	
	public void run() {
		setWords();
		
		System.out.println("단어 테스트를 시작합니다. -1을 입력하면 종료합니다.");
		System.out.println("현재 "+v.size()+"개의 단어가 들어 있습니다.");
		
		showQuestion();
	}

	public static void main(String[] args) {
		WordQuiz wq=new WordQuiz();
		wq.run();
	}
}

 

 

>>실행

 

아.......어렵네요

매우 어려워요 

'java > 예제&실습' 카테고리의 다른 글

[명품자바] 6장 실습문제  (0) 2024.06.27
[명품자바] 8장 오픈챌린지  (0) 2024.06.25
[명품자바] 6장 오픈챌린지  (0) 2024.06.19
[명품자바] 5장 오픈챌린지  (0) 2024.06.19
[명품자바] 4장 오픈챌린지  (0) 2024.06.19