
Код:
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;
}
Проще ничего не придумал к сожалению)