Показать сообщение отдельно
Старый 26.04.2010, 15:54
TaNda вне форума Посмотреть профиль Отправить личное сообщение для TaNda Найти все сообщения от TaNda
  № 1  
Ответить с цитированием
TaNda

Регистрация: Feb 2010
Сообщений: 29
По умолчанию Как обратиться к элементам простого массива?

Проблема такая: создаю массив с элементами (для игры пятнашки). А как обратиться к ним по-человечески не понимаю. Просто [tileArr] (как в коде пока написано у меня) - получается не к каждому, а к списку элементов обращение, да? По книжке что-то не разобраться... Накрутила, навертела чего-то, и не работает(
Помогите если не сложно =)

Код AS1/AS2:
var tileArr:Array = ["tile1", "tile2", "tile3", "tile4", "tile5", "tile6", "tile7", "tile8", "tile9", "tile10", "tile11", "tile12", "tile13", "tile14", "tile15"];
 
function initGame()
{
	tileDist = 54;
	for (x=1; x<=4; x++)
	{
		for (y=0; y<=3; y++)
		{
 
			_root[tileArr]._x = x*tileDist+500;
			_root[tileArr]._y = 400+y*tileDist+tileDist;
		}
	}
	for (tilenum = 0; tilenum<100; tilenum++)
	{
		do
		{
 
			tile = [tileArr];
			emptySpace = findEmpty(tile);
		}
		while (emptySpace == "none");
		moveTile (tile, findEmpty(tile));
	}
}
 
function findEmpty(tile)
{
	tilex = _root[tile]._x;
	tiley = _root[tile]._y;
	if (tilex>tileDist+500)
	{
		if (!tileThere(tilex-tileDist, tiley))
		{
			return ("left");
		}
	}
	if (tilex<500+tileDist*4)
	{
		if (!tileThere(tilex+tileDist, tiley))
		{
			return ("right");
		}
	}
	if (tiley>tileDist+400)
	{
		if (!tileThere(tilex, tiley-tileDist))
		{
			return ("above");
		}
	}
	if (tiley<400+tileDist*4)
	{
		if (!tileThere(tilex, tiley+tileDist))
		{
			return ("below");
		}
	}
	return ("none");
}
function tileThere (thisx, thisy)
{
	for (i=1; i<tileArr.length; i++)
	{
		if (_root[tileArr[i]]._x == thisx)
		{
			if (_root[tileArr[i]]._y == thisy)
			{
				return true;
			}
		}
	}
	return false;
}
function moveTile(tile, direction)
{
	if(direction == "above")
	{
		_root[tile]._y -= tileDist;
	}
	else if (direction == "below")
	{
		_root[tile]._y += tileDist;
	}
	else if (direction == "left")
	{
		_root[tile]._x -= tileDist;
	}
	else if (direction == "right")
	{
		_root[tile]._x += tileDist;
	}
}
function tileUnderMouse()
{
	for (i=1; i<tileArr.length; i++)
	{
		if (_root[tileArr[i]].hitTest(_xmouse, _ymouse))
		{
			return (i);
		}
	}
}


Последний раз редактировалось TaNda; 26.04.2010 в 15:56.