Код:
program TestZXPas;
{$APPTYPE CONSOLE} // Эта директива для работы команд ввода/вывода.
uses
windows, ZXPas in 'ZXPas.pas';
var
x,y:word;
k1,k2:byte;
GG1 :array[0..240]of byte = (24,
0,2, 15, 7, 3, 3, 7, 29,246,155,
0,3, 252,254,255,234,255,245,255,255,
0,4, 0, 0, 0, 0, 0,128,128,128,
1,1, 3, 7, 6, 14, 15, 31, 63, 63,
1,2, 237,119,183,191,127,237,246,123,
1,3, 227,240,248,248,252,252,254, 95,
1,4, 128, 0, 0, 0, 0, 0, 0, 0,
2,1, 127,126,124, 63, 63, 31, 15, 7,
2,2, 104,223,254,253, 94,255,245,239,
2,3, 1,255, 71,255,127,234,103,243,
2,4, 12,255,255,170,255,224,224,128,
2,5, 64,240,240,188,224, 64, 56, 0,
3,1, 3, 0, 0, 0, 0, 1, 1, 1,
3,2, 31,255,255,255,255,252,252,252,
3,3, 248,252,254,255,255,255,127, 31,
3,4, 0, 0, 0, 0,128,192,224,240,
4,1, 1, 1, 3, 7, 14, 29, 51,103,
4,2, 120,184,112,240,240,224,192,128,
4,3, 15, 3, 1, 1, 0, 0, 0, 0,
4,4, 184, 88,176,248,184,184,216, 92,
5,0, 0, 0, 0, 1, 1, 1, 1, 1,
5,1, 206,220,248,240,112,248,254,127,
5,4, 108, 44, 60, 60, 46,127,127,103,
5,5, 0, 0, 0, 0, 0,128,224,240);
ball1:array[0..40]of byte = (4,
0,0, 3, 15, 31, 51,103,111,255, 0,
0,1, 224,248,252,254,255,255,255, 0,
1,0, 255,111,103, 51, 19, 15, 7, 0,
1,1, 255,255,254,254,252,248,240, 0);
mapspr:array[0..41*5-1]of byte = (
4, // Стена
0,0, 0, 0, 0, 0, 0, 0, 0, 0,
0,1, 0, 0, 0, 0, 0, 0, 0, 0,
1,0, 0, 0, 0, 0, 0, 0, 0, 0,
1,1, 0, 0, 0, 0, 0, 0, 0, 0,
4, // Кирпич
0,0, 85, 1, 1,255, 85, 16, 16,255,
0,1, 85, 1, 1,255, 85, 16, 16,255,
1,0, 85, 1, 1,255, 85, 16, 16,255,
1,1, 85, 1, 1,255, 85, 16, 16,255,
4, // Основание колонны
0,0, 36, 36, 36, 36, 36, 36, 36, 36,
0,1, 36, 36, 36, 36, 36, 36, 36, 36,
1,0, 36, 36, 36, 36, 72,136,136,255,
1,1, 36, 36, 36, 36, 18, 17, 17,255,
4, // Середина колонны
0,0, 36, 36, 36, 36, 36, 36, 36, 36,
0,1, 36, 36, 36, 36, 36, 36, 36, 36,
1,0, 36, 36, 36, 36, 36, 36, 36, 36,
1,1, 36, 36, 36, 36, 36, 36, 36, 36,
4, // Верхушка колонны
0,0, 127,144,136, 72, 36, 36, 36, 36,
0,1, 254, 9, 17, 18, 36, 36, 36, 36,
1,0, 36, 36, 36, 36, 36, 36, 36, 36,
1,1, 36, 36, 36, 36, 36, 36, 36, 36);
map:array[0..15,0..11]of byte = (
(4,3,3,3,3,3,3,3,3,3,2,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(0,0,0,0,0,0,0,0,0,0,0,1),
(4,3,3,3,3,3,3,3,3,3,2,1));
dig0:array[0..10]of byte = (1, 0,0, 0, 28, 34, 42, 42, 34, 28, 0);
dig1:array[0..10]of byte = (1, 0,0, 0, 24, 56, 24, 24, 24, 60, 0);
dig2:array[0..10]of byte = (1, 0,0, 0, 60, 66, 2, 28, 32,126, 0);
begin
// Инициализация модуля ZXPas. Флаги соответствуют галкам компилятора.
ZXPas.init(true,true,false,true,true,true,true,true);
// Далее можно писать программу для ZX Like Pascal
border(0);
textbackground(0);
textcolor(7);
clrscr;
VirtScreenClear;
MapSet(map[0,0],mapspr,0,0,32,24);
x:=4;
y:=1;
repeat
VirtScreenClear;
MapPut(0,0);
SpritePutClear(ball1,10,x);
SpritePutClear(GG1,x,16);
SpritePutClear(ball1,12,2);
ReadKey(k1,k2);
if (k1=49) or (k2=49) then SpritePutClear(dig1,4,4) else SpritePutClear(dig0,4,4);
if (k1=50) or (k2=50) then SpritePutClear(dig2,6,4) else SpritePutClear(dig0,6,4);
VirtScreenPut;
Delay(1);
x:=x+y;
if (x>19) or (x<4) then y:=-y;
until (k1=48) or (k2=48) or (k1=32) or (k2=32);
ZXPas.Deinit;
end.