12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- program example2;
- uses video,keyboard;
- {$ifndef cpu86}
- {$error This example only works on intel 80x86 machines}
- {$endif}
- Var
- P,PP,D : Integer;
- K: TKeyEvent;
-
- Procedure PutSquare (P : INteger; C : Char);
-
- begin
- VideoBuf^[P]:=Ord(C)+($07 shl 8);
- VideoBuf^[P+ScreenWidth]:=Ord(c)+($07 shl 8);
- VideoBuf^[P+1]:=Ord(c)+($07 shl 8);
- VideoBuf^[P+ScreenWidth+1]:=Ord(c)+($07 shl 8);
- end;
- begin
- InitVideo;
- InitKeyBoard;
- P:=0;
- PP:=-1;
- Repeat
- If PP<>-1 then
- PutSquare(PP,' ');
- PutSquare(P,'#');
- SetCursorPos(P Mod ScreenWidth,P div ScreenWidth);
- UpdateScreen(False);
- PP:=P;
- Repeat
- D:=0;
- K:=TranslateKeyEvent(GetKeyEvent);
- Case GetKeyEventCode(K) of
- kbdLeft : If (P Mod ScreenWidth)<>0 then
- D:=-1;
- kbdUp : If P>=ScreenWidth then
- D:=-ScreenWidth;
- kbdRight : If ((P+2) Mod ScreenWidth)<>0 then
- D:=1;
- kbdDown : if (P<(VideoBufSize div 2)-(ScreenWidth*2)) then
- D:=ScreenWidth;
- end;
- Until (D<>0) or (GetKeyEventChar(K)='q');
- P:=P+D;
- until GetKeyEventChar(K)='q';
- DoneKeyBoard;
- DoneVideo;
- end.
|