|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.08.2007, 10:56 | #1 |
Пользователь
Регистрация: 08.08.2007
Сообщений: 14
|
Розбор кода?
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,32 0,320,Buffer.Canvas.Handle,0,0,SRCC OPY); 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 ФПС! Вот братья хочу что-бы помогли приструнить супостата!! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод кода | ELL | Помощь студентам | 0 | 07.06.2008 01:36 |
Оптимизация кода. | MAKTECYMA | Общие вопросы C/C++ | 2 | 05.06.2008 16:48 |
разрядность кода | satanatas | Помощь студентам | 4 | 11.01.2008 18:15 |
Выдернуть куски кода из html-кода | trafbite | Помощь студентам | 7 | 18.08.2007 13:51 |