Показать сообщение отдельно
  #10 (permalink)  
Старый 23.05.2013, 14:30
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

вот немного переписал функцию:
function genCubeMap()
	{
	var reqX, reqY;
	
	var zanyato = false;
	for (var i=0; i < fieldSize; i++)
		{
		do
			{
			zanyato = false;
			reqX = parseInt(Math.random()*4);
			if (reqX == 4) reqX = 3;
			reqY = parseInt(Math.random()*4);
			if (reqY == 4) reqY = 3;
			
			for (var n=0; n < i+1; n++)
				{
				if (cubeMap[n] && cubeMap[n][1] == reqX && cubeMap[n][2] == reqY)
					{
					zanyato = true;
					break;
					}	
				}
			}
		while (zanyato);
		cubeMap[i] = [i<fieldSize-1 ? i+1 : null, reqX, reqY, '|'];
		}
	}


я большой противник рекурсий. лучше рекурсию заменить на цикл.
и метод random принимает значения от 0 до 1. т.е. вам нужен диапазон от 0 до 3. если при вашем подходе рандом выдаст 1.. и умножить на 4, то получится 4.. это конечно редко будет по теории вероятности, но будет...
Ответить с цитированием