|
|
Мини-проекты в Delphi
Проект «Имитация бросания кубика»
Класс TStaticText-используется для отображения надписей, а объект класса TTimer для отсчета промежутков времени. В этом проекте на 6 объектах TStaticText будут числа от 1 до 6. Они будут менять свой цвет по часовой стрелке, а выпавшее число (объект TStaticText) выделится, например, красным цветом.
Начнем с формы. Ее размер 600*600. на ней разместим невидимый объект Timer1, для которого зададим свойство Interval = 330 мс и объект StaticText1. Для него изменим текст на «1», ширина и высота по 80, шрифт Arial – полужирный, размер – 48. Скопируем объект StaticText1 и произведем вставку 5 раз. Расположим их по кругу. В центре расположим кнопку TButton с надписью «Пуск». Для удобства работы с объектами изображающими цифры от 1 до 6 создадим массив объектов. В разделе private объявим массив numb:array [0..5] of ^TStaticText;
Здесь же объявим две переменные, которые нужны для хранения значений выбранного числа и отображаемого на экране.
n,k:byte;
А перед этим разделом объявим процедуру инициализации этого массива –
procedure Initnumb;
Саму процедуру запишем раздел implementation ниже {$R *.dfm}
procedure TForm1.Initnumb;
begin
numb[0]:=@StaticText1;numb[1]:=@StaticText2;numb[2]:=@StaticText3;
numb[3]:=@StaticText4;numb[4]:=@StaticText5; numb[5]:=@StaticText6;
end;
Эта процедура будет вызываться сразу после запуска программы:
procedure Tform1.FormCreate(Sender: Tobject);
begin
Initnumb;
end;
Работа программы начинается с клика мышкой по кнопке. Выбирается случайное число диапазоне от 6 до 26, номер отображаемой цифры – 0 и с помощью оператора цикла все цифры (их фон) закрашиваются белым цветом. Кнопка Button1 становится недоступной. Запускается таймер.
procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
randomize;
n:=random(20)+6;
k:=0;
for i := 0 to 5 do
numb[i].Color :=clWhite;
numb[0].Color:=clAqua;
Button1.Enabled :=false;
Timer1.Enabled := true;
end;
Процедура, связанная с таймером все изображает на экране до тех пор, пока k не станет равным n. При этом все повторяется через заданный интервал. Каждый раз значение k увеличивается на единицу (inc(k)). Так как объектов 6, а n может достигать 25 используется оператор mod – остаток от деления одного целого числа на другое. i- номер цифры на экране.
Фон выбранной цифры окрашивается цветом, а предыдущей – белым. Имитируется движение по кругу. Последняя оказывается на красном фоне. При этом останавливается таймер, кнопка становится доступной.
procedure TForm1.Timer1Timer(Sender: TObject);
var i: byte;
begin
if k<n then
begin
i:=k mod 6;
numb[i].Color :=clWhite;
inc(k);
i:=k mod 6;
numb[i].Color:=clAqua;
end
else
begin
i:=k mod 6;
numb[i].Color:=clRed;
Timer1.Enabled:=false;
Button1.Enabled :=true;
end;
end;
Эта программа может заменить кубик во многих играх.
|
|