with GAda.Text_IO ;
with Caracteres ;
procedure Mission2 is
package Txt renames GAda.Text_IO ;
package Car renames Caracteres ;
procedure Afficher_Trame (Trame : Car.T_Trame) is
begin
for Y in Trame'Range(1) loop
for X in Trame'Range(2) loop
case Trame(Y,X) is
when Car.Allume => Txt.Put("#") ;
when Car.Eteint => Txt.Put(" ") ;
end case ;
end loop ;
Txt.New_Line ;
end loop ;
end Afficher_Trame ;
procedure Tester_Afficher_Trame is
begin
Afficher_Trame(Car.Table(30).Trame) ;
Afficher_Trame(Car.Table(31).Trame) ;
Afficher_Trame(Car.Table(32).Trame) ;
end Tester_Afficher_Trame ;
function Trouver_Trame (Table : Car.T_Table ; Lettre : Character) return Car.T_Trame is
No_Case : Integer ;
Trouve : Boolean ;
begin
Trouve := False ;
No_Case := Table'First ;
while (not Trouve) and No_Case <= Table'Last loop
if Table(No_Case).Car = Lettre then
Trouve := True ;
else
No_Case := No_Case + 1 ;
end if ;
end loop ;
if not Trouve then No_Case := 9 ;
end if ;
return Table(No_Case).Trame ;
end Trouver_Trame ;
procedure Afficher_Mot(Table : Car.T_Table ; Mot : String) is
begin
for NoCase in Mot'Range loop
Afficher_Trame( Trouver_Trame( Table, Mot(NoCase) ) ) ;
end loop ;
end Afficher_Mot ;
function Inverser (Table : Car.T_Table) return Car.T_Table is
Resultat : Car.T_Table(Table'Range) ;
Modele : Car.T_Trame(1..Car.Hauteur_Car, 1..Car.Largeur_Car) ;
Pixel : Car.T_Pixel ;
begin
for NoCase in Table'Range loop
Resultat(NoCase).Car := Table(NoCase).Car ;
Modele := Table(NoCase).Trame ;
for Ligne in Modele'Range(1) loop
for Col in Modele'Range(2) loop
case Modele(Ligne, Col) is
when Car.Allume => Pixel := Car.Eteint ;
when Car.Eteint => Pixel := Car.Allume ;
end case ;
Resultat(NoCase).Trame(Ligne, Col) := Pixel ;
end loop ;
end loop ;
end loop ;
return Resultat ;
end Inverser ;
begin
Afficher_Mot(Car.Table, "Papageno") ;
Afficher_Mot(Inverser(Car.Table), "Papageno") ;
Afficher_Mot(Inverser(Inverser(Car.Table)), "Papageno") ;
end Mission2 ;