Java 응용

Java 응용 (8. 끝말잇기 게임)

Kw_w 2024. 4. 11. 18:00
  1.  n명의 플레이어가 끝말잇기 게임에 참여한다.
  2. 참가자 이름은 사용자가 설정 할 수 있게 한다.
  3. 첫 번째 단어는 아버지로 고정한다.
  4. 틀리는 사람이 나올 경우 게임을 종료한다.
  5. 누가 틀렸는지 출력한다.

Code1

import java.util.Scanner;

public class EndGame {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("참가자 수를 입력하세요: ");
        int n = sc.nextInt();

        String[] names = new String[n];

        for (int i = 0; i < n; i++) {
            System.out.print((i + 1) + "번째 참가자 이름 입력: ");
            names[i] = sc.next();
        }

        String word = "아버지";

        int turn = 0;

        while (true) {
            System.out.println("[" + names[turn] + "]의 차례입니다. (" + word + ")");
            System.out.print("단어를 입력하세요: ");
            String input = sc.next();

            if (!word.endsWith(input.substring(0, 1))) {
                System.out.println("[ERROR] 끝말이 틀렸습니다. " + names[turn] + "가 졌습니다!");
                break;
            }
            word = input;
            turn = (turn + 1) % n;
        }
    }
}

 

Code2

import java.util.Scanner;

class Player {
    private String name;

    public Player(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInput(String prevWord) {
        Scanner sc = new Scanner(System.in);
        System.out.println("[" + name + "]의 차례입니다. (" + prevWord + ")");
        System.out.print("단어를 입력하세요: ");
        return sc.next();
    }
}
public class EndGame2 {
    private final int n;
    private final Player[] players;
    private String word;

    public EndGame2(int n) {
        this.n = n;
        players = new Player[n];
        for (int i = 0; i < players.length; i++) {
            System.out.print((i + 1) + "번째 참가자 이름 입력: ");
            players[i] = new Player(new Scanner(System.in).next());
        }
        word = "아버지";
    }

    public void play() {
        int turn = 0;
        while (true) {
            String input = players[turn].getInput(word);
            int lastIndex = word.length() - 1;
            char lastChar = word.charAt(lastIndex);
            char firstChar = input.charAt(0);
            if (lastChar != firstChar) {
                System.out.println("[ERROR] 끝말이 틀렸습니다. " + players[turn].getName() + "가 졌습니다!");
                break;
            }
            word = input;
            turn = (turn + 1) % n;
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("참가자 수를 입력하세요: ");
        int n = sc.nextInt();
        new EndGame2(n).play();
    }
}