본문 바로가기
메이플스토리

[CRP] 조합 방탈출

by lms0806 2023. 2. 9.
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
반응형

댓글