끝말잇기 게임을 만들어보자
"아버지"로 시작
n명의 참가자(n을 입력받아야 함)들은 순서대로 자신의 단어를 입력
끝말이 틀린 경우 게임을 끝내고 패배한 참가자를 출력
main()을 포함하는 WordGameApp 클래스와 각 선수를 나타내는 Player 클래스 작성
WordGameApp 객체 하나와 선수 숫자만큼의 Player 객체 생성
WordGameApp 클래스에 생성자, main(), 게임을 진행하는 run() 메소드
Player 클래스는 게임 참가자의 이름 필드와 사용자로부터 단어를 입력받는 gewWordFromUser() 메소드, 끝말잇기 성공여부와 게임을 계속하는지 판별하는 checkSuccess() 메소드
Player 클래스
import java.util.Scanner;
public class Player {
private Scanner scanner;
private String name;
private String word;
public Player(String name) {
this.name=name;
scanner=new Scanner(System.in);
}
public String getName() { return name; }
public String getWordFromUser() {
System.out.print(name+">>");
word=scanner.next();
return word;
}
public boolean checkSuccess(String lastWord) {
int lastIndex=lastWord.length()-1; //마지막 글자 인덱스
if(lastWord.charAt(lastIndex)==word.charAt(0)) return true; //마지막 단어==첫 단어이면 true
else return false; //아닐 경우(패배) false
}
}
WordGameApp 클래스
import java.util.Scanner;
public class WordGameApp {
private Scanner scanner;
private String startWord;
private Player[] players;
public WordGameApp() {
//생성자
scanner=new Scanner(System.in);
startWord="아버지"; //첫 단어
}
private void createPlayers() {
System.out.print("게임에 참가하는 인원은 몇 명입니까>>");
int playerNum=scanner.nextInt();
players=new Player[playerNum]; //입력받은 만큼 Player 객체 배열 생성
for(int i=0; i<playerNum; i++) {
System.out.print("참가자의 이름을 입력하세요>>");
players[i]=new Player(scanner.next());
}
}
public void run() {
System.out.println("끝말잇기 게임을 시작합니다...");
createPlayers();
String lastWord=startWord;
System.out.println("시작하는 단어는 "+lastWord+"입니다.");
int next=0; //참가자 순서대로 증가
while(true) {
String newWord=players[next].getWordFromUser();
if(!players[next].checkSuccess(lastWord)) {
System.out.println(players[next].getName()+"이(가) 졌습니다.");
break;
}
next++; //다음 참가자
next%=players.length; //next가 참가 인원수보다 많아지지 않게
lastWord=newWord;
}
}
public static void main(String[] args) {
WordGameApp w=new WordGameApp();
w.run();
}
}
>>실행
'안 씀 > java-예제&실습' 카테고리의 다른 글
[명품자바] 7장 오픈챌린지 (0) | 2024.06.20 |
---|---|
[명품자바] 6장 오픈챌린지 (0) | 2024.06.19 |
[명품자바] 5장 오픈챌린지 (0) | 2024.06.19 |
[명품자바] 3장 오픈챌린지 (0) | 2024.06.19 |
[명품자바] 2장 오픈챌린지 (0) | 2024.06.19 |