[명품 Java Programming] 7장 Open Challenge
2021. 12. 7. 07:08ㆍJava/명품 Java
** 해당 문제가 수록된 장까지의 교재 내용만을 이용하여 소스코드를 작성하였습니다**
영어 단어 뜻 맞추기 게임을 만들어 보자. 영어 단어, 한글 단어로 구성되는 Word 클래스를 작성하고 프로그램 내에서 미리 여러 개의 Word 객체를 Vector<Word> 컬렉션에 삽입해둔다. 그리고 랜덤하게 사용자에게 문제를 던진다. 벡터 내에 정답이 아닌 단어를 랜덤으로 3개 선택하고 정답과 함께 4개의 보기를 출력한다.
소스코드
import java.util.*; //Scanner클래스만 import 해도 됨.
class Word{
String eng, kor;
public Word(String eng, String kor) {
this.eng = eng; this.kor = kor;
}
}
public class WordTest {
Scanner scanner = new Scanner(System.in);
Vector<Word> v = new Vector<Word>();
public WordTest() {
v.add(new Word("love", "사랑"));
v.add(new Word("animal", "동물"));
v.add(new Word("painting", "그림"));
v.add(new Word("emotion", "감정"));
v.add(new Word("baby", "아기"));
v.add(new Word("error", "오류"));
v.add(new Word("society", "사회"));
v.add(new Word("bear", "곰"));
v.add(new Word("example", "보기"));
v.add(new Word("eye", "눈"));
v.add(new Word("transaction", "거래"));
v.add(new Word("picture", "사진"));
v.add(new Word("human", "인간"));
v.add(new Word("statue", "조각상"));
}
public void Example(Integer answerIndex, Integer answerNum, String answer) {
int[] example = new int[4];
int[] exampleIndex = new int[4];
for(int i = 0; i <4; i++) {
exampleIndex[i] = (int)(Math.random()*v.size());
example[i] = exampleIndex[i];
for(int j = 0; j <i; j++) {
if((exampleIndex[i] == exampleIndex[j])|(exampleIndex[i] == answerIndex)) {
i--;
continue;
}
}
}
example[answerNum] = answerIndex;
for(int i = 0; i <4; i++) {
System.out.print("(" + (i+1) +")");
System.out.print(v.get(example[i]).kor + " ");
}
System.out.print(":>");
}
public void QuizStart() {
while(true) {
int answerNum = (int)(Math.random() * 4 +1);
int answerIndex = (int)(Math.random()*v.size());
String answer = v.get(answerIndex).eng;
System.out.println(answer + "?");
Example(answerIndex, answerNum, answer);
int choice = scanner.nextInt();
if(choice == -1) {
System.out.println('"' + "명품영어" + '"' + "를 종료합니다...");
break;
}else if(choice == answerNum+1)
System.out.println("Excellent !!");
else
System.out.println("No. !!");
}
}
public void Quiz() {
System.out.println('"' + "명품영어" + '"' +"의 단어 테스트를 시작합니다. -1을 입력하면 종료합니다.");
System.out.println("현재 " + v.size() + "개의 단어가 들어 있습니다." );
QuizStart();
}
public static void main(String[] args) {
WordTest wt = new WordTest();
wt.Quiz();
}
}
결과

'Java > 명품 Java' 카테고리의 다른 글
[명품 Java Programming] 5장 Open Challenge (0) | 2022.01.07 |
---|---|
[명품 Java Programming] 4장 실습문제 (0) | 2022.01.06 |
[명품 Java Programming] 4장 Open challenge (0) | 2022.01.05 |
[명품 Java Programming] 6장 Open Challenge (0) | 2021.12.06 |