home *** CD-ROM | disk | FTP | other *** search
- program draw;
- {$C-}
- var
- Ch: Char;
- Move: Char;
- X,Y: Integer;
- exit: boolean;
- screen: boolean;
- clear: Char;
-
- PROCEDURE get_char(X,Y:Integer); {get character to print}
-
- begin
- GotoXY(X,Y);
- read(Kbd,Ch);
- Write(Ch);
- end;
-
- PROCEDURE Help; {Help Menu}
- begin
- ClrScr;
- HighVideo;
- writeln(' HELP MENU');
- writeln;
- LowVideo;
- writeln('^ = Ctrl');
- writeln('Make sure NumLock is in effect.');
- writeln('Using Key Pad with arrows.');
- writeln('Cursor movement as follows:');
- writeln;
- writeln(' 7 9');
- writeln(' \ ^ /');
- writeln(' < - | - >');
- writeln(' / V \');
- writeln(' 1 3');
- writeln;
- writeln('^H This Help Menu | ^N New Output Character');
- writeln('^B Clear Current Picture | ^Q Quit Program ');
- writeln('^S Change screen: HighVideo or LowVideo ');
- writeln('^G Delete Character Under Cursor ');
- writeln('Letter within < > is default. ');
- writeln('Shift + PrtSc : make hardcopy of screen ');
- writeln;
- HighVideo;
- write('Any Key To Draw...');
- repeat until KeyPressed;
- ClrScr;
- end;
-
- begin
- X := 40; Y := 12; exit := false; screen := true;
- ClrScr;
- get_char(X,Y);
- repeat
- GotoXY(X,Y);
- if KeyPressed then
- repeat
- begin
- repeat
- Read(Kbd,Move);
- case Move of
- '8': begin
- Y := Y-1;
- GotoXY(X,Y);
- end;
- '2': begin
- Y := Y+1;
- GotoXY(X,Y);
- end;
- '4': begin
- X := X-1;
- GotoXY(X,Y);
- end;
- '6': begin
- X := X+1;
- GotoXY(X,Y);
- end;
- ^Q: begin
- repeat
- GotoXY(1,24);
- write('End draw program <Y>: ');
- read(Kbd,clear);
- until Upcase(clear) in ['Y','N',^M];
- if clear = ^M then clear := 'Y';
- if Upcase(clear) = 'Y' then
- begin
- ClrScr;
- exit := true;
- end
- else
- begin
- GotoXY(1,24);
- write(' ');
- GotoXY(X,Y);
- end;
- end;
- ^N: begin
- get_char(X,Y);
- end;
- ^B: begin
- repeat
- GotoXY(1,24);
- write('Clear current picture <Y>: ');
- read(Kbd,clear);
- until Upcase(clear) in ['Y','N',^M];
- if clear = ^M then clear := 'Y';
- if Upcase(clear) in ['Y'] then
- begin
- X := 40; Y := 12;
- ClrScr;
- GotoXY(X,Y);
- write(Ch);
- end
- else
- begin
- GotoXY(1,24);
- write(' ');
- end;
- end;
- ^H: begin
- repeat
- GotoXY(1,24);
- write('Help menu <Y>: ');
- read(Kbd,clear);
- until Upcase(clear) in ['Y','N',^M];
- if clear = ^M then clear := 'Y';
- if Upcase(clear) = 'Y' then
- begin
- Help;
- X := 40; Y := 12;
- GotoXY(X,Y);
- end
- else
- begin
- GotoXY(1,24);
- write(' ');
- GotoXY(X,Y);
- end;
- end;
- ^S: begin
- if screen = false then screen := true
- else screen := false;
- if screen = false then LowVideo
- else HighVideo;
- end;
- ^G: begin
- write(' ');
- GotoXY(X,Y);
- end;
- '9': begin
- if ((X<=78) and (Y>=2)) then begin
- if Y>2 then X := X+1;
- if X<=78 then Y := Y-1;
- GotoXY(X,Y);
- end;
- end;
- '1': begin
- if ((X>=2) and (Y<=23)) then begin
- if Y<23 then X := X-1;
- if X>=2 then Y := Y+1;
- GotoXY(X,Y);
- end;
- end;
- '7': begin
- if ((X>=2) and (Y>=2)) then begin
- if Y>2 then X := X-1;
- if X>=2 then Y := Y-1;
- GotoXY(X,Y);
- end;
- end;
- '3': begin
- if ((X<=78) and (Y<=23)) then begin
- if Y<23 then X := X+1;
- if X<=78 then Y := Y+1;
- GotoXY(X,Y);
- end;
- end;
- end;
- if Y<=2 then Y := 2;
- if Y>=23 then Y := 23;
- if X<=2 then X := 2;
- if X>=78 then X := 78;
- if move in ['1'..'4','6'..'9',^H,^S] then
- begin
- GotoXY(X,Y);
- write(Ch);
- end;
- GotoXY(X,Y);
- until move in ['8','2','4','6',^Q,^N,^B,^H,^S]
- end;
- until not KeyPressed;
- until (exit = true)
- end.