1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
Program KeyboardExample2;
{$MODE objfpc}
Uses
ptc;
Var
console : TPTCConsole;
surface : TPTCSurface;
format : TPTCFormat;
color : TPTCColor;
timer : TPTCTimer;
key : TPTCKey;
area : TPTCArea;
x, y, delta : Real;
left, right, up, down : Boolean;
size : Integer;
Done : Boolean;
Begin
left := False;
right := False;
up := False;
down := False;
Try
Try
{ create key }
key := TPTCKey.Create;
{ create console }
console := TPTCConsole.Create;
{ enable key release events }
console.KeyReleaseEnabled := True;
{ create format }
format := TPTCFormat.Create(32, $00FF0000, $0000FF00, $000000FF);
{ open the console }
console.open('Keyboard example 2', format);
{ create timer }
timer := TPTCTimer.Create;
{ create surface matching console dimensions }
surface := TPTCSurface.Create(console.width, console.height, format);
{ setup cursor data }
x := surface.width Div 2;
y := surface.height Div 2;
size := surface.width Div 10;
color := TPTCColor.Create(1, 1, 1);
{ start timer }
timer.start;
{ main loop }
Done := False;
Repeat
{ check for key press/release }
While console.KeyPressed Do
Begin
console.ReadKey(key);
Case key.code Of
PTCKEY_LEFT : left := key.press;
PTCKEY_RIGHT : right := key.press;
PTCKEY_UP : up := key.press;
PTCKEY_DOWN : down := key.press;
PTCKEY_ESCAPE : Begin
Done := True;
Break;
End;
End;
End;
{ move square }
delta := timer.delta*100;
If left Then
x -= delta;
If right Then
x += delta;
If up Then
y -= delta;
If down Then
y += delta;
{ clear surface }
surface.clear;
{ setup cursor area }
area := TPTCArea.Create(Trunc(x) - size, Trunc(y) - size, Trunc(x) + size, Trunc(y) + size);
Try
{ draw cursor as a quad }
surface.clear(color, area);
Finally
area.Free;
End;
{ copy to console }
surface.copy(console);
{ update console }
console.update;
Until Done;
Finally
color.Free;
console.close;
console.Free;
surface.Free;
key.Free;
timer.Free;
format.Free;
End;
Except
On error : TPTCError Do
{ report error }
error.report;
End;
End.
|