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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 17:56   #1
Jlovenpk1
Ламер С#
Пользователь
 
Аватар для Jlovenpk1
 
Регистрация: 14.12.2011
Сообщений: 34
По умолчанию (Delphi 7) Рандомный ответ при клике на кнопку.

Объясните мне, при клике на кнопку в label(или edit,memo) должен выдаться рандомный ответ))
Допустим - 1 раз нажал - Лол.
Второй раз нажал - Другой текст.
Если можно разъясните как это сделалось, ото просто если я зазубрю код наизусть не особо пользы будет)
Обожаю эти строк - While 1=1 do begin -
Jlovenpk1 вне форума Ответить с цитированием
Старый 08.04.2012, 18:08   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну например так:
Код:
ans := random(5);
case ans of
  0: lbl1.caption := 'abc';
  1: lbl1.caption := 'qwe';
  2: ...
  3: ...
  4: ...
end;
вроде понятно всё? генерируем число от 0 до 4 и в зависимости от того, что получилось выбираем ответ. Если надо чтоб никогда не получилось два подряд одинаковых, то можно это добавить:
Код:
tmpans := ans;
repeat
  ans := random(5)
until ans <> tmpans;
т.е. если получилось тоже самое число, то сгенерировать еще раз и т.д. пока не получится другое число.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2012, 18:12   #3
Jlovenpk1
Ламер С#
Пользователь
 
Аватар для Jlovenpk1
 
Регистрация: 14.12.2011
Сообщений: 34
По умолчанию

Так если я правильно понял примерный код мой будет таким.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ans := random(5);
case ans of
  0: label1.caption := 'abc';
  1: label1.caption := 'qwe';
  2: ...
  3: ...
  4: ...
end;
Обожаю эти строк - While 1=1 do begin -
Jlovenpk1 вне форума Ответить с цитированием
Старый 08.04.2012, 18:14   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо да. Только еще бы randomize; где-нибудь в начале добавить не помешало, чтоб числа были "более случайными".
и вместо ... естественно какие-то другие варианты ответа.
и объявить переменную ans надо (integer).
и этот end; относится к case, а не к событию кнопки.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 08.04.2012 в 18:19.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2012, 18:16   #5
Jlovenpk1
Ламер С#
Пользователь
 
Аватар для Jlovenpk1
 
Регистрация: 14.12.2011
Сообщений: 34
По умолчанию

Вместо random(5) поставить randomize(5).
(5) - что означает?))
Обожаю эти строк - While 1=1 do begin -
Jlovenpk1 вне форума Ответить с цитированием
Старый 08.04.2012, 18:18   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://www.delphibasics.ru/Randomize.php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2012, 18:19   #7
Jlovenpk1
Ламер С#
Пользователь
 
Аватар для Jlovenpk1
 
Регистрация: 14.12.2011
Сообщений: 34
По умолчанию

спасибо, буду практиковаться
Обожаю эти строк - While 1=1 do begin -
Jlovenpk1 вне форума Ответить с цитированием
Старый 08.04.2012, 18:30   #8
Jlovenpk1
Ламер С#
Пользователь
 
Аватар для Jlovenpk1
 
Регистрация: 14.12.2011
Сообщений: 34
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
ans := random(5);integer \\ ругается на него. 
begin
case ans of
  0: label1.caption := 'abc';
  1: label1.caption := 'qwe';
  2: label1.Caption := ' Лол что?)';
  3: label1.caption := 'Ты лол?)';
  4: label1.caption := 'опа опа опа -па -па';
end;
end;
begin
randomize
end.
Обожаю эти строк - While 1=1 do begin -
Jlovenpk1 вне форума Ответить с цитированием
Старый 08.04.2012, 18:35   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем вы это в объявление засунули? ans должно быть обычной переменной целочисленного типа, а random это стандартная функция и к объявлению отношения не имеет. http://www.delphibasics.ru/Random.php

Не торопитесь, это ж форум, а не чат, почитайте лучше любую книжку про основы Паскаля.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 08.04.2012 в 18:40.
Alex11223 вне форума Ответить с цитированием
Старый 08.04.2012, 18:58   #10
MoBLer
Пользователь
 
Аватар для MoBLer
 
Регистрация: 30.12.2010
Сообщений: 91
По умолчанию

Вот так будет правильно
PHP код:
procedure TForm1.Button1Click(SenderTObject);
var
ans :integer;
begin
randomize
;
ans:=random(5);
case 
ans of
  0
label1.caption := 'abc';
  
1label1.caption := 'qwe';
  
2label1.Caption := ' Лол что?)';
  
3label1.caption := 'Ты лол?)';
  
4label1.caption := 'опа опа опа -па -па';
end;
end;

end
Я тебе помог, добавь отзыв)))))
Статьи по программированию
MoBLer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомный объект в Дельфи, перемещающийся по форме при событии клика мыши Raydi Помощь студентам 1 06.11.2010 19:54
delphi, при щелчке по пустой форме, создается кнопка, при щелчке на кнопку, она становится цветная KaZaaM Помощь студентам 5 15.05.2010 00:48
на delphi создать прогу, которая при нажатии на кнопку создавала exe X-LEV-X Фриланс 6 06.03.2010 17:13
Сортировка при клике на колонке mental БД в Delphi 6 23.12.2009 17:07
Открытие нового окна, при нажатии на кнопку(Delphi). sergey31 Помощь студентам 2 24.05.2008 14:48