57 lines
1.1 KiB
Ada
57 lines
1.1 KiB
Ada
-- Compilation possible uniquement à l'INSA
|
|
with Tortue;
|
|
with Ada.Text_Io;
|
|
use Tortue;
|
|
use Ada.Text_Io;
|
|
|
|
procedure Koch is
|
|
|
|
-- Procedure récursive pour tracer des courbes
|
|
procedure Courbe (Finesse: Integer; Longueur : Integer) is
|
|
begin
|
|
if Finesse = 1 then
|
|
Avancer(Float(Longueur));
|
|
else
|
|
Courbe(Finesse - 1, Longueur / 4);
|
|
Tourner_Gauche (60.0);
|
|
Courbe(Finesse - 1, Longueur / 4);
|
|
Tourner_Droite(120.0);
|
|
Courbe(Finesse - 1, Longueur / 4);
|
|
Tourner_Gauche(60.0);
|
|
Courbe(Finesse - 1, Longueur / 4);
|
|
end if;
|
|
end Courbe;
|
|
|
|
|
|
-- Procédure pour tracer un flocon
|
|
procedure Flocon(Finesse: Integer; Longueur : Integer) is
|
|
begin
|
|
for I in 1..3 loop
|
|
Courbe(Finesse, Longueur);
|
|
Tourner_Droite(120.0);
|
|
end loop;
|
|
end Flocon;
|
|
|
|
|
|
-- Initialisation de tortue
|
|
procedure Init is
|
|
begin
|
|
Ouvrir_Fenetre;
|
|
Lever_Crayon;
|
|
Aller_A(300,400);
|
|
Tourner_Droite(90.0);
|
|
Baisser_Crayon;
|
|
end Init;
|
|
|
|
-- Procédure de test
|
|
procedure Test_Koch is
|
|
Pixel : Integer := 1000;
|
|
begin
|
|
Init;
|
|
Flocon(4, pixel);
|
|
end Test_Koch;
|
|
|
|
|
|
begin
|
|
Test_Koch;
|
|
end Koch;
|