1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
program Ppong;
{$FRAME_WIDTH 1024}
{$FRAME_HEIGHT 600}
{$FRAME_RATE 180}
{$BACKGROUND $FFFFFF}
uses
Flash8;
type
TBalle=class(movieclip)
Procedure circle(Cx,Cy,Radius:number);
constructor create(parent:movieclip);
end;
Terrain=class(movieclip)
sizex,sizey,dx,dy:number;
rebondx,rebondy:boolean;
balle:TBalle;
procedure onEnterFrame;override;
constructor Create;
end;
const R=15;
constructor TBalle.Create(parent:movieclip);
begin
inherited create(parent,'balle',0);
beginfill($f0f0f0);
circle(0,0,R);
end;
constructor Terrain.Create;
begin
inherited create(nil,'',0);
sizex:=stage.width;
sizey:=stage.height;
beginfill(0);
lineto(stage.width,0);
lineto(stage.width,stage.height);
lineto(0,stage.height);
balle:=TBalle.create(self);
balle._x:=sizex/2;
balle._y:=sizey/2;
rebondx:=false;
rebondy:=false;
dx:=5;
dy:=5;
stage.displayState:='FullScreen';
end;
Procedure TBalle.circle(Cx,Cy,Radius:number);
var a,b,R: number;
begin
R:=Radius;
a:= R * 0.414213562;
b:= R * 0.707106781;
moveTo(Cx+R,Cy);
CurveTo(Cx+ R, Cy+-a, Cx+b,Cy -b);
CurveTo(Cx+ a,Cy-R,Cx,Cy -r);
CurveTo(Cx-a,Cy -R,Cx-b,Cy -b);
CurveTo(Cx-R, Cy-a,Cx-R,Cy);
CurveTo(Cx-R,Cy+a,Cx-b,Cy+b);
CurveTo(Cx-a,Cy +R,Cx,Cy+r);
CurveTo(Cx+a,Cy +R,Cx+b,Cy+b);
CurveTo(Cx+R,Cy+a,Cx+R,Cy);
end;
procedure Terrain.onEnterFrame;
begin
balle._x:=balle._x+dx;
balle._y:=balle._y+dy;
if (balle._x+R>stage.width) or (balle._x-R<0) then rebondx:=not rebondx;
if (balle._y+R>stage.height) or (balle._y-R<0) then rebondy:=not rebondy;
if rebondx then dx:=-abs(dx) else dx:=abs(dx);
if rebondy then dy:=-abs(dy) else dy:=abs(dy);
end;
begin
terrain.create;
end. |