Пример простейшей программы рисования спрайтов:
uses dos,crt; {$I HUMAN.INC} type sr=array[1..10,1..10] of byte; var mas:sr; i,j,n,k:integer; r:registers; procedure pixel(x,y,c:integer); begin mem[$a000:(y shl 8 + y shl 6 + x)]:=c; end; procedure spr(spri:sr); begin for i:=1 to 10 do for j:=1 to 10 do begin if spri[i,j]=1 then pixel(i,j,15) else pixel(i,j,0); end; end; procedure initgrp; assembler; asm mov ax,13h int 10h end; begin initgrp; n:=400; k:=1; repeat for i:=1 to 10 do for j:=1 to 10 do begin if dv1[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv2[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv3[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv4[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv5[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv6[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; for i:=1 to 10 do for j:=1 to 10 do begin if dv7[j,i]=1 then pixel(i+k,j,15) else pixel(i+k,j,0); end; delay(n); k:=k+1; if k=320 then k:=1; until keypressed; end. const dv1 : array[1..10,1..10] of byte = ( (0,0,0,0,0,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0)); dv2 : array[1..10,1..10] of byte = ( (0,0,0,0,0,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,1,1,1,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,1,1,1,0,0,0,0)); dv3 : array[1..10,1..10] of byte = ( (0,0,0,0,0,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,1,1,1,0,0,0,0), (0,0,1,0,1,0,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,1,0,1,0,0,0,0), (0,0,1,0,0,1,1,0,0,0), (0,0,0,1,1,1,0,0,0,0)); dv4 : array[1..10,1..10] of byte = ( (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,1,1,1,0,1,0,0,0), (0,0,1,0,1,1,0,0,0,0), (0,0,1,0,1,1,0,0,0,0), (0,0,0,1,0,1,0,0,0,0), (0,0,1,0,0,1,0,0,0,0), (0,1,0,0,0,1,1,0,0,0), (0,0,1,0,0,0,0,0,0,0)); dv5 : array[1..10,1..10] of byte = ( (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,1,1,1,0,0,0,0,0), (0,0,1,0,1,1,1,0,0,0), (0,0,0,1,1,1,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,1,1,1,1,1,0,0,0,0), (0,1,0,0,0,1,0,0,0,0), (0,0,0,0,0,1,1,0,0,0)); dv6 : array[1..10,1..10] of byte = ( (0,0,0,0,0,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,1,1,1,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,1,1,1,1,0,0,0,0), (0,0,1,0,1,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0)); dv7 : array[1..10,1..10] of byte = ( (0,0,0,0,0,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,0,1,0,0,0,0,0), (0,0,0,0,1,1,0,0,0,0), (0,0,0,1,1,0,0,0,0,0), (0,0,0,1,1,1,0,0,0,0));
