개발스토리지😃

[알고리즘] 보드게임 유령대소동 자바코드 본문

알고리즘/자바

[알고리즘] 보드게임 유령대소동 자바코드

believekim 2024. 12. 11. 15:39

 

 

유령대소동이라는 파티게임 종류의 보드게임이 있다
특정 조건이 되면 물건을 찾는 게임인데 자바 코드로 한번 구현해보았다

 


 

 

게임설명

구성품
1. 카드 (2가지 색과 물체로 구성)
2. 컴포넌트 5개(하얀유령, 초록병, 빨간의자, 회색쥐, 파란책)

 

 

조건발동
1. 카드안에 색상과 컴포넌트가 일치하는 그림이 있다면 해당하는 컴포넌트를 먼저 가져가는 사람이 승리
ex) 파란책과 초록쥐가 그려진 카드가 나왔을 때 -> 파란책 가져가기

2. 카드안에 색상과 컴포넌트가 일치하는 그림이 없다면 색상과 컴포넌트가 겹치지 않는 컴포넌트를 먼저 가져가는 사람이 승리
ex) 하얀책과 초록쥐가 그려진 카드가 나왔을 때
-> 하양색인 유령 제외, 초록색인 초록병 제외, 책인 파란책 제외
-> 제외하고 남은 빨간책을 가져가는 사람이 승리

 

 

 

게임설명은 아래 링크를 보면 된다

 


💻 구현 코드

  • String[] card 에서 카드에 나와있는 카드정보를 스트링배열로 입력하고 결과값을 받는다
ppackage game;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class GhostChaos {
    public static void main(String[] args) {
        String[] objects = {"whiteGhost", "redChair", "blueBook", "greenBottle", "grayMouse"};
        String[] card = {"blueBook", "greenMouse"};
        String answer = null;


        for (String o : objects) {
            if (o.equals(card[0]) || o.equals(card[1])) {
                answer = o;
                break;
            }
        }

        if (answer == null) {
            List<String> oddList = new ArrayList<>();
            List<String> odds = new ArrayList<>();
            for (String c : card) {
                String[] parts = c.split("(?=\\p{Upper})");
                odds.addAll(Arrays.asList(parts));
            }

            for (String o : objects) {
                boolean isOdd = false;
                for (String odd : odds) {
                    if (o.contains(odd)) {
                        isOdd = true;
                        break;
                    }
                }
                if (!isOdd) {
                    answer = o;
                    break;
                }
            }
        }
        System.out.println(answer);
    }
}

 

 

 

💯 결과화면

  • 파란책과 초록쥐가 그려진 카드가 나왔을 때

 

 

  • 하얀책과 초록쥐가 그려진 카드가 나왔을 때