본문으로 바로가기

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();
	}
}