Seqular, конечно. Только буду выводить частями, а то там многовато...))))
Вот первая часть: program Spraitik;
Uses Dos,Crt,bmpread{модуль для чтения из BMP-файла,там всего две процедуры.напишу позже},
pal{модуль для работы с 256-цветной палитрой тоже попозже напишу)))};
Const Xr = 20; Yr = 20;{размера спрайта в точках}
ProzrachColor = $FF;{прозрачный цвет(белый), чтобы не полностью выводить картинку}
Type
MasSpriteRazmer = array[0..Yr-1,0..Xr-1] of byte;
{массив равный по размеру спарайтовому}
SpriteType = record
x,y :word;{текущие координаты спрайта}
dx,dy :integer;{приращение координат}
Kartinka :^MasSpriteRazmer;{массив, куда будет записываться изображение}
ZadniiFonSpr:^MasSpriteRazmer;{массив для сохранения фона под спрайтом}
end;
EkranType = array[0..199,0..319] of byte ;{двумерный массив для экрана, как я уже писала я не использую модуль Graph}
Var
Sprite: SpriteType; {спрайт}
r : registers; {dдля вызова прерывания BIOS}
Ekran : ^EkranType; {экран}
p :array[0..767]of byte;{этот массив для работы с палитрой}
{********************ПРОЦЕДУРЫ*****************************}
Procedure SaveFonSprite;{Сохраняет фон под спрайтом в массиве}
var i,j:word;
begin
for j := 0 to Yr-1 do
for i := 0 to Xr-1 do
with Sprite do
ZadniiFonSpr^[j,i] := Ekran^[j+y,i+x];
end;
Procedure VosstFon; {восстанавливает фон под спрайтом}
var i,j:word;
begin
for j := 0 to Yr-1 do
for i := 0 to Xr-1 do
with Sprite do
Ekran^[j+y,i+x] := ZadniiFonSpr^[j,i];
end;
Procedure SozdatFon; {создает основной фон на экране}
var i,j:word;
begin
for j := 0 to 199 do
for i := 0 to 319 do
Ekran^[j,i] := lo(2);
end;
Procedure PutPixel(x,y:word; c:byte); {рисует точку на экране: c -цвет точки, х,у - координаты}
begin
mem[SegA000:x+y*320]:=c;{mem - массив для прямого доступа к видеопамяти}
end;
Кстати, точку(как я уже писала) можно выводить и через массив, который я создала для экрана:
Ekran^[x,y]:=lo(15){x,y - координаты точки, 15 - цвет}
Это только начало остальное чуть-чуть позже