📘 n명이 참가하는 끝말 잇기 게임만들어 보자
처음 단어는 "자동차"이다. n명의 참가자들은 순서대로 자신의 단어를 입력하면 된다.
끝말잇기에서 틀리면 게임오버 -> 진사람이름 출력, 종료
WordGameApp 클래스와 각 선수를 나타내는 Player 클래스 작성 .
WordGameApp : 게임을 전체적으로 진행하는 run()메서드, run()에서 플레이어수만큼 Player객체 배열 생성
Player : 플레이어 이름, 단어 입력받는 getWordFromUser()메서드, 끝말잇기 성공여부와 게임계속할지 판별하는 checkSuccess() 메서드
#tip:문자열 첫번째 문자 알아내는 방법은 .charAt(인덱스번호) 사용
package day12;
import java.util.Scanner;
class Player {
Scanner sc = new Scanner(System.in);
private String name;
private String inputWord;
void setinfo(){
System.out.println("이름을 입력하세요");
name = sc.nextLine();
}
public String getName() {
return name;
}
String getWordFromUser() { // 단어 입력받는 메소드
System.out.println(name + ">>"); // 이름 띄워주고 단어 입력 받기
inputWord = sc.nextLine();
return inputWord; // 입력받은 단어를 돌려줘야지 체크할 수 있기 때문에
}
boolean checkSuccess(String startWord){ // 들어온 단어 마지막에 있는 문자와 입력한 단어 첫번째 문자 비교해주기
boolean resualt = true;
if(startWord.charAt(startWord.length()-1) == inputWord.charAt(0)){// 단어길이 - 1 한게 마지막번째 문자자리수가 되고, 첫번째 문자는 언제나 0번째
return resualt; // 비교해서 맞을경우 true 리턴
} return !resualt; // 아닐 경우 false 리턴
}
}
class WordGameApp {
Scanner sc = new Scanner(System.in);
void run(){
System.out.println("끝말잇기 게임 Start!");
System.out.println("참가 인원수를 입력하시오");
int userNum = Integer.parseInt(sc.nextLine());
// 참가자 수만큼 배열방 만들어주기
Player [] p = new Player[userNum]; // 배열방만 만든상태 값 없음
// 배열 객체 생성해주기
for(int i = 0; i<p.length; i++) {
p[i] = new Player();
}
// 참가자수만큼 참가자 이름 받아서 각 객체 배열에 넣어주기
for(int i = 0; i<p.length; i++) {
p[i].setinfo();
}
// 처음 시작 단어 저장
String startWord = "자동차";
System.out.println("시작 단어는 " + startWord + "입니다.");
// 한명이 잘못 입력할때까지 게임이 돌아가야 함 > 언제 끝날지 모름 > 무한반복
boolean play = true;
while(play) {
for(int i = 0; i<p.length; i++) { // 게임인원수만큼 반복
String inputWord = p[i].getWordFromUser(); // 첫번째 유저가 단어 입력 받음 변수에 받아줘야함
// 시작단어와, 입력받은 단어 비교해주기
// 입력받은 단어는 player 객체에 변수 선언하여 저장되어 있으니 시작단어 던져주기
boolean resalt = p[i].checkSuccess(startWord); // t/f로 체크 가능하니 boolean 타입의 변수 만들어서 값 넣어주자
if(resalt == true) {
System.out.println(inputWord); // 입력단어 출력해주고
startWord = inputWord; // 비교해줄 단어가 되어야하니까 startWord에 넣어주기
}else{
System.out.println(p[i].getName() + " 게임종료!");
i = p.length; // for문 끝내주기
play = false; // while문 끝내주기
}
}
}
}
}
public class ClassTest01 {
public static void main(String[] args) {
// main 메서드는 아래 두줄로 작성 끝. 실행하면 게임시작되게 하기.
WordGameApp app = new WordGameApp();
app.run();
}
}
🖥️ console 출력 화면
🔈 차근차근 한씩 풀어 나가니까 혼자 작성할 수 있었다!!!!!! 수업시간에 선생님 해설은 한번 듣긴 했지만ㅎㅎ 기특하다 내자신
📘 콘서트 예약 프로그램을 만들어보자. 프로그램 기능은 아래와 같다
콘서트 예약 프로그램.
- 공연은 하루에 한번
- 좌석은 S석, A석, B석으로 나뉘며, 각각 10개의 좌석이 있다.
- 예약 시스템의 메뉴는 "예약", "조회", "취소", "끝내기"가 있다.
- 예약은 한자리만 가능하고, 좌석타입, 예약자이름, 좌석번호를 입력받아 예약한다.
- 조회는 모든 좌석을 출력한다.
- 취소는 예약자의 이름을 입력받아 취소한다.
- 없는 이름, 없는 번호, 없는 메뉴, 잘못된 취소등에 대해서
오류 메세지를 출력하고 사용자가 다시 시도하도록 한다.
# 실행예시 #
자바콘서트홀 예약시스템입니다.
예약:1, 조회:2, 취소:3, 끝내기:4 >> 1
좌석구분 S(1), A(2), B(3) >> 1
S >> ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
이름 >> 피카츄
번호 >> 1
<<예약완료>>
예약:1, 조회:2, 취소:3, 끝내기:4 >> 1
좌석구분 S(1), A(2), B(3) >> 2
A >> ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
이름 >> 꼬북이
번호 >> 5
<<예약완료>>
예약:1, 조회:2, 취소:3, 끝내기:4 >> 2
S >> 피카츄 ___ ___ ___ ___ ___ ___ ___ ___ ___
A >> ___ ___ ___ ___ 꼬북이 ___ ___ ___ ___ ___
B >> ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
<<조회완료>>
예약:1, 조회:2, 취소:3, 끝내기:4 >> 3
좌석구분 S(1), A(2), B(3) >> 2
A >> ___ ___ ___ ___ 꼬북이 ___ ___ ___ ___ ___
이름 >> 꼬북이
<<취소완료>>
예약:1, 조회:2, 취소:3, 끝내기:4 >> 2
S >> 피카츄 ___ ___ ___ ___ ___ ___ ___ ___ ___
A >> ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
B >> ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
<<조회완료>>
예약:1, 조회:2, 취소:3, 끝내기:4 >> 4
<<프로그램 종료>>
package day12;
import java.util.Scanner;
class Seat{
Scanner sc = new Scanner(System.in);
//좌석 객체 생성
//좌석 정보 저장
String [] seatS = new String[10];
String [] seatA = new String[10];
String [] seatB = new String[10];
Seat() {
for(int i = 0; i<seatS.length; i++) {
seatS[i] = "___";
seatA[i] = "___";
seatB[i] = "___";
}
}
void seatS() {
System.out.print("S >> ");
for(int i = 0; i<seatS.length; i++) {
System.out.print(seatS[i] + " ");
}
System.out.println();
}
void seatA() {
System.out.print("A >> ");
for(int i = 0; i<seatS.length; i++) {
System.out.print(seatA[i] + " ");
}
System.out.println();
}
void seatB() {
System.out.print("B >> ");
for(int i = 0; i<seatS.length; i++) {
System.out.print(seatB[i] + " ");
}
System.out.println();
}
}
class Booking {
Scanner sc = new Scanner(System.in);
Seat s = new Seat();
void booking() {
System.out.println("좌석구분 S(1), A(2), B(3) >>");
int seatNum = Integer.parseInt(sc.nextLine());
if(seatNum == 1) {
s.seatS();
System.out.println("이름 >>");
String name = sc.nextLine();
System.out.println("번호 >>");
int num = Integer.parseInt(sc.nextLine());
s.seatS[num-1] = name;
System.out.println("예약완료");
}else if(seatNum == 2) {
s.seatA();
System.out.println("이름 >>");
String name = sc.nextLine();
System.out.println("번호 >>");
int num = Integer.parseInt(sc.nextLine());
s.seatA[num-1] = name;
System.out.println("예약완료");
}else if(seatNum == 3) {
s.seatB();
System.out.println("이름 >>");
String name = sc.nextLine();
System.out.println("번호 >>");
int num = Integer.parseInt(sc.nextLine());
s.seatB[num-1] = name;
System.out.println("예약완료");
}
}
void cencel() {
System.out.println("좌석구분 S(1), A(2), B(3) >> 2");
int seatNum = Integer.parseInt(sc.nextLine());
if(seatNum ==1) {
s.seatS();
System.out.println("이름 >> ");
String name = sc.nextLine();
for(int i= 0; i<s.seatS.length; i++) {
if(name == s.seatS[i]) {
s.seatS[i] = "___";
i = s.seatS.length;
}
}
System.out.println("취소완료");
}
else if(seatNum ==2) {
s.seatA();
System.out.println("이름 >> ");
String name = sc.nextLine();
for(int i= 0; i<s.seatA.length; i++) {
if(name == s.seatA[i]) {
s.seatA[i] = "___";
i = s.seatS.length;
}
}
System.out.println("취소완료");
}
else if(seatNum ==3) {
s.seatB();
System.out.println("이름 >> ");
String name = sc.nextLine();
for(int i= 0; i<s.seatB.length; i++) {
if(s.seatB.equals(name)){
s.seatB[i] = "___";
i = s.seatB.length;
}
}
System.out.println("취소완료");
}
}
void view() {
s.seatS();
s.seatA();
s.seatB();
}
void end() {
System.out.println("<<프로그램 종료>>");
}
void run() {
boolean play = true;
System.out.println("자바콘서트홀 예약시스템입니다.");
while(play) {
System.out.println("예약:1, 조회:2, 취소:3, 끝내기:4 >>");
int num = Integer.parseInt(sc.nextLine());
if(num == 1) {
booking();
}else if(num == 2) {
view();
}else if(num == 3) {
cencel();
}else if(num == 4 ) {
end();
play = !play;
}else {
System.out.println("잘못입력 하셨습니다. 다시 선택해주세요");
}
}
}
}
public class ClassTest07 {
public static void main(String[] args) {
Booking b = new Booking();
b.run();
}
}
🖥️ console 출력 화면
🔈 3번 취소 기능이 안된다..내일 다시 고고..
'basic > java 실습' 카테고리의 다른 글
day 17 예제 및 문제 - Calendar class, Date class (0) | 2021.05.17 |
---|---|
day 16 예제 - String 클래스, StringBuffer 클래스, Wrapper 클래스 (0) | 2021.05.17 |
day 15 예제 및 문제 - 예외처리 Exception handling (0) | 2021.05.13 |
day 15 예제 및 문제 - 싱글톤Singleton, 내부클래스 inner class (0) | 2021.05.12 |
day 14 예제 및 문제- 추상클래스, 인터페이스, 상속 (0) | 2021.05.11 |