![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Есть ряд процедур. Допустим first(); second(); third(); Каким образом можно выбирать случайную? Поясню - пишу бота, в процедурах различные действия. Для "реальности" нужно в процессе работы бота выбирать случайным образом то либо иное действие. Как это нужно делать? Что-то мне подсказывает, что нужно сделать массив с указанием на процедуры, и хотя бы через RandomRange выбирать случайную. Вот только возможно ли это? Массив процедур?
|
|
#2
|
||||
|
||||
|
почему бы и нет? главное, чтобы функции были совместимы по типу и принимаемым параметрам
Код:
program Project2;
{$APPTYPE CONSOLE}
type TMyProc = procedure(param:string);
TMyArr = array of TMyProc;
procedure MyProc1(param:string);
begin
writeln(param);
end;
procedure MyProc2(param:string);
begin
writeln('ololo');
end;
var Arr:TMyArr;
k:char;
begin
Randomize;
SetLength(Arr, 2);
Arr[0]:=@MyProc1;
Arr[1]:=@MyProc2;
repeat
Arr[Random(Length(Arr))]('omg');
readln(k);
until k='q';
end. |
|
#3
|
||||
|
||||
|
Цитата:
Код:
x:=random(2); case x of 0:first(); 1:second(); 2:third(); end; Ну смысл понятен... |
|
#4
|
|||
|
|||
|
сделать рандом N числа и кейс по вызову определенной процедуры в зависимости от кейса.
к примеру: randomize; K:=random(3); case K of 0: first(); 1: second(); 2: third(); 3: zero(); end; однако думаю интереснее было бы рандом сделать зависимым от действий пользователя для увеличения ощущения "правдивости" p.s. о, сорь, продублировал пост предыдущего комментатора) Последний раз редактировалось BlackDizel, 19.10.2010 в 19:51. |
|
#5
|
|||
|
|||
|
Всем спасибо!
|