Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
1

Рандомный вызов картинок

27.05.2012, 12:21. Просмотров 3722. Ответов 21
Метки нет (Все метки)

Добрый день не могу вызвать рандомно картинки из файла, помогите пожалуйста.!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 12:21
Ответы с готовыми решениями:

Рандомный вызов форм delphi
Программа для тестирования, вопросы на 100 формах delphi. Тест состоит из 30...

Рандомный вывод
Есть программа теста где вопросы берутся из бд Access. Но они идут по порядку,...

Рандомный алгоритм
Помогите пожалуйста. Нужно создать такой алгоритм, что бы он ранодомно в...

Рандомный выбор вкладок
Всем добрый день. У меня есть такой вопрос - имеется форма, на форме находится...

Рандомный элемент combobox
Кто-нибудь знает как сделать, что бы в combobox выбирался рандомный элемент??

21
zuxa-zuxa
Мишка Косолапый :)
282 / 252 / 86
Регистрация: 15.02.2012
Сообщений: 1,470
Завершенные тесты: 1
27.05.2012, 12:28 2
Цитата Сообщение от Миушник Посмотреть сообщение
картинки из файла
Как это картинки из файла?

если изображения вызывать то можно сделать case опрератор...
рандомь число и в зависимости от числа вызывай картинку...
0
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 12:37  [ТС] 3
ну не из файла а из папки...(ошибся) окей... а если число повторится картинка будет та же ...? т.е будут 2-е одинаковые картинки?
0
Санек25
420 / 350 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
27.05.2012, 12:48 4
ну для начала в одной папке у вас не может храниться 2 файла с одинаковым именем и расширением... А если из другой вызывать то картинка будет меняться
0
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 12:55  [ТС] 5
у меня 4 картинки .... мне необходимо чтобы при нажатии на кнопку .... они меняли своё место положение. т.е. они вместе должны меняться..
0
Санек25
420 / 350 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
27.05.2012, 13:04 6
они меняли своё место положение- Двигаться по форме что ли???

Image1.left:=Image1.left+10;
0
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 13:16  [ТС] 7
нет... есть 4 картинки.. нужно чтобы при нажатии на кнопку они рандомно загружались в имейдж и не повторялись..

