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
|
{ Programme Turbo Pascal
Grille pour le jeu Puissance-4
Exemple d'emploi du type OBJECT
}
program p4;
uses crt;
{$B-}
const
rouge = -1;
neant = 0;
jaune = 1;
type
tPion = rouge .. jaune;
tGrille = object
contenu: array [0..6, 0..5] of tPion;
trait: tPion; { à qui le tour }
procedure nouvelle;
procedure represente;
function ajoute(x: byte): boolean;
{ x est la colonne choisie, de 0 à 6 }
end;
procedure tGrille.nouvelle;
var x,y: byte;
begin
for x:=0 to 6 do
for y:=0 to 5 do
contenu[x,y]:=neant;
trait:=jaune;
end;
procedure tGrille.represente;
var x,y: byte;
begin
for y:=5 downto 0 do
begin
for x:=0 to 6 do
begin
write('[');
case contenu[x,y] of
rouge: textcolor(lightred);
neant: textcolor(black);
jaune: textcolor(yellow);
end;
write('*');
textcolor(lightgray);
write(']');
end;
writeln;
end;
writeln;
end;
function tGrille.ajoute(x: byte): boolean;
var y: byte;
begin
if contenu[x,5]<>neant then ajoute:=false else
{ Si la colonne x est pleine, la fonction renvoie la valeur "false".
Dans le cas contraire, le pion est ajouté, et la fonction renvoie
la valeur "true".
}
begin
y:=5;
ajoute:=true;
while ( y > 0 ) and ( contenu[x,y-1] = neant ) do dec(y);
{ Avec la directive de compilation $B+, cette ligne produirait
une erreur dans un certain cas. Quelle erreur, et quel cas ?
}
contenu[x,y]:=trait;
trait:= -1 * trait;
end;
end;
var
courante: tGrille;
begin
clrscr;
courante.nouvelle;
courante.represente;
courante.ajoute(3);
courante.represente;
courante.ajoute(4);
courante.represente;
readkey;
end. |
Partager