level 11
blazer♬
楼主
网上看到这样一个程序,不是很懂,请问能否解释一下。
请问mouse单元有哪些过程与函数,分别该怎样用?
Program Testmouser;
Uses
Crt,Mouse;
Type
TScreenButtons=Array[0..80,0..25] of Integer;
TButtonsActive=Array[1..32767] of Integer;
Var
A:TMouseEvent;
K:TScreenButtons;
O:TButtonsActive;
Procedure Setbuttons(X,Y:Integer;F:String;N:Integer);
Var
I,G:Integer;
Begin
G:=Length(F);
For I:=X to X+G-1 do
Begin
K[I+1,Y+1]:=N;
GotoXY(I+1,Y+1);
Write(F[I+1-X]);
End;
End;
Procedure ClearButtons(N:Integer);
Var
I,J:Integer;
Begin
For I:=1 to 80 do
For J:=1 to 25 do
If K[I,J]=N
Then
Begin
K[I,J]:=0;
GotoXY(I,J);
Write(' ');
End;
End;
Procedure Setbuttonactive(N,D:Integer);
Begin
O[N]:=D;
End;
Procedure Resetbuttons;
Begin
SetButtons(0,0,'<=== ===>',1);
SetButtons(0,1,'>> Exit <<',1);
SetButtons(0,2,'<=== ===>',1);
SetButtonActive(1,1);
SetButtons(0,4,'<=== ===>',2);
SetButtons(0,5,'>> ClSc <<',2);
SetButtons(0,6,'<=== ===>',2);
SetButtonActive(2,2);
SetButtons(0,8,'<=== ===>',3);
SetButtons(0,9,'>> Hide <<',3);
SetButtons(0,10,'<=== ===>',3);
SetButtonActive(3,3);
SetButtons(0,12,'<=== ===>',4);
SetButtons(0,13,'>> Recl <<',4);
SetButtons(0,14,'<=== ===>',4);
SetButtonActive(4,4);
End;
Procedure ProgressiveActive(N:Integer);
Var
I,J,D:Integer;
Begin
D:=O[N];
If D=1
Then
Halt;
If D=2
Then
For I:=1 to 80 do
For J:=1 to 25 do
If (K[I,J]=0) And (I*J<>2000)
Then
Begin
GotoXY(I,J);
Write(' ');
End;
If D=3
Then
Clearbuttons(N);
If D=4
Then
Begin
TextBackGround(Random(32));
TextColor(Random(32));
ProgressiveActive(9999);
ProgressiveActive(1000);
End;
If D=5
Then
Resetbuttons;
End;
Begin
Randomize;
Fillchar(K,Sizeof(K),0);
InitMouse;
CursorBig;
SetButtonActive(9999,2);
ProgressiveActive(9999);
SetButtonActive(1000,5);
ProgressiveActive(1000);
SetButtonActive(10000,4);
ProgressiveActive(10000);
Repeat
GetMouseEvent(A);
GotoXY(A.X+1,A.Y+1);
If K[A.X+1,A.Y+1]=0
Then
Begin
If A.Buttons=1
Then
Write('*');
If A.Buttons=2
Then
Write(' ');
End
Else
Begin
If A.Buttons=1
Then
ProgressiveActive(K[A.X+1,A.Y+1]);
If A.Buttons=2
Then
Clearbuttons(K[A.X+1,A.Y+1]);
End;
Until Keypressed;
Readln;
End.
2012年03月25日 07点03分
1
请问mouse单元有哪些过程与函数,分别该怎样用?
Program Testmouser;
Uses
Crt,Mouse;
Type
TScreenButtons=Array[0..80,0..25] of Integer;
TButtonsActive=Array[1..32767] of Integer;
Var
A:TMouseEvent;
K:TScreenButtons;
O:TButtonsActive;
Procedure Setbuttons(X,Y:Integer;F:String;N:Integer);
Var
I,G:Integer;
Begin
G:=Length(F);
For I:=X to X+G-1 do
Begin
K[I+1,Y+1]:=N;
GotoXY(I+1,Y+1);
Write(F[I+1-X]);
End;
End;
Procedure ClearButtons(N:Integer);
Var
I,J:Integer;
Begin
For I:=1 to 80 do
For J:=1 to 25 do
If K[I,J]=N
Then
Begin
K[I,J]:=0;
GotoXY(I,J);
Write(' ');
End;
End;
Procedure Setbuttonactive(N,D:Integer);
Begin
O[N]:=D;
End;
Procedure Resetbuttons;
Begin
SetButtons(0,0,'<=== ===>',1);
SetButtons(0,1,'>> Exit <<',1);
SetButtons(0,2,'<=== ===>',1);
SetButtonActive(1,1);
SetButtons(0,4,'<=== ===>',2);
SetButtons(0,5,'>> ClSc <<',2);
SetButtons(0,6,'<=== ===>',2);
SetButtonActive(2,2);
SetButtons(0,8,'<=== ===>',3);
SetButtons(0,9,'>> Hide <<',3);
SetButtons(0,10,'<=== ===>',3);
SetButtonActive(3,3);
SetButtons(0,12,'<=== ===>',4);
SetButtons(0,13,'>> Recl <<',4);
SetButtons(0,14,'<=== ===>',4);
SetButtonActive(4,4);
End;
Procedure ProgressiveActive(N:Integer);
Var
I,J,D:Integer;
Begin
D:=O[N];
If D=1
Then
Halt;
If D=2
Then
For I:=1 to 80 do
For J:=1 to 25 do
If (K[I,J]=0) And (I*J<>2000)
Then
Begin
GotoXY(I,J);
Write(' ');
End;
If D=3
Then
Clearbuttons(N);
If D=4
Then
Begin
TextBackGround(Random(32));
TextColor(Random(32));
ProgressiveActive(9999);
ProgressiveActive(1000);
End;
If D=5
Then
Resetbuttons;
End;
Begin
Randomize;
Fillchar(K,Sizeof(K),0);
InitMouse;
CursorBig;
SetButtonActive(9999,2);
ProgressiveActive(9999);
SetButtonActive(1000,5);
ProgressiveActive(1000);
SetButtonActive(10000,4);
ProgressiveActive(10000);
Repeat
GetMouseEvent(A);
GotoXY(A.X+1,A.Y+1);
If K[A.X+1,A.Y+1]=0
Then
Begin
If A.Buttons=1
Then
Write('*');
If A.Buttons=2
Then
Write(' ');
End
Else
Begin
If A.Buttons=1
Then
ProgressiveActive(K[A.X+1,A.Y+1]);
If A.Buttons=2
Then
Clearbuttons(K[A.X+1,A.Y+1]);
End;
Until Keypressed;
Readln;
End.