Текст самой процедуры выглядит так:
procedure MapDraw(xKarti,yKarti,xTile,yTile:integer; buf:Tbitmap); var i,x,y:integer; begin x:=0; y:=0;
for i:=0 to xKarti*yKarti-1 do begin if i>0 then x:=i mod xKarti; if (x=0) and (i>0) then y:=y+1; buf.Canvas.Draw(x*xTile,y*yTile,Pic.Textures[ map.textures[i] ]); form1.Caption:='x='+inttostr(x)+' '+'y='+inttostr(y); end;
end;
Описание параметром процедуры xKarti - ширина игровой карты yKarti - длина игровой карты xTile - ширина клеток и текстур yTile - высота клеток и текстур buf - графический буфер, на который все рисуется, а потом весь буфер рисуется на чем-то. Буфер необходим дабы не происходило мигание при прорисовке графики, когда картинки рисуются поверх друг друга.
Использовать процедуру можно так: MapDraw(200,200,32,32,buf);
|