Я работаю над этой видеоигрой с кучей монстров, которые проходят по экрану. Проблема в какой-то момент, когда монстр проходит мимо области (идет выше y-координаты) и должен пройти весь путь назад. Я получил предложение сделать эту передачу снизу вверх, задержанной случайным количеством времени (0, 1, 2 или 3 секунды). Прямо сейчас, он просто поднимается на вершину без каких-либо перерывов. Моя проблема заключается в реализации этого разрыва. Я пробовал различные методы, такие как сваливания с петлей, как показано нижеЗавершение программы без потоков
// if(monster is below 400 on y-axis
if(sbgBackFootY[ i ] >= 400) {
// random number that determines how long it will take to go to top
int randCo = (int) (Math.random() * 3);
if(randCo == 0) {
//moves monster to top
sbgHeadX[ i ] = 200;
sbgHeadY[ i ] = 80;
sbgMouthX[ i ] = 206;
sbgMouthY[ i ] = 110;
sbgBackX[ i ] = 190;
sbgBackY[ i ] = 95;
sbgBackFootX[ i ] = 190;
sbgBackFootY[ i ] = 115;
sbgFrontFootX[ i ] = 197;
sbgFrontFootY[ i ] = 115;
sbgLeftEyeX[ i ] = 205;
sbgLeftEyeY[ i ] = 90;
sbgRightEyeX[ i ] = 215;
sbgRightEyeY[ i ] = 90;
sbgLeftEyebrowStartX[ i ] = 203;
sbgLeftEyebrowStartY[ i ] = 83;
sbgLeftEyebrowEndX[ i ] = 210;
sbgLeftEyebrowEndY[ i ] = 90;
sbgRightEyebrowStartX[ i ] = 220;
sbgRightEyebrowStartY[ i ] = 83;
sbgRightEyebrowEndX[ i ] = 215;
sbgRightEyebrowEndY[ i ] = 90;
}
if(randCo == 1) {
//loop is supposed to stall program
for(int w = 0; w <= 1000000000; w++){
SBGco[ i ]++;
}
if(SBGco[ i ] == 1000000000) {
//moves monster to top
sbgHeadX[ i ] = 200;
sbgHeadY[ i ] = 80;
sbgMouthX[ i ] = 206;
sbgMouthY[ i ] = 110;
sbgBackX[ i ] = 190;
sbgBackY[ i ] = 95;
sbgBackFootX[ i ] = 190;
sbgBackFootY[ i ] = 115;
sbgFrontFootX[ i ] = 197;
sbgFrontFootY[ i ] = 115;
sbgLeftEyeX[ i ] = 205;
sbgLeftEyeY[ i ] = 90;
sbgRightEyeX[ i ] = 215;
sbgRightEyeY[ i ] = 90;
sbgLeftEyebrowStartX[ i ] = 203;
sbgLeftEyebrowStartY[ i ] = 83;
sbgLeftEyebrowEndX[ i ] = 210;
sbgLeftEyebrowEndY[ i ] = 90;
sbgRightEyebrowStartX[ i ] = 220;
sbgRightEyebrowStartY[ i ] = 83;
sbgRightEyebrowEndX[ i ] = 215;
sbgRightEyebrowEndY[ i ] = 90;
}
}
Но компьютер вычисляет слишком быстро, так что ж переменная становится 1000000000 путь слишком быстро. Другой способ сделать это - создать потоки и запустить Thread.sleep (randCo) или что-то в этом роде, но я стараюсь не многопоточно. Есть ли другой способ, которым я могу это сделать?
Не думайте, что он может нить спать. Если я понимаю его правильно, единственный поток отображает * всех * его монстров, поэтому, если вы пропустите сна, все монстры остановятся (в отличие от тех, кто перемещается по границам) – Michael
@Michael. Во втором чтении вопроса, я думаю, вы Верно. Он должен пойти с решением Эндрю. – tibtof