program game2; uses xxl,graph,crt,dos; var s:sam; begin s.makesv; s.engine; closegraph; end.
Модуль:
unit xxl; interface uses crt,dos,graph; type sam=object private path:pointer; size:word; d,r,k,x1,y1,x2,y2,l,ll,i,cvet,dx,dy:integer; x01,x02,y01,y02:integer; public constructor makesv; procedure engine; end; implementation constructor sam.makesv; begin d:=Detect; initgraph(d,r,''); k:=graphresult; if k<>grok then writeln(GraphErrorMsg(k)) ELSE begin x1:=getmaxx div 2; y1:=getmaxy div 2; ellipse(x1,y1,180,360,60,15); ellipse(x1,y1,0,40,60,10); ellipse(x1,y1,50,180,60,15); ellipse(x1+3,y1,28,48,50,15); line(x1+30,y1-8,x1+45,y1-6); line(x1+28,y1-12,x1+30,y1-8); ellipse(x1,y1,0,180,20,3); line(x1+20,y1,x1-2,y1+25); line(x1-20,y1,x1-30,y1+25); line(x1-2,y1+25,x1-30,y1+25); floodfill(x1,y1+1,white); floodfill(x1,y1+20,white); setfillstyle(5,lightblue); floodfill(x1+35,y1-9,white); line(x1-55,y1-6,x1-58,y1-20); line(x1-58,y1-20,x1-50,y1-23); line(x1-50,y1-23,x1-43,y1-12); setfillstyle(4,lightred); floodfill(x1-55,y1-20,white); setfillstyle(5,white); floodfill(x1-22,y1,white); size:=imagesize(x1-61,y1-24,x1+61,y1+26); getmem(path,size); getimage(x1-61,y1-24,x1+61,y1+26,path^); putimage(x1-61,y1-24,path^,xorput); end; end; procedure sam.engine; begin x2:=1; y2:=240; dx:=5; dy:=3; putimage(x2,y2,path^,xorput); repeat putimage(x2,y2,path^,xorput); if (x2+122)>=getmaxx then x2:=1; if keypressed then case readkey of #77:begin x2:=x2+dx; if (x2+51)>=getmaxx then x2:=x2-2*dx; end; #75:begin x2:=x2-dx; if x2<=0 then x2:=1; end; #80:begin y2:=y2+dy; if (y2+51)>=getmaxy then y2:=y2-2*dy; end; #72:begin y2:=y2-dy; if y2<=0 then y2:=1; end; end; putimage(x2,y2,path^,xorput); until readkey=#27 end; end.