Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

помогите отладить алгоритм!!!!!!!   Найти похожие ветки 

 
Kein   (2003-10-21 21:53) [0]

есть алгоритм который работает, но работает очень медленно(загрузка проца 100%). никак не могу понять где тормозит.
если у кого есть желание и время, помочь отладить обращайтесь на моё мыло.


 
Asteroid   (2003-10-21 22:14) [1]

а сюда кинуть никак? или хоть немного поконкретней?
А загрузка так или иначе будет 100%, вот только смотря на какое время.


 
VictorT   (2003-10-21 22:24) [2]

Чтоб алгоритм оптимизировать, нужно его видеть...
А чтоб проц разгрузить, всунь в цикл Sleep(1)


 
Kein   (2003-10-22 17:12) [3]

вот листинг программы:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ImgList, DXClass, DXDraws;

{$R bitmaps.res}

type
TForm1 = class(TForm)
DXTimer1: TDXTimer;
Baraban1: TDXDraw;
Combinacia1: TLabel;
Baraban2: TDXDraw;
Combinacia2: TLabel;
Baraban4: TDXDraw;
Combinacia4: TLabel;
Baraban3: TDXDraw;
Combinacia3: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TIgrovoyAvtomat = record
y1,y2,y3,number1,number2,number3,key1,key2,key3,speed1,speed2,speed3,
prihod,rashod,balans: integer;
rabotaet: boolean;
Bitmap: TImage;
end;

var
Form1: TForm1;
Avtomat1,Avtomat2,Avtomat3,Avtomat4: TIgrovoyAvtomat;

implementation

{$R *.DFM}

const
images: array [0..9] of string = ("A","B","C","D","E","F","G","H","I","J");

