메이플스토리

[CRP] 조합 방탈출

lms0806 2023. 2. 9. 11:59
728x90

메이플스토리의 "로미오와 줄리엣" 파티퀘스트에는 연구실을 수색해 숨겨진 문을 찾는 퀘스트가 존재합니다.

해당 요소와 "좀보이드", "배틀그라운드" 등과 같은 게임의 파밍 시스템을 조합하면 어떨까 생각했습니다.

 

특정 위치에서 "NPC/채집"키를 누를 시, 상점 이미지가 뜹니다.

 

이후 해당 상점에서 원하는 아이템들만 골라서 구매한 후, 한 명의 파티원에게 모아 조합하여 새로운 아이템으로 방을 탈출하는 시스템 입니다. 또는 방탈출 종류가 아니더라도, 특정 아이템을 사용해서 몬스터를 잡거나, 처치하는 방식으로도 가능합니다.

 

ex) java 소스코드

import java.util.ArrayList;
import java.util.Random;

public class Main {
	static boolean success = false;
	static ArrayList<Integer> player;
	static boolean[] visited;
	public static void main(String[] args) {
		Random rand = new Random();
		
		ArrayList<Integer>[] shop = new ArrayList[rand.nextInt(10) + 1]; // 1 ~ 10개의 상점
		for(int i = 0; i < shop.length; i++) {
			shop[i] = new ArrayList<>();
		}
		
		for(int i = 0; i < shop.length; i++) {
			int items = rand.nextInt(10); // 0 ~ 9개의 상점 아이템
			
			for(int j = 0; j < items; j++) {
				shop[i].add(j + 1);
			}
		}
		
		player = new ArrayList<>();
		for(int i = 0; i < shop.length; i++) {
			for(int j = 0; j < shop[i].size(); j++) {
				player.add(shop[i].get(j));
			}
		}
		
		visited = new boolean[player.size()];
		dfs(0, 0);
		
		System.out.print(success ? "success" : "not success");
	}
	
	public static void dfs(int depth, int sum) {
		if(sum == 10) {
			success = true;
			return;
		}
		
		if(success) {
			return;
		}
		
		if(sum > 10) {
			return;
		}
		
		for(int i = depth; i < player.size(); i++) {
			if(!visited[i]) {
				visited[i] = true;
				dfs(depth + 1, sum + player.get(i));
				visited[i] = false;
			}
		}
	}
}
// 가정으로 아이템의 합이 10되면 탈출할 수 있다고 하겠습니다.
728x90