Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2007, 10:56   #1
KAMASUTR
Пользователь
 
Регистрация: 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 ФПС!
Вот братья хочу что-бы помогли приструнить супостата!!
KAMASUTR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода 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