Добавлено через 11 минут
поправка (в 4 имеджа)!
0
Санек25
420 / 350 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
27.05.2012, 13:55 8
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to 4 do
begin
form1.Image1.Picture.LoadFromFile('Файл'+inttostr(i)+'.jpg');  //вызывается файл1.jpg,файл2.jpg, файл3.jpg ,файл4.jpg
end;
end;
1
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 14:11  [ТС] 9
я так сделал уже... мне нужно что-бы РАНДОМНО они ЗАГРУЖАЛИСЬ=(( вот в чём беда!
0
Санек25
420 / 350 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
27.05.2012, 14:18 10
Используйте i:= random(4);
и проверку на совпадение имен
1
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
27.05.2012, 14:24 11
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
End;
 
procedure TForm1.FormCreate(Sender: TObject);
var 
  i,j : integer;
  s : Set Of 1..4;
begin
  s:=[];
  for i:=1 to 4 do
  begin
    j:=Random(4)+1;
    While Not (j In s) Do j:=Random(4)+1;
    Include(s,j);
    (FindComponent('Image'+inttostr(i)) As TImage).Picture.LoadFromFile('Файл'+inttostr(j)+'.jpg');
  end;
end;
1
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 14:43  [ТС] 12
вот по этому я и спрашиваю про рандомный вызов т.к. в вашем предложенном случаее рандом может сгинерировать...3-4-3-1 т.е будет 2-е одинаковые а необходимо чтобы они были разными!... есть идеи?
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
27.05.2012, 14:58 13
Я там специально ввёл множество s в котором отмечаются уже загруженные картинки. И одинаковые не будут загружены.

Добавлено через 4 минуты
Ошибка в моём коде. Строку 15 нужно написать так:
Delphi
1
    While (j In s) Do j:=Random(4)+1;
2
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 15:04  [ТС] 14
Спасибо всем ОГРОМНОЕ!!!!
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
27.05.2012, 15:40 15
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Var
  //Переменная для сохранения номера Image, в которую загружена правильная картинка
  NumImgCorrect : Integer;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
End;
 
//Рандомная загрузка картинок по клику кнопки
procedure TForm1.Button1Click(Sender: TObject);
var 
  i,j : integer;
  s : Set Of 1..4;
begin
  s:=[];
  for i:=1 to 4 do
  begin
    j:=Random(4)+1;
    While (j In s) Do j:=Random(4)+1;
    Include(s,j);
    If j=1 Then NumImgCorrect:=i; //Запомним Img с правильной картинкой
    (FindComponent('Image'+inttostr(i)) As TImage).Picture.LoadFromFile('q'+inttostr(j)+'.jpg');
  end;
end;
 
//Клик по Image - прикрепить ко всем Image
procedure TForm1.Image1Click(Sender: TObject);
var 
  i,j : integer;
  s : Set Of 1..4;
begin
  //Определим, на том Image кликнули, или не на том
  If (Sender Is TImage) Then
  (Sender As TImage).Name='Image'+inttostr(NumImgCorrect) Then
  Label1.Caption:='Выбор правильный!' Else
  Label1.Caption:='Выбор не правильный!';
End;
2
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 15:49  [ТС] 16
не много не так все правильные ответы уже "1 номер" их нужно как то сравнить
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
27.05.2012, 15:54 17
Правильные ответы файл q1. Он грузится в Image, номер которого мы запоминаем при загрузке:
Delphi
1
If j=1 Then NumImgCorrect:=i; //Запомним Img с правильной картинкой
Теперь по клике на Image мы просто сравниваем - его номер равен тому, который мы запомнили, или нет: (строку 36 замени):
Delphi
1
  If (Sender As TImage).Name='Image'+inttostr(NumImgCorrect) Then
1
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
27.05.2012, 17:09  [ТС] 18
Одиночка, обьясните пож как это всё работает...
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
27.05.2012, 17:36 19
Вот с подробными комментариями. Если что не ясно, копируй строку, выкладывай её и спрашивай.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Var
  //Переменная для сохранения номера Image, в которую загружена правильная картинка
  NumImgCorrect : Integer;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  //Инициализируем генератор случайных чисел
  Randomize;
End;
 
//Рандомная загрузка картинок по клику кнопки
procedure TForm1.Button1Click(Sender: TObject);
var 
  i,j : integer;
  s : Set Of 1..4;
begin
  s:=[]; //Множество, в кором будем отмечать уже считанные картинки
  for i:=1 to 4 do
  begin
    j:=Random(4)+1; //Начальное случайное значение в J
    While (j In s) Do //Если номер из j есть в множестве
    //Ищем следующее случайное число
    j:=Random(4)+1;
 
    Include(s,j); //Добавляем найденное число в множество
 
    //Если номер картинки j равен 1
    If j=1 Then NumImgCorrect:=i; //Запомним номер Image (i) с правильной картинкой
 
    //Считаем файл с номером j и поместим в Image с номером i
    //FindComponent - по имени компонента даёт сам компонент
    (FindComponent('Image'+inttostr(i)) As TImage).Picture.LoadFromFile('q'+inttostr(j)+'.jpg');
  end;
end;
 
//Клик по Image - прикрепить ко всем Image
procedure TForm1.Image1Click(Sender: TObject);
var 
  i,j : integer;
  s : Set Of 1..4;
begin
  //Определим, на том Image кликнули, или не на том
  //Sender - ссылка на компонент, по которому кликнули
  If (Sender Is TImage) Then //Проверяем - компонент Image?
  //(Sender As TImage) - обращение к компоненту как к конкретному типу
  //Проверяем: Имя компонента, по которому кликнули =
  //равно имени, сформированному с номером, который мы запомнили:
  If (Sender As TImage).Name='Image'+inttostr(NumImgCorrect) Then
  //Если сравнилось...
  Label1.Caption:='Выбор правильный!' Else
  //Если не сравнилось...
  Label1.Caption:='Выбор не правильный!';
End;
0
Миушник
36 / 36 / 10
Регистрация: 03.12.2010
Сообщений: 251
30.05.2012, 20:52  [ТС] 20
как сделать чтобы оно проще сравнивало, лучше написать на каждую картинку но что бы оно сравнивало по имени.... помогите пожалуйста.
0
30.05.2012, 20:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 20:52

Рандомный символ из строки
Подскажите, пожалуйста, как лейблу присвоить рандомный символ из строки....

Рандомный вывод в Memo
Добрый день. Сижу уже 3-й день,не получается... А,собственно,проблема в...

Рандомный вывод слов
Есть 5 слов которые хранятся в массиве slova Мне нужно: что бы при нажатии на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru