0

Я участвую в проекте моделирования ресурсных игр. Что мне нужно сделать, это ...Java Resource-Game Simulation

«Если ресурсов достаточно, запрос будет выполнен, и запрашиваемые количества будут вычтены из доступных количеств. Если ресурсов недостаточно, аниматор потребляет доступных количеств и ждать, когда будет доступно больше ресурсов ».

Вопрос заключается в том, как я могу сделать это возможным ... Для того, чтобы уменьшить ресурс, а затем провести где-то, что еще нужно, и уменьшить его, когда имеются необходимые ресурсы (например, кредит) ...

Пример :

... 100 зОЛОТО НУЖНО .... но ... 50 зОЛОТО ДОСТУПНО ...

... УМЕНЬШИТЬ золото 50 ... и ждать недо золото> = 50, а затем

... REDUCE GOLD BY 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; затем кредит = -70; ...

then I Math.abs (loan); так что кредит = 70;

, а затем я сделать if(wood>loan){ wood=wood-loan} // я, возможно, придется положить спать недо древесина обновляется снова ... и вот это ... я до сих пор понятия не имею, что это такое Producer/Consumer материал ...

+0

Заявление «подождите, пока не будут доступны ресурсы» означает, что у вас есть потоки производителей и потоки потребителей. Подробное объяснение синхронизации производителя и потребителя далеко выходит за рамки SO, что касается конкретных вопросов программирования. Поиск в Интернете для учебных пособий по многопоточному программированию и, в частности, «производитель-потребитель». Кроме того, прочитайте [FAQ] и [Ask], чтобы лучше понять, как писать хорошие вопросы. –

+0

@JimGarrison Я не согласен с тем, что это выходит за рамки SO, но такая игра может быть достигнута без многопоточности с помощью простого игрового цикла –

+0

Beyond SO scope? Что это? – user2375278

ответ

0

Рассмотрите возможность создания невыполненного объекта запроса; просто тип ресурса и непогашенная сумма. Затем добавляйте один к арраисту каждый раз, когда нужно поднимать одну из этих долгов. Затем каждый игровой цикл (как бы вы ни реализовывали это в своей игре) проверяете неисполненный список и задерживаете ресурсы, если можете,

1

Итак, решение, которое вы ищете, хорошо известно и много изучено в области информатики. Сама проблема называется проблемой производителя. Сделайте поиск по этому вопросу, и вы найдете множество примеров и кода для решения проблемы.

Это вопрос о стеке, об этом, Producer/Consumer threads using a Queue.

Wikipedia page, объясняя проблему подробно.