Bouncing Balls
Bouncing Balls
program Balls;
uses Common, QuickDrawII, EventMgr, MscToolSet;
type
Ball = Object
x, y, sx, sy: Integer;
procedure setup;
procedure move;
procedure draw(num: Integer);
end;
var
i: Integer;
tick: LongInt;
balls: Array[1..15] of Ball;
procedure Ball.setup;
begin
x := randomInteger mod 300 + 10;
y := randomInteger mod 180 + 10;
if random > 0 then
sx := randomInteger mod 2 + 1
else sx := -(randomInteger mod 2 + 1);
if random > 0 then
sy := randomInteger mod 2 + 1
else sy := -(randomInteger mod 2 + 1);
end;
procedure Ball.move;
begin
x := x + sx;
y := y + sy;
if (x < 0) or (x > 310) then
sx := -sx;
if (y < 0) or (y > 190) then
sy := -sy;
end;
procedure Ball.draw;
var
r: Rect;
begin
setRect(r, x, y, x + 5 + num, y + 5 + num);
setSolidPenPat(num);
paintOval(r);
setRect(r, x - 2, y - 2, x + 7 + num, y + 7 + num);
setSolidPenPat(black);
frameOval(r);
end;
begin
startDesk(320);
clearScreen(black);
hideCursor;
tick := getTick;
setPenSize(3, 3);
{ Setup balls }
for i := 1 to 15 do begin
new(balls[i]);
balls[i].setup;
end;
{ Move balls }
repeat
for i := 1 to 15 do begin
balls[i].draw(i);
balls[i].move;
end;
repeat until getTick > tick;
tick := tick + 1;
until button(0);
{ Remove balls }
for i := 1 to 15 do
dispose(balls[i]);
endDesk;
end.
Many bouncing balls.
This is the Orca/Pascal version, written using Object Pascal to demonstrate object oriented programming.