Данная процедура пригодится для стратегий и игр с видом сверху. Разбив карту на ячейки, наша процедура наглядно покажет местонахождение всех обьектов, может использоваться в разных целях. Для начала обьявляем процедуру так:var i:integer; //могут возникать проблемы если перед процедурой не обьявлена ни одна переменная
procedure Setka(xKarti,yKarti,xKletki,yKletki:integer; Buf:Tbitmap);
Далее копируем следующий код самой процедуры
procedure Setka(xKarti,yKarti,xKletki,yKletki:integer; Buf:Tbitmap); var x,y:integer; begin x:=xKletki; y:=yKletki; while(x<=xKletki*xKarti) do begin buf.Canvas.MoveTo(x,0); buf.Canvas.LineTo(x,yKletki*yKarti); x:=x+xKletki; end;
while(y<=yKletki*yKarti) do begin buf.Canvas.MoveTo(0,y); buf.Canvas.LineTo(xKletki*xKarti,y); y:=y+yKletki; end; end;
Перед тем, как я покажу Вам как использовать эту процедуру у Вас в программе, я обьясню переменные, которые нужно будет вписывать в процедуру xKarti - ширина игровой карты в клеточках yKarti - высота игровой карты в клеточках xKletki - ширина клетки в пикселях yKletki - высота клетки в пикселях Buf - графический буфер (место для картинок), на который будет рисоваться видимая графическая область.
В нужном месте в программе мы можем вызывать нашу процедуру следующим образом: Setka(33,22,30,30, buf); Чтобы сетка постоянно рисовалась вставте вызов процедуры в таймер.
Затем для отображения нужно нарисовать графический буфер на чем-то, например: 1. Form1.Canvas.Draw(0,0,buf); 2. image1.Canvas.Draw(0,0,buf); 3. PaintBox1.Canvas.Draw(0,0,buf);
|