Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.07.2007, 16:02
romulko вне форума Посмотреть профиль Отправить личное сообщение для romulko Найти все сообщения от romulko
  № 1  
Ответить с цитированием
romulko
 
Аватар для romulko

Регистрация: Jan 2006
Сообщений: 150
По умолчанию Помогите, пожалуйста, с логической реализацией.

Добрый день, уважаемые флешеры.
У меня такая проблема – взялся програмить вот такое задание –

Имеется новая колода карт(36 штук). Масти расположены в обычном порятке преферанса (пика, хреста, черва, бубна). Старшинство карт по убыванию от Туза до 6ки.
1. Перетасовать колоду и показать результат тасования.
2. Отсортировать назад в фабричный порядок и показать результат.
3. В колоду в случайные места добавили четыре Д , два В , К и восемь 6 . Убрать лишние карты не меня порядок карт и показать результат.
4. Раздать колоду на четверых играков в случайном порядке. Показать полученые каждым играком карты.
5. Объявить самую длинную масть в колоде для каждого игрока. На основе заявленых выбрать самую лучшую.


Из-за того, что нет реального опыт программировать логических систем, напрограммировал такого, что аж не знаю, куда податься (исходник прикрепленный).
Сделал только на одну масть и с раздачей на двух игроков.

Как сделать все по задачи даже не представляю… Друзья, пожалуйста, напишите два-три предложения по реализации этой задачи. Достаточно будет поверхностного описания.

Сижу над этим уже более недели.… Никак не получается сделать то, что надо…
Буду благодарен за любую помощь.
Вложения
Тип файла: zip Untitled-1.zip (6.1 Кб, 66 просмотров)

Старый 26.07.2007, 16:27
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 2  
Ответить с цитированием
†‡Paladin‡†

Регистрация: 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й элемент.

Старый 26.07.2007, 18:43
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 3  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
чувак)) это тестовое задание на каком-то сайте, где эту задачу должны решить претенденты на работу флешера в этой компании))) я натыкался в сети где-то, хотя сожет еще где то встречается подобная задача...

Старый 26.07.2007, 19:47
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 4  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Чето задача простая слишком. Работа с массивами это школа 11й класс.

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

Старый 27.07.2007, 02:47
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 6  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: 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;
}

Старый 27.07.2007, 03:06
romulko вне форума Посмотреть профиль Отправить личное сообщение для romulko Найти все сообщения от romulko
  № 7  
Ответить с цитированием
romulko
 
Аватар для romulko

Регистрация: Jan 2006
Сообщений: 150
†‡Paladin‡†, udaaff, Kikasso СПАСИБО Вам большущее за ответы! Сейчас буду анализировать структуру, ибо эбез этого никак

Цитата:
чувак)) это тестовое задание на каком-то сайте, где эту задачу должны решить претенденты на работу флешера в этой компании))) я натыкался в сети где-то, хотя сожет еще где то встречается подобная задача...
Не знаю, меня друг попросил помочь с этим. Так как я хочу переориентироваться на програминг (сейчас работаю дизайнером, и это уже достало), беру всякое разное, чтобы занять себя по АС.… Но, видимо, пока рановато брать подобные задания.

Еще рар спасибо всем.

Старый 27.07.2007, 03:23
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 8  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
Сообщение от romulko
1. Перетасовать колоду и показать результат тасования.
2. Отсортировать назад в фабричный порядок и показать результат.
3. В колоду в случайные места добавили четыре Д , два В , К и восемь 6 . Убрать лишние карты не меня порядок карт и показать результат.
4. Раздать колоду на четверых играков в случайном порядке. Показать полученые каждым играком карты.
5. Объявить самую длинную масть в колоде для каждого игрока. На основе заявленых выбрать самую лучшую.
1) - есть.
2) и 3) - добавь каждой карте свойство "номер" при генерации колоды. Таким образом выкинуть лишние и собрать обратно труда не составит.
4) Изначально все карты в "шузе" - массив не сданных карт. У игрока "рука", тоже массив. pop() из шуза, push() в руку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.