![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 150
|
Добрый день, уважаемые флешеры.
У меня такая проблема – взялся програмить вот такое задание – Имеется новая колода карт(36 штук). Масти расположены в обычном порятке преферанса (пика, хреста, черва, бубна). Старшинство карт по убыванию от Туза до 6ки. 1. Перетасовать колоду и показать результат тасования. 2. Отсортировать назад в фабричный порядок и показать результат. 3. В колоду в случайные места добавили четыре Д , два В , К и восемь 6 . Убрать лишние карты не меня порядок карт и показать результат. 4. Раздать колоду на четверых играков в случайном порядке. Показать полученые каждым играком карты. 5. Объявить самую длинную масть в колоде для каждого игрока. На основе заявленых выбрать самую лучшую. Из-за того, что нет реального опыт программировать логических систем, напрограммировал такого, что аж не знаю, куда податься (исходник прикрепленный). Сделал только на одну масть и с раздачей на двух игроков. Как сделать все по задачи даже не представляю… Друзья, пожалуйста, напишите два-три предложения по реализации этой задачи. Достаточно будет поверхностного описания. Сижу над этим уже более недели.… Никак не получается сделать то, что надо… Буду благодарен за любую помощь. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Отлично. Заданы 4 массива, каждый по 9 карт. (вариант 1 двумерный)
0. делаем спец функцию по заполнения этих массивов. Заполняем картами по стоимости (1 это шестерка, 9ка == туз) 1. В новый массив занести в случайном порядке 36 карт, отобразить на экране. (двойной рандом. сначала 1-4 по колодам, затем 1-9 по столбцам. Уже выбранные значения удаляем из оригинальных массивов) 2. опять шаг 0 3. Циклом убираем все повторяющиеся значения. (лично я бы жахнул опять шаг 0) 4. Почти тоже самое что и шаг 1, только формируем не 1 новый массив из 36 карт, а 4 маленьких по 9. 5. Сортируем 4 полученных массива (метод пузырька или другие какие знаешь), отображаем 1й элемент. |
|
|||||
|
Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
|
чувак)) это тестовое задание на каком-то сайте, где эту задачу должны решить претенденты на работу флешера в этой компании))) я натыкался в сети где-то, хотя сожет еще где то встречается подобная задача...
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,058
|
Чето задача простая слишком. Работа с массивами это школа 11й класс.
|
|
|||||
|
...
модератор форума
Регистрация: 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;
}
|
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
standartDeck = {
signs:["S", "C", "D", "H"],
vals:[ 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]
};
function generateDeck(){
var n = 0;
var deck = [];
var t = standartDeck;
for (var s = 0; s<t.signs.length; s++) { // масти
for (var v = 0; v<t.vals.length; v++, i++) { // карты
deck.push( { sigh:t.signs[s], val:t.vals[v], order:n++ } );
}}
return deck;
}
function shakeDeck( deck ){
for(var i = 0; i< deck.length ; i++) deck[i].order = Math.random();
deck.sortOn("order", 16);
for(var i = 0; i< deck.length ; i++) deck[i].order = i;
}
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 150
|
†‡Paladin‡†, udaaff, Kikasso СПАСИБО Вам большущее за ответы! Сейчас буду анализировать структуру, ибо эбез этого никак
Цитата:
Еще рар спасибо всем. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Цитата:
2) и 3) - добавь каждой карте свойство "номер" при генерации колоды. Таким образом выкинуть лишние и собрать обратно труда не составит. 4) Изначально все карты в "шузе" - массив не сданных карт. У игрока "рука", тоже массив. pop() из шуза, push() в руку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|