![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите!!!!!!
Филипок:) © (2006-07-30 18:46:00)Привет всем,я решил написать карточную игру, и у меня возникли проблемы. У меня есть 54 фотографии карт и 54 image и мне нужно что бы в них загружались картинки карт, причем при каждом запуске игры должны появляться разные карты.
P.S. Наверно вопрос дурацкий но я ещё учусь, так что не обежай
default (2006-07-30 20:07:00) [1]Virgo_Style © (30.07.06 19:50) [14]
по-моему я:)
только несколько иначе
берём первый элемент и переставляем его с элементом Random(54)+1
потом второй элемент и переставляем его с элементом Random(54)+1
и тд
вроде раньше доказывал, что выборки будут равновероятны
щас этим заниматься лень
можно просто протестировать, без теории
DprYg (2006-07-30 19:52:00) [2]Да, метод неплохой. Только как определить для какого-то N это достаточно большое число?
Virgo_Style (2006-07-30 19:50:00) [3]помню, кто-то советовал такой метод:
массив A[1..N] заполняется A[i] = i; затем некоторое достаточно большое число раз два случайно выбранных элемента меняются местами.
Получаем массив случайно расположенных неповторяющихся чисел 1,2..N
DprYg (2006-07-30 19:48:00) [4]То есть генерируем индекс массива random(n-1). Загружаем карту с этим индексом. Удаляем этот элемент. Снова генерим индекс random(n-2)...
DprYg (2006-07-30 19:46:00) [5]А если попробовать после генерации какого-то числа удалять его из массива и рандомить опять и т.д.?
Homo Sapiens (2006-07-30 19:41:00) [6]А можно ещё сначала просто зарузить по порядку, а уже загруженные
распологать случайно...
Ivolg (2006-07-30 19:39:00) [7]>DprYg ©
Ну у него же не 10000 карт )
DprYg (2006-07-30 19:35:00) [8]А если бы было 10000 карт? Для получения последнего числа в последовательности придется рандомить приблизительно столько же раз. Время...
DprYg (2006-07-30 19:32:00) [9]
> Randomize;
> Image1.Picture.LoadFromFile('Card'+IntToStr(Random(53))+'bmp');
>
Правильно писать Random(54) 0<=X<54
Ivolg (2006-07-30 19:25:00) [10]Можно попробовать написать комбинацию списка файлов например: Card0;Card50;Card24;Card38; и т.п, а потом их загружать...
Homo Sapiens (2006-07-30 19:22:00) [11]
> А как сделать что бы они не повторялись?
Завести флажок и при каждом рандомизе проверять, есть такой image или нет. Если есть, то рандомизить заново
Филипок:) (2006-07-30 19:12:00) [12]А как сделать что бы они не повторялись?
PSPF2003 (2006-07-30 19:05:00) [13]Вот автор написал дурака скачивай и учись...
http://www.sekator13.narod.ru/
Ivolg (2006-07-30 19:05:00) [14]>Филипок:)
Могут конечно...
Филипок:) (2006-07-30 19:02:00) [15]Но уменя Image 54 штуки и если использовать этот код со всеми то они могут повторяться!
Ivolg (2006-07-30 19:00:00) [16]>Филипок:)
Можно сделать вот так:
Randomize;
Image1.Picture.LoadFromFile('Card'+IntToStr(Random(53))+'bmp');
При этом каждый файл должен быть переименован в Card0...Card53