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.