Paddle
Paddle
program Paddle;
uses types,quickDraw,events,miscTool;
var
pos: integer;
pos2: integer;
types: integer;
key: integer;
score: integer;
life: integer;
event: eventRecord;
r: rect;
mouse: point;
tick: longInt;
x: integer;
y: integer;
x2: integer;
y2: integer;
sx: integer;
sy: integer;
gameOver: boolean;
ball: rect;
{***Erase All***}
procedure eraseAll;
begin
setSolidPenPat(0);
setRect(r,pos,195,pos2,200);
paintRect(r);
setRect(r,x,y,x2,y2);
paintOval(r);
end;
{***Draw paddle***}
procedure drawPaddle;
begin
getMouse(mouse);
pos := mouse.h;
pos2 := pos+30;
if pos<0 then begin
pos := 0;
pos2 := 30;
end;
if pos2>320 then begin
pos := 290;
pos2 := 320;
end;
setSolidPenPat(15);
setRect(r,pos,195,pos2,200);
paintRect(r);
end;
{***Draw ball***}
procedure drawBall;
begin
setSolidPenPat(7);
setRect(ball,x,y,x2,y2);
paintOval(ball);
end;
{***Wait***}
procedure wait(time:longInt);
begin
repeat until getTick-tick>time;
tick := getTick;
end;
{***Check collision***}
procedure checkCollision;
begin
if(x>pos)and(x<pos2)and(y2>195)and(y<200)then begin
sy := -sy;
score := score+10;
sysBeep;
end
else
if y>220 then begin
life := life-1;
x := 160;
y := 100;
x2 := 165;
y2 := 105;
sysBeep;
end;
if(x<0)or(x2>320)then begin
sx := -sx;
sysBeep;
end;
if y<10 then begin
sy := -sy;
sysBeep;
end;
end;
{***Write numbers***}
procedure writeScore;
begin
moveTo(0,10);
writeln('lives:',life);
moveTo(80,10);
writeln('any key: stop');
moveTo(240,10);
writeln('score:',score);
end;
{***Setup***}
procedure setup;
begin
life := 2;
tick := getTick;
x := 160;
y := 100;
x2 := 165;
y2 := 105;
gameOver := false;
types := keyDownMask;
sx : =5;
sy := 5;
end;
begin
setup;
graphics(320);
hideCursor;
clearscreen(0);
setBackColor(0);
setForeColor(12);
moveTo(0,100);
repeat
wait(1);
eraseAll;
{***Move ball***}
x := x+sx;
y := y+sy;
x2 :=x2+sx;
y2 :=y2+sy;
{***Draw objects***}
drawPaddle;
drawBall;
writeScore;
if getNextEvent(keyDownMask, event) then
if event.what = keyDownEvt then halt;
checkCollision;
{***Game over!!!***}
if life=-1 then gameOver := true;
until gameOver;
setForeColor(7);
moveTo(120,100);
writeln('GAME OVER!');
repeat until button(0);
sysBeep;
end.
Ding Wen first graphical game!
This is modeled after the famous Pong, and it is designed and written completely by himself without external help.