{============================================== ====================}
Procedure DrawScreen;
Var
x, y: Integer;
s: String [80];
tmp: String [6];
begin
Bar (Base2, 0,0,319,9,8);
FillBase (Base2, 3200,9600, $ 03030303);
for y: = 0 to 15 do
for x: = 0 to 31 do
DrawOSpr (Base2, x * 10,40 + y * 10, BrickHgt, BrickWdt, @ BrickSpr);
s: = 'ю ~ SIEGE ~ ю Level:';
Str (Level, tmp);
While Byte (tmp [0]) <2 do tmp: = 'ь' + tmp;
s: = s + tmp + 'ю Score:';
Str (Score, tmp);
While Byte (tmp [0]) <5 do tmp: = 'ь' + tmp;
s: = s + tmp + 'ю';
DrawString (Base2, 1,1, s);
end;
{============================================== ====================}
Procedure DrawMan;
begin
if StoneY = 0 then
begin
DrawTSpr (Base2, ManX * 8,20, ManHgt, ManWdt, @ ManSpr [2]);
DrawTSpr (Base2, ManX * 8 +4,17, StoneHgt, StoneWdt, @ StoneSpr);
end else
begin
DrawTSpr (Base2, ManX * 8,20, ManHgt, ManWdt, @ ManSpr [1]);
DrawTSpr (Base2, StoneX, StoneY, StoneHgt, StoneWdt, @ StoneSpr);
Inc (StoneY, 10);
if StoneY> 199 then
begin
StoneY: = 0;
if Combo <7 then ComboString (ComboStr [Combo]) else ComboString ('Kiiler!');
Combo: = 0;
end;
end;
end;
{============================================== ====================}
Procedure CheckCollisions;
Var
i: Byte;
begin
if StoneY> 0 then
for i: = 1 to MaxEnemies do
With Enemies [i] do
if not Free and not Falling then
begin
if ((StoneX +8> X) and (StoneX
((StoneY +8> Y) and (StoneY
begin
Falling: = true;
D: = 0;
Inc (Score);
Inc (Kills);
Inc (Combo);
end;
end;
end;
{============================================== ====================}
Procedure NextLevel;
Var
i: Byte;
begin
Timer: = MemL [Seg0040: $ 006C];
Inc (Level);
for i: = 1 to 30 do
begin
ClearBase (Base2);
DrawScreen;
DrawTSpr (Base2, ManX * 8,20, ManHgt, ManWdt, @ ManSpr [1 + Byte (i and 1 = 1)]);
DrawString (Base2, 132,80, 'Level' + Char ($ 30 + Level));
WaitRetraceMode;
CopyBase (Base2, Base1);
While Timer = MemL [Seg0040: $ 006C] do;
Timer: = MemL [Seg0040: $ 006C];
end;
EnemyLimit: = (1 + Level) * 20;
EnemyDelay: = 0;
Kills: = 0;
ca: = 0;
end;
Procedure GameOverProc;
Var
i: Byte;
begin
ClearBase (Base2)...