Форум: "Игры";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Вниз2D карта Найти похожие ветки
← →
HellTrooper (2002-11-10 13:30) [0]Люди есть класс карты TMAP, который должен корректно отображать карту (размер тайтла 100х100) приведу код прорисовки...
Procedure TMap.BuildMap;
var i,j:integer;
rt:TRect;
begin
for i:=1 to MapRealSizeW div 100 do
for j:=1 to MapRealSizeH div 100 do
begin
rt.Left:=(i*100);
rt.Top:=(j*100);
rt.Right:=(i*100);
rt.Bottom:=(j*100);
if TestSrcImage(rt) then MapTextures.Items[MapDesc[(j*(MapRealSizeW div 100))+i ].ItemTexture].Draw(MapSurface,(100*i)-(MapPosition.X mod 100),(100*j)-(MapPosition.Y mod 100) ,0);
end;
end;
Здесь где-то ошибка с отрисовкой идея такова:
ТТТТТТ
ТЭЭЭЭТ
ТЭЭЭЭТ
ТТТТТТ
Отрисовка экрана:
destSur.Draw(0,0,DrawRect,MapSurface,false);
И процедура TMap.TestSrcImage(rc:Trect):boolean;
var
ScrRect:Trect;
rezzX:boolean;
rezzY:boolean;
begin
ScrRect.Left:=MapPosition.X-100;
ScrRect.Right:=MapPosition.X+Drawrect.Right-100;
ScrRect.Top:=MapPosition.Y-100;
ScrRect.Bottom:=MapPosition.Y+Drawrect.Bottom-100;
rezzX:=(rc.Left>=ScrRect.Left) and (rc.Left<=ScrRect.Right);
rezzX:=rezzX or
((rc.Right>=ScrRect.Left) and (rc.Right<=ScrRect.Right));
rezzY:=(rc.Top>=ScrRect.Top) and (rc.Top<=ScrRect.Bottom);
rezzY:=rezzY or
((rc.bottom>=ScrRect.Top) and (rc.bottom<=ScrRect.Bottom));
result:=rezzX and rezzY;
end;
Где-то глюк :( 3-ий день долбаюсь
← →
Stucker (2002-11-10 20:21) [1]Удалено модератором
← →
Ibrik (2002-11-10 21:22) [2]Вот мой код с использованием DelphiX. Всё работает, надеюсь
разберёшся, если чё пиши.
type
TMap=record
top : word;
left : word;
width : Word;
height : Word;
data : array [1..100,1..100] of byte;
end;
...
procedure DrawFon;
begin
for x:=1 to Round(Form1.DXDraw1.Display.Width/50)+1 do
for y:=1 to Round(Form1.DXDraw1.Display.Height/50)+1 do
Form1.DXImageList1.Items.Find(IntToStr(map.data[x+map.left div 50,y+map.top div 50])).Draw(Form1.DXDraw1.Surface,x*50-50-(map.left mod 50),y*50-50-(map.top mod 50),0);
{for x:=1 to 20 do}
end;
← →
cyborg (2002-11-11 09:23) [3]Глюк тут:
for i:=1 to MapRealSizeW div 100 do
for j:=1 to MapRealSizeH div 100 do
begin
rt.Left:=(i*100);
rt.Top:=(j*100);
rt.Right:=(i*100);
rt.Bottom:=(j*100);
Нужно так:
for i:=0 to (MapRealSizeW div 100)-1 do
for j:=0 to (MapRealSizeH div 100)-1 do
begin
rt.Left:=i*100;
rt.Top:=j*100;
rt.Right:=rt.Left+100;
rt.Bottom:=rt.Top+100;
← →
cyborg (2002-11-11 09:25) [4]Пардон :), даже так:
for j:=0 to (MapRealSizeH div 100)-1 do
for i:=0 to (MapRealSizeW div 100)-1 do
begin
rt.Left:=i*100;
rt.Top:=j*100;
rt.Right:=rt.Left+100;
rt.Bottom:=rt.Top+100;
Первый в цикле должен идти Y, за ним X
← →
cyborg (2002-11-11 09:29) [5]Может ещё какие глюки есть, незнаю DelphiX поэтому сказать не могу.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.148 c