n명이 참가하는 끝말잇기 게임을 만들어보자.
처음 단어는 "아버지"이다.
n명의 참가자들은 순서대로 자신의 단어를 입력하면 된다.
끝말잇기에서 끝말이 틀린 경우 게임을 끝내고 게임에서 진 참가자를 화면에 출력한다.
프로그램에서는 시간 지연을 구현하지 않아도 된다.
그렇지만 참가자들이 스스로 시간을 재어보는 것도 좋겠다.
이 문제의 핵심은 여러 개의 객체와 배열 사용을 연습하기 위한 것으로,
main( )을 포함하는 WordGameApp 클래스와 각 선수를 나타내는 Player 클래스를 작성하고,
실행 중에는 WordGameApp 객체 하나와 선수 숫자만큼의 Player 객체를 생성하는데 있다.
문제에 충실하게 프로그램을 작성하여야 실력이 늘게 됨을 알기 바란다.
import java.util.Scanner;
public class Player {
private String name;
private static String now_word = "아버지";
private static String last_word;
private Scanner scanner;
public Player (String name) {
this.name = name;
scanner = new Scanner(System.in);
}
public void getWordFromUser () {
System.out.print(this.name + ">>");
last_word = now_word;
now_word = scanner.next();
}
public void checkSuccess () {
int lastIndex = last_word.length() - 1;
char lastChar = last_word.charAt(lastIndex);
char firstChar = now_word.charAt(0);
if (lastChar != firstChar) {
System.out.println(name + "이 졌습니다.");
System.exit(lastChar);
}
}
}
public class WordGameApp {
public int num;
public String word;
private Scanner scanner;
public WordGameApp() {
scanner = new Scanner(System.in);
}
public void run() {
Player[] player = new Player[num];
word = "아버지";
for (int i = 0; i < num; i++) {
System.out.print("참가자의 이름을 입력하세요>>");
String name = scanner.next();
player[i] = new Player(name);
}
System.out.println("시작하는 단어는 " + word + "입니다.");
while (true) {
for (int i = 0; i < num; i++) {
player[i].getWordFromUser();
player[i].checkSuccess();
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
WordGameApp wga = new WordGameApp();
System.out.print("끝말잇기 게임을 시작합니다...\n게임에 참가하는 인원은 몇명입니까>>");
wga.num = scanner.nextInt();
wga.run();
scanner.close();
}
}
'withTextBook > 명품 JAVA 프로그래밍' 카테고리의 다른 글
[Chapter5_OpenChallenge] Bear의 Fish 먹기 게임 만들기 (0) | 2021.04.16 |
---|---|
[Chapter4_실습문제] (0) | 2021.04.14 |
[Chapter 3_실습문제] (0) | 2021.04.13 |
[Chapter3_OpenChallenge] up & down 게임 (0) | 2021.04.13 |
[Chapter 2_실습문제] (0) | 2021.04.12 |