Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переписка цикла (https://javascript.ru/forum/dom-window/48303-perepiska-cikla.html)

looogle 28.06.2014 20:56

Переписка цикла
 
Доброго времени суток.Прошу простить за столь банальный пост.
Мне нужно переписать цикл do...while на цикл типа for.:write:

do...while
var x, y;
  do 
    {
		x = MR() * gameWidth|0;
		y = MR() * gameHight|0;
	} 
	while (map[x][y]);
	map[x][y] = 1;

Тут все предельно просто MR() - Math.random
gameWidth - ширина. gameHeight - высота.

Вот код связанный с map:
for (j = 0; j < gameWidth; j++)
{
 map[j] = [];
}

Прошу помочь,кто чем сможет...

рони 28.06.2014 21:08

looogle,
пару слов что скрипт должен делать?

looogle 28.06.2014 21:13

Скрипт выводим на полотно "еду",это как-бы рандомное местоположение

Sweet 28.06.2014 21:19

Чем do...while не угодил?

рони 28.06.2014 21:31

looogle,
и сколько 'еды' выхотите добавить на поле ?

рони 28.06.2014 23:26

looogle,
пример генерации "еды" на поле для змейки
http://javascript.ru/forum/misc/1135...html#post67971

рони 29.06.2014 01:19

Цитата:

Сообщение от рони
looogle,
пару слов что скрипт должен делать?

отвечаю -- скрипт должен выдать из матрицы ещё незаполненную ячеку.
превращаем двухмерный массив в одномерный выкидываем заполненные ячейки - рандомно достаём любую из оставшихся.

рони 29.06.2014 02:32

looogle,
var map=[],n = 0, i, j, gameHight = 5, gameWidth = 8, c = [], x;
//----------------------------------------------------------------------------
for (i = 0; i< gameHight; i++){
    map.push([]);
    for(j=0; j < gameWidth; j++){
        x=Math.round(Math.random()*1);
        map[i].push(x);
    }
}

//----------------------------------------------------------------------------
 for (i = 0; i< gameHight; i++){

    for(j=0; j < gameWidth; j++){

        !map[i][j] && c.push([i,j]);
    }
}
x = c.length;
x = Math.floor( Math.random()* x);
x = c[x];
c.length && (map[x[0]][x[1]] = 'X');
alert('карта\n'+map.join('\n')+'\nвыбрано поле ' + (!!c.length && x));


Часовой пояс GMT +3, время: 00:32.