Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2014, 21:14   #1
ABATAP3D
Новичок
Джуниор
 
Регистрация: 01.04.2014
Сообщений: 1
По умолчанию Использования image в массивах (delphi)

всем здравствуйте! делаю игрушку дело в том что не знаю как сделать правильно поэтому спрошу вас!
на форме будет использоваться много image; например 20 штук
координаты каждого image будет закреплёна и в каждом будет разная картинка.
(координаты выставляю в ручную без массива ) - image 1-20

Нужно чтобы один image из 20 появился рандомно, затем кликая по нему появляется следующая и так далее так же рандомно из 20,и нужно чтобы не повторялись как бы "использованное нельзя повторять"

Пример кода:

Код:
type
  TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
  private
  procedure MasClick(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  mas:array[1..20] of TImage; //масив из 20 имадже
  m:set of byte; //множество номеров
 
implementation
 
{$R *.dfm}
//создание масива
procedure TForm1.FormCreate(Sender: TObject);
var i,j,k,d:byte;
begin
randomize;
d:=10;
Form1.ClientHeight:=400+5*d;
Form1.ClientWidth:=500+6*d;
for i:=1 to 4 do
for j:=1 to 5 do
 begin
  k:=5*(i-1)+j;
  mas[k]:=TImage.Create(Form1);
  with mas[k] do
   begin
    Parent:=Form1;
    width:=100;
    height:=100;
    Left:=j*d+100*(j-1);
    Top:=i*d+100*(i-1);
    canvas.Brush.Color:=clWhite;
    tag:=i;
    visible:=false;//все прячем
    OnClick:=MasClick
  end;
 end;
i:=1+random(20); //один показываем
m:=[i];
mas[i].Visible:=true;
end;
//процедура клика на имадже
procedure TForm1.MasClick(Sender: TObject);
var i:byte;
begin
repeat
i:=1+random(20);
until not(i in m);
m:=m+[i];
//показываем очередной случайный
if (sender is timage) then mas[i].Visible:=true;
end;
ABATAP3D вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Три массива: Образовать третий массив из элементов, встречающихся в обоих массивах (Delphi) Agent_147 Помощь студентам 1 13.04.2011 13:31
RSA в Delphi без использования CryptoAPI PalychXX Компоненты Delphi 1 26.11.2010 03:03
Использования библиотеки LZMA в Delphi Crystallon Общие вопросы Delphi 2 25.09.2010 06:25
Delphi 7 Обработка данных в многомерных массивах. Alkifr Помощь студентам 11 04.05.2010 15:55
обработка данных в многомерных массивах(Delphi) Namiko Помощь студентам 0 09.04.2010 19:55