[명품자바] 4장 오픈챌린지

sum·2022년 7월 18일
0

명품자바

목록 보기
13/17

끝말잇기 게임 만들기

n명이 참가하는 끝말잇기 게임을 만들어보자. 처음 단어는 "아버지"이다. n명의 참가자들은 순서대로 자신의 단어를 입력하면 된다. 끝말잇기에서 끝말이 틀린 경우 게임을 끝내고 게임에서 진 참가자를 화면에 출력한다. 프로그램에서는 시간 지연을 구현하지 않아도 된다. 그렇지만 참가자들이 스스로 시간을 재어 보는 것도 좋겠다. 이 문제의 핵심은 여러 개의 객체와 배열 사용을 연습하기 위한 것으로, main()을 포함하는 WordGameApp 클래스와 각 선수를 나타내는 Player 클래스를 작성하고, 실행 중에는 WorldGameApp 객체 하나와 선수 숫자만큼의 Player 객체를 생성하는데 있다. 문제에 충실하게 프로그램을 작성하여야 실력이 늘게 됨을 알기 바란다.

코드

package p4;

import java.util.Scanner;

class Player {
    String name;

    String getWord() {
        Scanner sc2 = new Scanner(System.in);
        String word = sc2.next();
        return word;
    }

    void checkSuccess(char lastChar, char firstChar) {
        if(lastChar != firstChar) {
            System.out.println(name+"이 졌습니다.");
            System.exit(0);
        }
    }
}

public class WordGameApp {
    static void run() {
        Scanner sc = new Scanner(System.in);
        System.out.print("게임에 참여하는 인원은 몇 명입니까>>");
        int num = sc.nextInt();
        Player player[] = new Player[num];

        for(int i=0; i<num; i++) {
            player[i] = new Player();
            System.out.print("참가자의 이름을 입력하세요>>");
            player[i].name = sc.next();
        }

        System.out.println("시작하는 단어는 아버지입니다.");
        String word = "아버지";
        int lastIndex = word.length()-1; //마지막 문자에 대한 인덱스
        char lastChar = word.charAt(lastIndex);
        char firstChar = word.charAt(0);

        for(int i=0; i<num; i++) {
            System.out.print(player[i].name+">>");
            word = player[i].getWord();
            firstChar = word.charAt(0);
            player[i].checkSuccess(lastChar,firstChar);
            if(i==num-1)    i=-1;
            lastIndex = word.length()-1;
            lastChar = word.charAt(lastIndex);
        }
    }
    public static void main(String[] args) {
        System.out.println("끝말잇기 게임을 시작합니다...");
        run();
    }
}

출력

끝말잇기 게임을 시작합니다...
게임에 참여하는 인원은 몇 명입니까>>3
참가자의 이름을 입력하세요>>피카츄
참가자의 이름을 입력하세요>>꼬부기
참가자의 이름을 입력하세요>>파이리
시작하는 단어는 아버지입니다.
피카츄>>지우개
꼬부기>>개미핥기
파이리>>기차
피카츄>>차표
꼬부기>>표범
파이리>>범인
피카츄>>인사고과
꼬부기>>과장님
파이리>>님의침묵
피카츄>>묵사발
꼬부기>>빨간색
꼬부기이 졌습니다.

0개의 댓글