0

저는 리소스 게임 시뮬레이션 프로젝트에 참여하고 있습니다. 내가해야 할 일은 ...자바 리소스 - 게임 시뮬레이션

"사용 가능한 충분한 리소스가있는 경우 요청이 충족되고 요청 된 수량이 사용 가능한 수량에서 뺍니다. 리소스가 충분하지 않으면 animat는 이용 가능한 양을 확보하고 더 많은 자원을 사용할 수있을 때까지 기다리십시오. "

문제는

예 ... 난 아직도 필요한 것을 어딘가 잡고 (대출 등)을 사용할 수있는 리소스가있는 경우를 줄일 다음 리소스를 줄이고 위해 ...이 가능하게 어떻게입니다 :

... 100 GOLD 필요하지만 .... ... 50 ... AVAILABLE GOLD

는 ... 50 GOLD을 줄이기 ... 및 금 전까지 기다리는> 다음 = 50

... 줄이기 50 ...

등 ...

샘플 코드 ...

public void feedArmy(){ 
    if(food>=100){ 
     food=food-100; 
     System.out.println("*Feed Soldiers (-100 Food)"); 
     System.out.println(toString()); 
    } 
    else{ 
     System.out.println("*Feed Soldiers (-100 Food)"); 
     System.out.println("-Not Enough Food!"); //get loan instead 
    } 
} 

(후 편집) 지금 최적의 솔루션 : 사실

... 난 그냥에서 원하는 값을 감소 생각 나는 음의 값을 유지 나무 다음 수는 부정적인가는 경우는

Math.abs()와 긍정적으로 설정; 나무가 30이고 나는 100을 원하는 경우

그래서 ... 나는 30-100 = -70을; loan = -70; ...

그런 다음 I Math.abs (loan); 그래서 대출 = 70;

다음 내가 if(wood>loan){ wood=wood-loan}가 // 내가 그것을 다시 새로 고쳐집니다 수면 전까지 나무를 둘 필요가 ... 그리고 그게 전부 수도 않아 ... 나는 아직도 그 생산자/소비자 물건이 ...

을 무엇인지 전혀 모른다
+0

"자원이 사용 가능할 때까지 대기"라는 문장은 생산자 스레드와 소비자 스레드가 있음을 의미합니다. 생산자 - 소비자 동기화에 대한 자세한 설명은 특정 프로그래밍 문제에 대한 SO의 범위를 훨씬 뛰어 넘습니다. 멀티 스레드 프로그래밍 및 특히 "생산자 - 소비자"에 대한 자습서를 웹에서 검색하십시오. 또한 [FAQ] 및 [Ask]를 읽고 좋은 질문을 작성하는 방법을 더 잘 이해하십시오. –

+0

@JimGarrison 이것이 범위를 벗어났다는 것에 대해서는 동의하지 않지만 단순한 게임 루프로 멀티 스레딩하지 않고도 이런 종류의 게임을 구현할 수 있습니다. –

+0

SO 범위를 넘어서 ?? 그게 뭐야? – user2375278

답변

0

완료되지 않은 요청 개체를 만드는 것이 좋습니다. 리소스 유형과 미결제 금액. 이 채무 중 하나를 제기해야 할 때마다 arraylist에 하나를 더하십시오. 그런 다음 모든 게임 루프 (당신이 당신의 게임에서 그것을 구현하는 방법 적)이 이루어지지 않은 목록과 부채 자원을 통해 확인하면 할 수 있습니다

1

그래서 당신이 찾고있는 솔루션이 아니라 컴퓨터 과학에서 연구 알려져 있고 많은입니다. 문제 자체를 생산자 문제라고합니다. 이것에 대한 검색을 수행하면 문제를 해결하기위한 수많은 예제와 코드를 찾을 수 있습니다.

여기, Producer/Consumer threads using a Queue 그것에 대해 유래 질문입니다.

Wikipedia page 상세히 문제를 설명.