명품 자바 프로그래밍(개정5판) 4장 오픈챌린지 풀이 p.239
WordGameApp 클래스
import java.util.Scanner;
public class WordGameApp {
private int numOfPlayer; // 전체 플레이어 수
private Player[] players;
private String newWord, beforeWord;
private Scanner scanner;
public WordGameApp() {
beforeWord = "아버지"; // 시작 단어 설정
scanner = new Scanner(System.in);
}
// 플레이어 설정
private void setPlayers() {
// 플레이어 수 입력
System.out.print("게임에 참가하는 인원은 몇명입니까>>");
numOfPlayer = scanner.nextInt();
players = new Player[numOfPlayer];
// 이름 입력
for(int i=0; i<numOfPlayer; i++) {
System.out.print("참가자의 이름을 입력하세요>>");
String name = scanner.next();
players[i] = new Player(name);
}
}
public void run() {
System.out.println("끝말잇기 게임을 시작합니다...");
setPlayers(); // 플레이어 설정
System.out.println("시작하는 단어는 " + beforeWord + "입니다");
int currentIndex = 0;
while(true) {
newWord = players[currentIndex].getWordFromUser();
if(!checkSuccess(beforeWord, newWord)) { // 진 경우
System.out.print(players[currentIndex].getName()+"이 졌습니다.");
break;
}
beforeWord = newWord;
currentIndex = (currentIndex + 1) % numOfPlayer;
}
scanner.close();
}
public boolean checkSuccess(String beforeWord, String newWord) {
char lastChar = beforeWord.charAt(beforeWord.length() - 1); // 마지막 문자
char firstChar = newWord.charAt(0); // 첫 번째 문자
if(lastChar == firstChar) return true;
else return false;
}
public static void main(String[] args) {
WordGameApp game = new WordGameApp();
game.run();
}
}
Player 클래스
import java.util.Scanner;
public class Player {
private String name;
private String word;
private Scanner scanner = new Scanner(System.in);
public Player(String name) {
this.name=name;
}
public String getName() {
return name;
}
public String getWordFromUser() {
System.out.print(name + ">>");
word = scanner.next();
return word;
}
}
개인 풀이이므로 틀린 부분이나 피드백이 있으면 댓글로 남겨주시면 감사하겠습니다!