[명품자바프로그래밍] 5판 4장 오픈챌린지

hyeseong·2024년 10월 13일
0

명품 자바 프로그래밍(개정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;
	}
	
}

개인 풀이이므로 틀린 부분이나 피드백이 있으면 댓글로 남겨주시면 감사하겠습니다!

0개의 댓글