Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как правильно сделать цикл?


neo

Вопрос

Всем привет! я тут сделал пасьянс на Андройд

но обнаружил баг =( когда мешаю карты приложение иногда зависает и вырубается

я так понял проблема с этим циклом

  for pos:=1 to 20 do
  begin

    repeat
      empty:=True;
      r:=randomRange(1, 21);
      for n:=1 to pos do
      if (card[n]=r) then empty:=False;
    until empty=true;

    card[pos]:=r;

    Memo1.Lines.Add(inttostr(card[pos]));
  end;

тут генерируется числа от 1 до 20.. каждое число уникальное..

что неужели для современных гаджетов это очень мощная нагрузка на проц? сгенерировать таким образом 20 чисел?

кстати если я меняю строчку r:=randomRange(1, 21); на r:=random(19)+1; то вообще открывается только чёрный экран и ничего не видно... =(

Может быть кто нибудь знает как это ещё можно записать?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Я так понимаю, что у Вас есть "массив" из 20 элементов, который нужно сформировать (перемешать) в произвольном порядке. Так?

Я для похожих целей пользуюсь следующим:

var
  a: array [0 .. 19] of Integer;
  i, j, k: Integer;
begin
  //Заполняем начальными данными
  for i := Low(a) to High(a) do
    a[i] := i;
  //Перемешиваем
  for i := High(a) downto 1 do
    begin
      j := Random(i - 1);
      if i <> j then
        begin //Меняем местами элементы
          k := a[j];
          a[j] := a[i];
          a[i] := k;
        end; 
    end;
end;

 

Изменено пользователем sinuke
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...