Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Эффект падающих цифр


Страницы:   1 2 3

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ваще было бы именно то!


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо