Показать сообщение отдельно
Старый 27.07.2007, 00:33
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
По умолчанию Первые три задания =)

Код:
trace('создаем колоду');
var r_default_array:Array = new Array();
//функция заполнения колоды по дефолту
r_default_array = default_pack();
//выводим колоду в консоль
for (var i = 0; i<36; i++) {
	trace(r_default_array[i].number+'--'+r_default_array[i].colour);
}
//
//1. Перетасовать колоду и показать результат тасования. 
//
var r_random_array:Array = new Array();
r_random_array = random_pack(r_default_array);
//выводим колоду в консоль
trace('выводим колоду в консоль');
for (var i = 0; i<36; i++) {
	trace(r_random_array[i].number+'--'+r_random_array[i].colour);
}
//
//2. Отсортировать назад в фабричный порядок и показать результат. 
//
trace('сортируем');
r_random_array.sortOn(['colour', 'number']).reverse();
for (var i = 0; i<36; i++) {
	trace(r_random_array[i].number+'--'+r_random_array[i].colour);
}
//
//3. В колоду в случайные места добавили четыре Д , два В , К и восемь 6 . 
//    Убрать лишние карты не меня порядок карт и показать результат. 
//
r_random_array = random_add_card(r_random_array);
trace("добавляем случайные карты");
for (var i = 0; i<r_random_array.length; i++) {
	trace(i+'   '+r_random_array[i].number+'--'+r_random_array[i].colour);
}
trace("удаляем лишние карты из калоды, не меня порядка карт");
r_random_array = delete_cards(r_random_array, r_default_array);
for (var i = 0; i<r_random_array.length; i++) {
	trace(i+'   '+r_random_array[i].number+'--'+r_random_array[i].colour);
}
//делаем проверку сортируем
trace('делаем проверку все ли на месте');
r_random_array.sortOn(['colour', 'number']);
for (var i = 0; i<r_random_array.length; i++) {
	trace(r_random_array[i].number+'--'+r_random_array[i].colour);
}
//*************************************************************************
//случайным образом добавляем заданные карты
//*************************************************************************
function random_add_card(in_array:Array):Array {
	//
	var out_array:Array = new Array();
	out_array = out_array.concat(in_array);
	var random_number:Number;
	var random_colour:Number;
	//добавляем дамы
	for (var i = 0; i<4; i++) {
		random_number = Math.floor(Math.random()*36);
		random_colour = Math.floor(Math.random()*4)+1;
		out_array.splice(random_number, 0, {number:7, colour:random_colour});
	}
	//вольты
	for (var i = 0; i<2; i++) {
		random_number = Math.floor(Math.random()*36);
		random_colour = Math.floor(Math.random()*4)+1;
		out_array.splice(random_number, 0, {number:6, colour:random_colour});
	}
	//король
	random_number = Math.floor(Math.random()*36);
	random_colour = Math.floor(Math.random()*4)+1;
	out_array.splice(random_number, 0, {number:8, colour:random_colour});
	//шестерки
	for (var i = 0; i<8; i++) {
		random_number = Math.floor(Math.random()*36);
		random_colour = Math.floor(Math.random()*4)+1;
		out_array.splice(random_number, 0, {number:1, colour:random_colour});
	}
	return out_array;
}
//удаление лишних карт
function delete_cards(in_array:Array, default_array:Array):Array {
	var out_array:Array = new Array();
	out_array = out_array.concat(in_array);
	var not_found:Boolean;
	for (var i = 0; i<=out_array.length; i++) {
		//ищем элемент в начальном массиве и удаляем если находим
		for (var j = 0; j<default_array.length; j++) {
			if (out_array[i] == default_array[j]) {
				default_array.splice(j, 1);
				j--;
				not_found = false;
				break;
			}
			not_found = true;
		}
		if (not_found) {
			out_array.splice(i, 1);
			i--;
		}
	}
	return out_array;
}
//*************************************************************************
//заполняем рабочую колоду случайным образом
//*************************************************************************
function random_pack(in_array:Array):Array {
	//переписываем начальную колоду во вспомогательный массив
	var accessory_array:Array = new Array();
	accessory_array = accessory_array.concat(in_array);
	//
	var out_array:Array = new Array();
	//будем из вспомогательного массива формировать рабочую колоду
	var random_number:Number;
	for (var i = 0; i<36; i++) {
		//генерируем случайное число в пределах оставшейся колоды
		random_number = Math.floor(Math.random()*(36-i));
		//вычленяем из вспомогательного массива объект и добавляем его в рабочий массив
		out_array.push(accessory_array.splice(random_number, 1)[0]);
	}
	return out_array;
}
//**************************************************************************
//функция заполнения колоды по дефолту
//**************************************************************************
function default_pack():Array {
	var out_array:Array = new Array();
	for (var i = 9; i>0; i--) {
		out_array.push({number:i, colour:1});
	}
	for (var i = 9; i>0; i--) {
		out_array.push({number:i, colour:2});
	}
	for (var i = 9; i>0; i--) {
		out_array.push({number:i, colour:3});
	}
	for (var i = 9; i>0; i--) {
		out_array.push({number:i, colour:4});
	}
	return out_array;
}
Проще ничего не придумал к сожалению)