unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Spin, ExtDlgs; type TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; OpenDialog1: TOpenDialog; Button1: TButton; Button2: TButton; Label1: TLabel; Memo1: TMemo; SpinEdit1: TSpinEdit; Label2: TLabel; SavePictureDialog1: TSavePictureDialog; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Label1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Smer:integer; Kresli:boolean; Xpos,Ypos:integer; tahu,hodnota:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if opendialog1.Execute then edit1.Text:=opendialog1.FileName; memo1.Lines.LoadFromFile(opendialog1.FileName); end; procedure TForm1.Button2Click(Sender: TObject); var F:textfile; prikaz,zavorka:string; radek:string; znak:char; I:integer; begin image1.Canvas.MoveTo(350,350); if spinedit1.Value=0 then begin tahu:=2000000000;end else tahu:=spinedit1.Value; Smer:=1; I:=1; Xpos:=350; Ypos:=350; Kresli:=false; assignfile(F,edit1.text); //načíst soubor reset(F); while not eof(F) do begin //zkoumej if tahu>0 then begin readln(F,radek); znak:=radek[I]; prikaz:=prikaz+znak; inc(I); while znak<>'(' do begin //přečti příkaz if (znak<>'(')and(ord(znak)>=97)and(ord(znak)<=122) then begin znak:=radek[I]; if (znak<>'(')and(znak<>' ') then begin prikaz:=prikaz+znak; inc(I); end; end; end; inc(I); znak:=radek[I]; label1.Caption:=prikaz; while znak<>')'do begin //přečti hodnotu if znak='-'then begin zavorka:=zavorka+znak; inc(I); znak:=radek[I]; end else begin if(ord(znak)>=48)and(ord(znak)<=57) then begin znak:=radek[I]; if (znak<>')')and(znak<>' ')then begin zavorka:=zavorka+znak; inc(I); end; end else begin inc(I); znak:=radek[I]; end; end; end; I:=1; try hodnota:=StrToInt(zavorka); finally if prikaz='left' then begin Smer:=Smer-(hodnota div 45); if smer<1 then Smer:=Smer+4; prikaz:=''; zavorka:=''; end; if prikaz='right' then begin Smer:=Smer+(hodnota div 45); if smer>4 then Smer:=Smer-4; prikaz:=''; zavorka:=''; end; if prikaz='forward' then begin Label1DblClick(NIL); dec(tahu); prikaz:=''; zavorka:=''; end; if prikaz='pen' then begin if hodnota<=0 then begin Kresli:=false; prikaz:=''; zavorka:=''; end else begin Kresli:=true; image1.Canvas.Pen.Width:=hodnota; prikaz:=''; zavorka:=''; end; end; end; end; end; Closefile(F); end; procedure TForm1.Label1DblClick(Sender: TObject); begin case smer of 1:Ypos:=Ypos-hodnota; 2:Xpos:=Xpos+hodnota; 3:Ypos:=Ypos+hodnota; 4:Xpos:=Xpos-hodnota; end; if Kresli=false then begin image1.Canvas.MoveTo(Xpos,Ypos); end else begin image1.Canvas.LineTo(Xpos,Ypos); end; end; end.