unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TGameRead=class(TThread) // класс для таймера игры
private
protected
procedure Execute;override; // Запуск
procedure Tic; // Один тик программы
end;
var
Form1: TForm1;
Wizard,// Спрайт
Buffer,// Буфер
Flur:Tbitmap;// фоновый рисунок
WizardX,WizardY:integer; // начальные координаты волшебника
T1:TGameRead; //
G:integer;
implementation
uses gfxutil;
{$R *.DFM}
procedure TGameRead.execute;
begin
repeat
synchronize(Tic);
until Terminated
end;
procedure TGameRead.Tic;
begin
// Тут пишем все как в TTimer OnTime
BitBlt(Buffer.Canvas.Handle,0,0,320,320,Flur.Canvas.Handle,0,0,SRCCOPY);
DrawBitmapTransparent(Buffer.Canvas,WizardX,WizardY,Wizard,clred);
BitBlt(Form1.Canvas.Handle,20,20,320,320,Buffer.Canvas.Handle,0,0,SRCCOPY);
Inc(G);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Создаем спрайт
Wizard:=Tbitmap.Create;
Wizard.Loadfromfile('spr1.bmp');
// Создаем подложку
Flur:=Tbitmap.Create;
Flur.Loadfromfile('flur.bmp');
// и буфер
Buffer:=Tbitmap.Create;
Buffer.Height:=320; // у буфера нужно задать размер
Buffer.Width:=320;
// начальные координаты
WizardX:=135;
WizardY:=135;
T1:=TGameRead.Create(false); // Создаем поток
T1.Priority:=TpHighest; // Ставим приоритет
G:=0;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
WizardY:=Y;
WizardX:=X;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
T1.Suspend;// Приостановим
T1.Free; // и прибем
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.caption:='FPS :'+IntToStr(G);
G:=0;
end;
end.
Движение без мерцания
Код:
вот есть такой код , который рисует движение без мерцания, нг проблема! На старых машинах (Мегагерцев эдак 300) все идет норм (ФПС 100) но на машинах с скоростью 1700 оно жостко тормозит и выводит 24364 ФПС!:)
Вот братья хочу что-бы помогли приструнить супостата!!
[color=red]Применяй для оформления кода специальные теги. Модератор.[/color]