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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| (*----------------------------------------------------------------------------*)
{$FRAME_WIDTH 125}
{$FRAME_HEIGHT 110}
{$BACKGROUND $CCCCCC}
(*----------------------------------------------------------------------------*)
program Exercice;
(*----------------------------------------------------------------------------*)
uses Flash8;
(*----------------------------------------------------------------------------*)
type
TCell = class(MovieClip)
State: integer;
cx,cy: integer;
constructor Create(Name: string; x, y: integer);
procedure doRelease;
procedure Carreau;
procedure Reset;
procedure IsUp(NewState: integer);
end;
(*----------------------------------------------------------------------------*)
var
Cells: array[0..6, 0..5] of TCell;
x, y: integer;
s: string;
(*----------------------------------------------------------------------------*)
procedure NewGame;
var
x, y: integer;
begin
for x := 0 to 6 do for y := 0 to 5 do Cells[x, y].Reset;
end;
(*----------------------------------------------------------------------------*)
constructor TCell.Create(Name: string; x, y: integer);
begin
inherited Create ( nil, Name, x + 7 * y );
cx := x;
cy := y;
_x := x * 15 + 7 + 10;
_y := y * 15 + 7 + 10;
onRelease := doRelease;
end;
(*----------------------------------------------------------------------------*)
procedure TCell.doRelease;
begin
case State of
0: IsUp(1);
1: IsUp(0);
end;
end;
(*----------------------------------------------------------------------------*)
procedure TCell.Carreau;
begin
lineStyle(0, $999999);
moveTo(- 4, - 4);
case State of
0: beginFill($000000);
1: beginFill($FFFFFF);
end;
lineTo(- 4, + 4);
lineTo(+ 4, + 4);
lineTo(+ 4, - 4);
lineTo(- 4, - 4);
end;
(*----------------------------------------------------------------------------*)
procedure TCell.Reset;
begin
IsUp(1);
end;
(*----------------------------------------------------------------------------*)
procedure TCell.IsUp(NewState: integer);
begin
State := NewState;
clear;
moveTo(-7, +7);
beginFill($FFFFFF);
lineStyle(1, $888888);
lineTo(-7, -7);
lineTo(+7, -7);
lineStyle(1, $AAAAAA);
lineTo(+7, +7);
lineTo(-7, +7);
endFill;
Carreau;
end;
(*----------------------------------------------------------------------------*)
begin
for x := 0 to 6 do
for y := 0 to 5 do
begin
s := 'cell_' + IntToStr(x) + '_' + IntToStr(y);
Cells[x,y] := TCell.Create(s, x, y);
end;
NewGame;
end.
(*----------------------------------------------------------------------------*) |
Partager