![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Эффект падающих цифр
datorn © (2009-07-17 19:57:00)Добрового времени суток, мастера! Подскажите, пожалуйста, как реализовать эффект падающих цифр ("дождь из цифр")? Этот эффект реализован в фильме "Матрица".
Вот реализовал один столбик "дождя", но как их сделать много и независимыми?
var
y_old:integer;
s:string;
c1,c2:TColor;
begin
c1:=$002FFF6D;
c2:=$00008800;
canvas.Font.Color:=c1;
//setbkmode(form1.canvas.Handle,Transparent);
s:=inttostr(random(2))+inttostr(random(2));
y_old := y-canvas.TextHeight(s);
canvas.TextOut(x,y,s);
canvas.Font.Color:=c2;
canvas.TextOut(x,y_old,s1);
s1:=s;
end;
brother (2009-07-23 08:16:00) [1]затейник однако )
Художник (2009-07-23 06:49:00) [2]
> brother © (21.07.09 09:10) [43]
нее нада весь ряд 0..255 ;)
brother (2009-07-23 04:15:00) [3]> Одной буквы не хватает :)
кому - что, видится)
turbouser___ (2009-07-22 15:28:00) [4]
> brother © (22.07.09 15:11) [52]
Одной буквы не хватает :)
brother (2009-07-22 15:11:00) [5]Matrix have as)
macrodens (2009-07-22 14:13:00) [6]to Andy BitOff ©
А не агент ли ты?
Anatoly Podgoretsky (2009-07-22 11:57:00) [7]> Andy BitOff (22.07.2009 10:54:48) [48]
Когда цифры прекратят падать.
brother (2009-07-22 10:58:00) [8]> Как узнать коды доступа к компьютеру Зеона
как всегда - перебором)
Andy BitOff (2009-07-22 10:54:00) [9]
> MacroDenS © (22.07.09 10:23) [47]
Как узнать коды доступа к компьютеру Зеона
MacroDenS (2009-07-22 10:23:00) [10]<<<OFFTOP>>>>
судя по всему следующим вопросом будет "как заставить цифери вращаться".
так со временем дойдем до темы: как написать свою собственную матрицу и найти в ней Нео (или Морфеуса)
:-)
Andy BitOff (2009-07-21 15:51:00) [11]а цифры все падали и падали...
Dennis I. Komarov (2009-07-21 14:08:00) [12]
> datorn © (20.07.09 18:54) [35]
Ну допустим и что с того? Мне от этого ни горячо ни холодно, а вот по какой причине решили обманывать людей, от которых просите помощь - не понятно. Наверное есть что скрывать или чего стесняться :-Р
brother (2009-07-21 09:21:00) [13]WMZ жду на кошелек)
brother (2009-07-21 09:10:00) [14]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
const
UnVisibleSymbol='!';
type
TFlySym = record
X, Y: Integer;
Symb: string[1];
IncSize: integer;
end;
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
FlySym: array of TFlySym;
public
{ Public declarations }
ActiveColor,
PassiveColor: TColor;
Image: TBitmap;
procedure Draw;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetRMDSymb:string;
begin
// 33-126
// 65-90
result:= chr(random(25)+65);
end;
procedure TForm1.FormCreate(Sender: TObject);
var x,y, n: integer;
begin
Randomize;
ActiveColor:=$002FFF6D;
PassiveColor:=$00008800;
Image:= TBitmap.Create;
Image.Width:= ClientWidth;
Image.Height:= ClientHeight;
Image.PixelFormat:= pf32bit;
SetLength(FlySym, Image.Width div 13);
for n:= 0 to length(FlySym)-1 do
begin
FlySym[n].X:= random( Image.Width div 13) * 13 ;
FlySym[n].Y:= random( Image.Height div 13) * 13;
FlySym[n].Symb:= GetRMDSymb;
FlySym[n].IncSize:= random(13-8)+8;
end;
Image.Canvas.Brush.Color:= clBlack;
PatBlt(Image.Canvas.Handle, 0, 0, Image.Width, Image.Height, BLACKNESS);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Image.Free;
end;
procedure TForm1.Draw;
var n: integer;
begin
for n:= 0 to length(FlySym)-1 do
begin
Inc(FlySym[n].Y, FlySym[n].IncSize);
if FlySym[n].Y >= Image.Height then
begin
FlySym[n].IncSize:= random(13-8) + 8;
FlySym[n].X:= random(Image.Width div 13) * 13 ;
FlySym[n].Y:= 0;
if random(3)<> 0 then
FlySym[n].Symb:= GetRMDSymb
else
FlySym[n].Symb:= UnvisibleSymbol;
end;
if FlySym[n].Symb<>UnVisibleSymbol then
FlySym[n].Symb:= GetRMDSymb;
if FlySym[n].Symb<>UnVisibleSymbol then
begin
PatBlt(Image.Canvas.Handle, FlySym[n].X, FlySym[n].Y - FlySym[n].IncSize,
13, 13, BLACKNESS);
Image.Canvas.Font.Color:= PassiveColor;
Image.Canvas.TextOut(FlySym[n].X , FlySym[n].Y - 13, FlySym[n].Symb);
Image.Canvas.Font.Color:= ActiveColor;
Image.Canvas.TextOut(FlySym[n].X , FlySym[n].Y, FlySym[n].Symb);
end
else
PatBlt(Image.Canvas.Handle, FlySym[n].X, FlySym[n].Y - FlySym[n].IncSize,
13, 13*2, BLACKNESS);
end;
Form1.Canvas.Draw(0,0, Image);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Draw;
end;
end.
как то так... там идей реализации до дури...)
V (2009-07-21 06:37:00) [15]datorn, этот код вообще бредовый, за основу его брать не надо, наоборот, так делать НЕ нужно :)
как я понял, надо чтобы расстояние по вертикали между цифрами постоянное было, только столбцы ползли по-разному, а еще желательно чтобы это все плавно происходило..
Германн (2009-07-21 01:28:00) [16]
> Уже мозги себе все проимел с этой матрицей, а конечный результат
> не достигнут, даже несмотря на советы мастеров(. А тут готовый
> код, ещё раз спасибо. Почитал, разобрался, допетрил, как
> надо.
Если тебе это помогло, - "В добрый путь".
turbouser (2009-07-20 23:51:00) [17]
> datorn © (20.07.09 23:00) [39]
Опыт-сын ошибок трудных
datorn (2009-07-20 23:00:00) [18]to KilkennyCat © (20.07.09 22:48) [38]
Да нет, не значит, что все остальные плохие. Просто из всех хороших только один предложил код)
Уже мозги себе все проимел с этой матрицей, а конечный результат не достигнут, даже несмотря на советы мастеров(. А тут готовый код, ещё раз спасибо. Почитал, разобрался, допетрил, как надо. Сам бы ещё неделю "учился".
KilkennyCat (2009-07-20 22:48:00) [19]
> Хоть один хороший человек предложил готовый код
А остальные все плохие. Потому что хотели, чтоб ты сам научился.
Ну, это нормально...
datorn (2009-07-20 21:44:00) [20]to V (20.07.09 21:34) [36]
О, огромное спасибо! Хоть один хороший человек предложил готовый код. Почти желаемый эффект. Тока еслиб цифры ещё как бы спускались сверху вниз как вот здесь -
http://softsearch.ru/programs/179-568-dos-matrix-2003-download.shtmlваще было бы именно то!