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
| {Free Pascal 2.6}
PROGRAM Labyrinthes ;
TYPE Labyrinthe=Array [1..10, 1..10] of Char ;
VAR Lab : Labyrinthe ;
PROCEDURE Generation ( var L : Labyrinthe ) ;
var
x, y : Byte ;
nbi : Byte ;// Nombre de briques intrieures
procedure MurExterieur ;
var x, y : Byte ;
begin
for x:=1 to 10 do
begin
L [x,1]:='*' ;
L [x,10]:='*' ;
end ;
for y:=1 to 10 do
begin
L [1,y]:='*' ;
L [10,y]:='*' ;
end ;
end ;
function nbac : Byte ; // Nombre de briques "autour" de la case (ayant un côté en commun)
var n : Byte ;
begin
n:=0 ;
if L[x,y+1]='*' then n:=n+1 ;
if L[x,y-1]='*' then n:=n+1 ;
if L[x+1,y]='*' then n:=n+1 ;
if L[x-1,y]='*' then n:=n+1 ;
nbac:=n ;
end ;
begin
MurExterieur ;
Randomize ;
nbi:=0 ;
repeat
x:=random(7)+2 ;
y:=random(7)+2 ;
if nbac < 2
then
begin
L[x,y]:='*' ;
nbi:=nbi+1 ;
end
else L[x,y]:=' ' ;
until nbi/64 > 20/100;
end ;
PROCEDURE Affichage ( L : Labyrinthe ) ;
var x, y : Byte ;
begin
for y:=1 to 10 do
begin
for x:=1 to 10 do
begin
write(L[x,y]) ;
end ;
writeln ;
end ;
end ;
BEGIN
Generation(Lab) ;
Affichage(Lab) ;
END. |
Partager