var
Lents: array [0..9] of TImage;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Avtomat1.Bitmap.Free;
Avtomat2.Bitmap.Free;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
with AvtomatI do begin
if speed3=0 then rabotaet:=false;
BitBlt(Bitmap.Canvas.Handle,0,0,150,200,Lents[number1].Canvas.Handle,
0,y1,SrcCopy);
BitBlt(Bitmap.Canvas.Handle,150,0,300,200,Lents[number2].Canvas.Handle,
0,y2,SrcCopy);
BitBlt(Bitmap.Canvas.Handle,300,0,450,200,Lents[number3].Canvas.Handle,
0,y3,SrcCopy);
BitBlt(BarabanI.Surface.Canvas.Handle,0,0,450,200,Bitmap.Canvas.Handle,
0,0,SrcCopy);
BarabanI.Surface.Canvas.Release;
BarabanI.Flip;
inc(y1,speed1);inc(y2,speed2);inc(y3,speed3);
if y1>=200 then begin
if number1>8 then number1:=0 else inc(number1);
y1:=0;
if key1=number1 then speed1:=0;
end;
if y2>=200 then begin
if number2>8 then number2:=0 else inc(number2);
y2:=0;
if (speed1=0) and (key2=number2) then speed2:=0;
end;
if y3>=200 then begin
if number3>8 then number3:=0 else inc(number3);
y3:=0;
if (speed2=0) and (key3=number3) then speed3:=0;
end;
end;
{так четыре раза,где написано AvtomatI или BarabanI вместо I число 1-4}
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
ord(49):with Avtomat1 do begin
key1:=Random(9);key2:=Random(9);key3:=Random(9);
speed1:=100;speed2:=100;speed3:=100;
Combinacia1.Caption:=IntToStr(key1)+" "+IntToStr(key2)+" "+IntToStr(key3);
rabotaet:=true;
end;
{здесь тоже идёт 4 раза)
VK_ESCAPE:Application.Terminate;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
k: integer;
TempImage: TImage;
begin
Randomize;
Form1.WindowState:=wsMaximized;
TempImage:=TImage.Create(self);
for k:=0 to 9 do begin
Lents[k]:=TImage.Create(Form1);
Lents[k].SetBounds(0,0,150,400);
TempImage.Picture.Bitmap.LoadFromResourceName(hInstance,images[k]);
Lents[k].Canvas.Draw(0,0,TempImage.Picture.Bitmap);
TempImage.Picture.Bitmap.LoadFromResourceName(hInstance,images[(k+1) mod 10]);
Lents[k].Canvas.Draw(0,200,TempImage.Picture.Bitmap);
end;
TempImage.Free;
Avtomat1.Bitmap:=TImage.Create(self);
Avtomat1.rabotaet:=false;
with Avtomat1 do begin
Bitmap.Picture.Bitmap.Height:=200;
Bitmap.Picture.Bitmap.Width:=450;
Bitmap.Canvas.Brush.Color:=clWhite;
Bitmap.Canvas.FillRect(Rect(0,0,450,200));
BitBlt(Bitmap.Canvas.Handle,0,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,150,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,300,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
end;
Avtomat2.Bitmap:=TImage.Create(self);
Avtomat2.rabotaet:=false;
with Avtomat2 do begin
Bitmap.Picture.Bitmap.Height:=200;
Bitmap.Picture.Bitmap.Width:=450;
Bitmap.Canvas.Brush.Color:=clWhite;
Bitmap.Canvas.FillRect(Rect(0,0,450,200));
BitBlt(Bitmap.Canvas.Handle,0,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,150,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,300,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
end;
Avtomat3.Bitmap:=TImage.Create(self);
Avtomat3.rabotaet:=false;
with Avtomat3 do begin
Bitmap.Picture.Bitmap.Height:=200;
Bitmap.Picture.Bitmap.Width:=450;
Bitmap.Canvas.Brush.Color:=clWhite;
Bitmap.Canvas.FillRect(Rect(0,0,450,200));
BitBlt(Bitmap.Canvas.Handle,0,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,150,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,300,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
end;
Avtomat4.Bitmap:=TImage.Create(self);
Avtomat4.rabotaet:=false;
with Avtomat4 do begin
Bitmap.Picture.Bitmap.Height:=200;
Bitmap.Picture.Bitmap.Width:=450;
Bitmap.Canvas.Brush.Color:=clWhite;
Bitmap.Canvas.FillRect(Rect(0,0,450,200));
BitBlt(Bitmap.Canvas.Handle,0,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,150,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
BitBlt(Bitmap.Canvas.Handle,300,0,150,200,Lents[0].Canvas.Handle,0,0,
SrcCopy);
end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
BitBlt(Baraban1.Surface.Canvas.Handle,0,0,450,200,Avtomat1.Bitmap.Canvas.Handle,0,0,
SrcCopy);
Baraban1.Surface.Canvas.Release;
BitBlt(Baraban2.Surface.Canvas.Handle,0,0,450,200,Avtomat2.Bitmap.Canvas.Handle,0,0,
SrcCopy);
Baraban2.Surface.Canvas.Release;
BitBlt(Baraban3.Surface.Canvas.Handle,0,0,450,200,Avtomat3.Bitmap.Canvas.Handle,0,0,
SrcCopy);
Baraban3.Surface.Canvas.Release;
BitBlt(Baraban4.Surface.Canvas.Handle,0,0,450,200,Avtomat4.Bitmap.Canvas.Handle,0,0,
SrcCopy);
Baraban4.Surface.Canvas.Release;
end;

end.

по моему тормозит процедура таймера из-за копирования изображений. прога имитирует вращение барабанов игрового автомата, интервал таймера=0(иначе не плавно крутятся),speed - смещение изображения каждое срабатывание таймера, key1,key2,key3 - значения цифр которые должны выпасть, number1,number2,number3 - текущее значение цифры.
для работы нужен DelphiX.


 
alxx   (2003-10-22 17:17) [4]

GDI вообще по жизни тормозная вещь. Попробуй использовать DIB.


 
Kein   (2003-10-23 14:02) [5]

2alxx

никогда с DIB не работал. где о них можно почитать?


 
alxx   (2003-10-23 14:09) [6]

MSDN



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
4-42246
pum5a
2003-09-13 16:40
2003.11.13
Как найти контрол по его WHND (кроме FindControl)?


14-41935
konstantinov
2003-10-20 21:45
2003.11.13
Подскажите формулу градусы Кельвина -> Фаренгейт


1-41376
Rasil
2003-10-30 02:17
2003.11.13
Перемещение формы


1-41711
MaG
2003-11-03 19:16
2003.11.13
HTML


6-41854
famous
2003-09-10 03:33
2003.11.13
поиск в web документе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский