Advertisement
Guest User

Fast Destruction

a guest
Mar 24th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 117.69 KB | None | 0 0
  1. program Fast_Destruction;
  2.  
  3. uses
  4.   sysutils;
  5.  
  6. var
  7.   Environnement: String;
  8.   Utilisateur_Connexion: Boolean;
  9.   Etat_Connexion: String;
  10.   Fichier_Utilisateur: TextFile;
  11.   Contenu_Fichier_Utilisateur: String;
  12.   Nom_Utilisateur, Mot_de_passe : String;
  13.   Nouvelle_Partie: Boolean;
  14.   Choix_Mode_Jeu: String;
  15.   Partie_Nombre_Bateaux: Integer;
  16.   Nombre_Bateaux_Depart: Integer;
  17.   Nombre_Bateaux: Integer;
  18.   Bateaux: Array[1..2] of Integer;
  19.   Cases_Bateaux: Array[1..2,1..10] of Integer;
  20.   Plateau: Array[1..2,1..12,1..12] of Boolean;
  21.   Bateau: Array[1..2,1..10,1..12,1..12] of Boolean;
  22.   Position_X, Position_Y, Orientation, Position_X_E, Position_Y_E, Orientation_E: Integer;
  23.   Placement_Valide, Position_Valide: Boolean;
  24.   Partie_Actuelle_Finie: Boolean;
  25.   Tour_Frappe: Integer;
  26.   Frappe_X, Frappe_Y: Integer;
  27.   Bateau_Coule: Boolean;
  28.   Case_Joueur_Touchee: Boolean;
  29.   IA_Frappe_X, IA_Frappe_Y, IA_Orientation: Integer;
  30.   IA_Ancienne_Frappe_X, IA_Ancienne_Frappe_Y: Integer;
  31.   IA_Orientations: Array[1..4] of Boolean;
  32.   IA_ID_Bateau_Touche: Integer;
  33.   IA_Orientation_Juste: Integer;
  34.   IA_Nombre_Frappes: Integer;
  35.   IA_Tour_Fini: Boolean;
  36.   IA_Frappes: Array[1..12,1..12] of Boolean;
  37.   Joueur_Frappes: Array[1..12,1..12] of Boolean;
  38.   Texte_Case_Placement: Array[1..2,1..12,1..12] of String;
  39.   a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, s, t, y, z: Integer;
  40.  
  41. begin
  42.  
  43.  Randomize;
  44.  
  45.  WriteLn('           ______        _     _____            _                   _   _');
  46.  WriteLn('          |  ____|      | |   |  __ \          | |                 | | (_)');
  47.  WriteLn('          | |__ __ _ ___| |_  | |  | | ___  ___| |_ _ __ _   _  ___| |_ _  ___  _ __');
  48.  WriteLn('          |  __/ _` / __| __| | |  | |/ _ \/ __| __| ''__| | | |/ __| __| |/ _ \| ''_ \');
  49.  WriteLn('          | | | (_| \__ \ |_  | |__| |  __/\__ \ |_| |  | |_| | (__| |_| | (_) | | | |');
  50.  WriteLn('          |_|  \__,_|___/\__| |_____/ \___||___/\__|_|   \__,_|\___|\__|_|\___/|_| |_|');
  51.  WriteLn('');
  52.  WriteLn('                              Par Samuel CLAUZON et Joel MAYAYA NZAL');
  53.  WriteLn('');
  54.  WriteLn('                              Par Samuel CLAUZON et Joel MAYAYA NZAL');
  55.  WriteLn('                        Licence MIASHS - Semestre 2 - Projet d''algorithmie');
  56.  WriteLn('');
  57.  
  58.  WriteLn('    ________________________________________________________________________________________________________________');
  59.  WriteLn('   |                    Fast Destruction est une replique du jeu classique de bataille navale.                      |');
  60.  WriteLn('   |           Dans ce jeu, vous affronterez un ordinateur auquel vous essaierez de couler les navires.             |');
  61.  WriteLn('   | Soyez strategique dans le placement de vos navires et dans les frappes que vous ferez ; chaque geste compte... |');
  62.  WriteLn('    ----------------------------------------------------------------------------------------------------------------');
  63.  
  64.  Environnement := 'Test';
  65.  
  66.  Utilisateur_Connexion := false;
  67.  
  68.  While(Utilisateur_Connexion <> true) do
  69.    begin
  70.      WriteLn('');
  71.      WriteLn('           _______________________________________');
  72.      WriteLn('          |                                       |');
  73.      WriteLn('          |             A: Connexion              |');
  74.      WriteLn('          |            B: Inscription             |');
  75.      WriteLn('          |                                       |');
  76.      WriteLn('           ---------------------------------------');
  77.      WriteLn('');
  78.      ReadLn(Etat_Connexion);
  79.      case Etat_Connexion of
  80.        'A', 'a':
  81.          begin
  82.            WriteLn('');
  83.            WriteLn('Nom d''utilisateur :');
  84.            ReadLn(Nom_Utilisateur);
  85.            If(FileExists('utilisateurs/'+Nom_Utilisateur+'.txt')) then
  86.              begin
  87.                WriteLn('');
  88.                WriteLn('Mot de passe :');
  89.                ReadLn(Mot_de_passe);
  90.                Assign(Fichier_Utilisateur, 'utilisateurs/'+Nom_Utilisateur+'.txt');
  91.                Reset(Fichier_Utilisateur);
  92.                ReadLn(Fichier_Utilisateur, Contenu_Fichier_Utilisateur);
  93.                If(Mot_de_passe = Contenu_Fichier_Utilisateur) then
  94.                  begin
  95.                    Utilisateur_Connexion := true;
  96.                    WriteLn('Connexion reussie. Bonjour, ', Nom_Utilisateur, ' !');
  97.                    WriteLn('');
  98.                  end
  99.                Else
  100.                  begin
  101.                    WriteLn('Nom d''utilisateur ou mot de passe incorrect.');
  102.                    WriteLn('');
  103.                  end;
  104.                CloseFile(Fichier_Utilisateur);
  105.              end
  106.            Else
  107.              begin
  108.                WriteLn('Cet utilisateur n''existe pas !');
  109.                WriteLn('');
  110.              end;
  111.          end;
  112.        'B', 'b':
  113.          begin
  114.            WriteLn('');
  115.            WriteLn('Nom d''utilisateur :');
  116.            ReadLn(Nom_Utilisateur);
  117.            If(FileExists('utilisateurs/'+Nom_Utilisateur+'.txt')) then
  118.              begin
  119.                WriteLn('Cet utilisateur existe deja !');
  120.                WriteLn('');
  121.              end
  122.            Else
  123.              begin
  124.                WriteLn('');
  125.                WriteLn('Mot de passe :');
  126.                ReadLn(Mot_de_passe);
  127.                AssignFile(Fichier_Utilisateur, 'utilisateurs/'+Nom_Utilisateur+'.txt');
  128.                Rewrite(Fichier_Utilisateur);
  129.                WriteLn(Fichier_Utilisateur, Mot_de_passe);
  130.                CloseFile(Fichier_Utilisateur);
  131.                WriteLn('Votre compte a ete cree avec succes. Connectez-vous.');
  132.              end;
  133.          end;
  134.        Else
  135.          begin
  136.            WriteLn('Veuillez saisir une valeur valide !');
  137.            WriteLn('');
  138.          end;
  139.      end;
  140.    end;
  141.  
  142.  Nouvelle_Partie := true;
  143.  
  144.  While(Nouvelle_Partie = true) do
  145.    begin
  146.      WriteLn('');
  147.      WriteLn('           _______________________________________');
  148.      WriteLn('          |                                       |');
  149.      WriteLn('          |              Mode de jeu              |');
  150.      WriteLn('          |              A: Local (IA)            |');
  151.      WriteLn('          |              B: En ligne              |');
  152.      WriteLn('          |                                       |');
  153.      WriteLn('           ---------------------------------------');
  154.      WriteLn('');
  155.      ReadLn(Choix_Mode_Jeu);
  156.  
  157.      While((upCase(Choix_Mode_Jeu) <> 'A') and (upCase(Choix_Mode_Jeu) <> 'B')) do
  158.        begin
  159.          WriteLn('');
  160.          WriteLn('           _______________________________________');
  161.          WriteLn('          |                                       |');
  162.          WriteLn('          |              Mode de jeu              |');
  163.          WriteLn('          |              A: Local (IA)            |');
  164.          WriteLn('          |              B: En ligne              |');
  165.          WriteLn('          |                                       |');
  166.          WriteLn('           ---------------------------------------');
  167.          WriteLn('');
  168.          ReadLn(Choix_Mode_Jeu);
  169.        end;
  170.  
  171.      case Choix_Mode_Jeu of
  172.        'A', 'a':
  173.          begin
  174.            WriteLn('');
  175.            WriteLn('Combien de bateaux souhaitez-vous mettre en jeu ? (Compris entre 2 et 10)');
  176.            ReadLn(Partie_Nombre_Bateaux);
  177.            While((Partie_Nombre_Bateaux < 2) and (Partie_Nombre_Bateaux > 10)) do
  178.              begin
  179.                WriteLn('Combien de bateaux souhaitez-vous mettre en jeu ? (Compris entre 2 et 10)');
  180.                ReadLn(Partie_Nombre_Bateaux);
  181.              end;
  182.            Nombre_Bateaux_Depart := Partie_Nombre_Bateaux;
  183.            Nombre_Bateaux := Partie_Nombre_Bateaux;
  184.            If((Partie_Nombre_Bateaux > 1) and (Partie_Nombre_Bateaux <= 10)) then
  185.              begin
  186.                WriteLn('');
  187.                WriteLn('Vous allez maintenant proceder au positionnement de vos bateaux.');
  188.                WriteLn('Voici le plan de l''ocean: 12 cases sur 12 cases.');
  189.                WriteLn('');
  190.                WriteLn('         1     2     3     4     5     6     7     8     9    10    11    12');
  191.                WriteLn('       _______________________________________________________________________');
  192.                WriteLn('  1   |     |     |     |     |     |     |     |     |     |     |     |     |');
  193.                WriteLn('       -----------------------------------------------------------------------');
  194.                WriteLn('  2   |     |     |     |     |     |     |     |     |     |     |     |     |');
  195.                WriteLn('       -----------------------------------------------------------------------');
  196.                WriteLn('  3   |     |     |     |     |     |     |     |     |     |     |     |     |');
  197.                WriteLn('       -----------------------------------------------------------------------');
  198.                WriteLn('  4   |     |     |     |     |     |     |     |     |     |     |     |     |');
  199.                WriteLn('       -----------------------------------------------------------------------');
  200.                WriteLn('  5   |     |     |     |     |     |     |     |     |     |     |     |     |');
  201.                WriteLn('       -----------------------------------------------------------------------');
  202.                WriteLn('  6   |     |     |     |     |     |     |     |     |     |     |     |     |');
  203.                WriteLn('       -----------------------------------------------------------------------');
  204.                WriteLn('  7   |     |     |     |     |     |     |     |     |     |     |     |     |');
  205.                WriteLn('       -----------------------------------------------------------------------');
  206.                WriteLn('  8   |     |     |     |     |     |     |     |     |     |     |     |     |');
  207.                WriteLn('       -----------------------------------------------------------------------');
  208.                WriteLn('  9   |     |     |     |     |     |     |     |     |     |     |     |     |');
  209.                WriteLn('       -----------------------------------------------------------------------');
  210.                WriteLn('  10  |     |     |     |     |     |     |     |     |     |     |     |     |');
  211.                WriteLn('       -----------------------------------------------------------------------');
  212.                WriteLn('  11  |     |     |     |     |     |     |     |     |     |     |     |     |');
  213.                WriteLn('       -----------------------------------------------------------------------');
  214.                WriteLn('  12  |     |     |     |     |     |     |     |     |     |     |     |     |');
  215.                WriteLn('       -----------------------------------------------------------------------');
  216.                WriteLn('');
  217.                WriteLn('Lorsque vous souhaiterez placer un bateau, vous devrez renseigner une position x (ligne du tableau) et une position y (colonne du tableau). Vous devrez ensuite l''orienter a gauche, a droite, vers le haut ou vers le bas.');
  218.                WriteLn('');
  219.                For a := 1 to 12 do
  220.                  begin
  221.                    For b := 1 to 12 do
  222.                      begin
  223.                        Plateau[1][a][b] := false;
  224.                        Plateau[2][a][b] := false;
  225.                      end;
  226.                  end;
  227.                For g := 1 to 10 do
  228.                  begin
  229.                    For h := 1 to 12 do
  230.                      begin
  231.                        For j := 1 to 12 do
  232.                          begin
  233.                            Bateau[1][g][h][j] := false;
  234.                            Bateau[2][g][h][j] := false;
  235.                          end;
  236.                      end;
  237.                  end;
  238.                For l := 1 to 2 do
  239.                      begin
  240.                        For p := 1 to 12 do
  241.                          begin
  242.                            For q := 1 to 12 do
  243.                              begin
  244.                                Texte_Case_Placement[l][p][q] := '-';
  245.                              end;
  246.                          end;
  247.                      end;
  248.                While(Partie_Nombre_Bateaux > 0) do
  249.                  begin
  250.                    WriteLn('Veuillez placer le BATEAU ', Partie_Nombre_Bateaux, ' sur le plateau de jeu (longueur : ', Partie_Nombre_Bateaux, ' case(s)).');
  251.                    WriteLn('Position X (ligne) :');
  252.                    ReadLn(Position_X);
  253.                    WriteLn('');
  254.                    While((Position_X < 1) and (Position_X > 12)) do
  255.                      begin
  256.                        WriteLn('Saisissez une valeur valide !');
  257.                        WriteLn('');
  258.                        WriteLn('Position X (ligne) :');
  259.                        ReadLn(Position_X);
  260.                      end;
  261.                    Position_X_E := Position_X;
  262.                    If((Position_X >= 1) and (Position_X <= 12)) then
  263.                      begin
  264.                        WriteLn('');
  265.                        WriteLn('Position Y (colonne) :');
  266.                        ReadLn(Position_Y);
  267.                        While((Position_Y < 1) and (Position_Y > 12)) do
  268.                          begin
  269.                            WriteLn('Saisissez une valeur valide !');
  270.                            WriteLn('');
  271.                            WriteLn('Position Y (colonne) :');
  272.                            ReadLn(Position_Y);
  273.  
  274.                          end;
  275.                        Position_Y_E := Position_Y;
  276.                        If((Position_Y >= 1) and (Position_Y <= 12)) then
  277.                          begin
  278.                            WriteLn('');
  279.                            WriteLn('Comment souhaitez-vous orienter votre bateau ? (1: Vers la gauche ; 2: Vers la droite ; 3: Vers le haut ; 4: Vers le bas)');
  280.                            ReadLn(Orientation);
  281.                            While((Orientation <> 1) and (Orientation <> 2) and (Orientation <> 3) and (Orientation <> 4)) do
  282.                              begin
  283.                                WriteLn('Saisissez une valeur valide !');
  284.                                WriteLn('');
  285.                                WriteLn('Comment souhaitez-vous orienter votre bateau ? (1: Vers la gauche ; 2: Vers la droite ; 3: Vers le haut ; 4: Vers le bas)');
  286.                                ReadLn(Orientation);
  287.                              end;
  288.                            Orientation_E := Orientation;
  289.  
  290.                            Placement_Valide := false;
  291.                            case Orientation of // On vérifie s'il n'y a pas de dépassement de plan.
  292.                              1:
  293.                                begin
  294.                                  c := Partie_Nombre_Bateaux;
  295.                                  While(c >= 1) do
  296.                                    begin
  297.                                      If(Position_Y >= 1) then
  298.                                        begin
  299.                                          Placement_Valide := true;
  300.                                          c := c - 1;
  301.                                          Position_Y := Position_Y - 1;
  302.                                        end
  303.                                      Else
  304.                                        begin
  305.                                          Placement_Valide := false;
  306.                                          c := 0;
  307.                                          WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
  308.                                          WriteLn('');
  309.                                        end;
  310.                                    end;
  311.                                end;
  312.                              2:
  313.                                begin
  314.                                  c := Partie_Nombre_Bateaux;
  315.                                  While (c >= 1) do
  316.                                    begin
  317.                                      If(Position_Y <= 12) then
  318.                                        begin
  319.                                          Placement_Valide := true;
  320.                                          c := c - 1;
  321.                                          Position_Y := Position_Y + 1;
  322.                                        end
  323.                                      Else
  324.                                        begin
  325.                                          Placement_Valide := false;
  326.                                          c := 0;
  327.                                          WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
  328.                                          WriteLn('');
  329.                                        end;
  330.                                    end;
  331.                                end;
  332.                              3:
  333.                                begin
  334.                                  c := Partie_Nombre_Bateaux;
  335.                                  While (c >= 1) do
  336.                                    begin
  337.                                      If(Position_X >= 1) then
  338.                                        begin
  339.                                          Placement_Valide := true;
  340.                                          c := c - 1;
  341.                                          Position_X := Position_X - 1;
  342.                                        end
  343.                                      Else
  344.                                        begin
  345.                                          Placement_Valide := false;
  346.                                          c := 0;
  347.                                          WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
  348.                                          WriteLn('');
  349.                                        end;
  350.                                    end;
  351.                                end;
  352.                              4:
  353.                                begin
  354.                                  c := Partie_Nombre_Bateaux;
  355.                                  While (c >= 1) do
  356.                                    begin
  357.                                      If(Position_X <= 12) then
  358.                                        begin
  359.                                          Placement_Valide := true;
  360.                                          c := c - 1;
  361.                                          Position_X := Position_X + 1;
  362.                                        end
  363.                                      Else
  364.                                        begin
  365.                                          Placement_Valide := false;
  366.                                          c := 0;
  367.                                          WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
  368.                                          WriteLn('');
  369.                                        end;
  370.                                    end;
  371.                                end;
  372.                            end;
  373.                            For i := 1 to Partie_Nombre_Bateaux do // On vérifie si la case demandée n'est pas déjà occupée.
  374.                              begin
  375.                                case Orientation of
  376.                                  1:
  377.                                    begin
  378.                                      If(Plateau[1][Position_X_E][(Position_Y_E+1)-i] = false) then
  379.                                        begin
  380.                                          Position_Valide := true;
  381.                                        end
  382.                                      Else
  383.                                        begin
  384.                                          Position_Valide := false;
  385.                                          WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
  386.                                          WriteLn('');
  387.                                          Break;
  388.                                        end;
  389.                                    end;
  390.                                  2:
  391.                                    begin
  392.                                      If(Plateau[1][Position_X_E][(Position_Y_E-1)+i] = false) then
  393.                                        begin
  394.                                          Position_Valide := true;
  395.                                        end
  396.                                      Else
  397.                                        begin
  398.                                          Position_Valide := false;
  399.                                          WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
  400.                                          WriteLn('');
  401.                                          Break;
  402.                                        end;
  403.                                    end;
  404.                                  3:
  405.                                    begin
  406.                                      If(Plateau[1][(Position_X_E+1)-i][Position_Y_E] = false) then
  407.                                        begin
  408.                                          Position_Valide := true;
  409.                                        end
  410.                                      Else
  411.                                        begin
  412.                                          Position_Valide := false;
  413.                                          WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
  414.                                          WriteLn('');
  415.                                          Break;
  416.                                        end;
  417.                                    end;
  418.                                  4:
  419.                                    begin
  420.                                      If(Plateau[1][(Position_X_E-1)+i][Position_Y_E] = false) then
  421.                                        begin
  422.                                          Position_Valide := true;
  423.                                        end
  424.                                      Else
  425.                                        begin
  426.                                          Position_Valide := false;
  427.                                          WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
  428.                                          WriteLn('');
  429.                                          Break;
  430.                                        end;
  431.                                    end;
  432.                                end;
  433.                              end;
  434.                          end;
  435.                      end;
  436.                    For y := 1 to 12 do
  437.                      begin
  438.                        For z := 1 to 12 do
  439.                          begin
  440.                            Bateau[1][Partie_Nombre_Bateaux][y][z] := false;
  441.                          end;
  442.                      end;
  443.                    If((Placement_Valide = true) and (Position_Valide = true)) then
  444.                      begin
  445.                        case Orientation_E of
  446.                          1:
  447.                            begin
  448.                              For d := 1 to Partie_Nombre_Bateaux do
  449.                                begin
  450.                                  Plateau[1][Position_X_E][(Position_Y_E+1)-d] := true;
  451.                                  Bateau[1][Partie_Nombre_Bateaux][Position_X_E][(Position_Y_E+1)-d] := true;
  452.                                  Texte_Case_Placement[1][Position_X_E][(Position_Y_E+1)-d] := 'x';
  453.                                  Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
  454.                                end;
  455.                            end;
  456.                          2:
  457.                            begin
  458.                              For d := 1 to Partie_Nombre_Bateaux do
  459.                                begin
  460.                                  Plateau[1][Position_X_E][(Position_Y_E-1)+d] := true;
  461.                                  Bateau[1][Partie_Nombre_Bateaux][Position_X_E][(Position_Y_E-1)+d] := true;
  462.                                  Texte_Case_Placement[1][Position_X_E][(Position_Y_E-1)+d] := 'x';
  463.                                  Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
  464.                                end;
  465.                            end;
  466.                          3:
  467.                            begin
  468.                              For d := 1 to Partie_Nombre_Bateaux do
  469.                                begin
  470.                                  Plateau[1][(Position_X_E+1)-d][Position_Y_E] := true;
  471.                                  Bateau[1][Partie_Nombre_Bateaux][(Position_X_E+1)-d][Position_Y_E] := true;
  472.                                  Texte_Case_Placement[1][(Position_X_E+1)-d][Position_Y_E] := 'x';
  473.                                  Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
  474.                                end;
  475.                            end;
  476.                          4:
  477.                            begin
  478.                              For d := 1 to Partie_Nombre_Bateaux do
  479.                                begin
  480.                                  Plateau[1][(Position_X_E-1)+d][Position_Y_E] := true;
  481.                                  Bateau[1][Partie_Nombre_Bateaux][(Position_X_E-1)+d][Position_Y_E] := true;
  482.                                  Texte_Case_Placement[1][(Position_X_E-1)+d][Position_Y_E] := 'x';
  483.                                  Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
  484.                                end;
  485.                            end;
  486.                        end;
  487.                        WriteLn('');
  488.                        WriteLn('Le bateau ', Partie_Nombre_Bateaux, ' a ete place avec succes.');
  489.                        WriteLn('');
  490.                        WriteLn('Vous allez maintenant proceder au positionnement de vos bateaux.');
  491.                        WriteLn('Voici le plan de l''ocean: 12 cases sur 12 cases.');
  492.                        WriteLn('');
  493.                        WriteLn('         1     2     3     4     5     6     7     8     9    10    11    12');
  494.                        WriteLn('       _______________________________________________________________________');
  495.                        For e := 1 to 12 do
  496.                          begin
  497.                            WriteLn(' ', e:2 ,'   |  ', Texte_Case_Placement[1][e][1] ,'  |  ', Texte_Case_Placement[1][e][2] ,'  |  ', Texte_Case_Placement[1][e][3] ,'  |  ', Texte_Case_Placement[1][e][4] ,'  |  ', Texte_Case_Placement[1][e][5] ,'  |  ', Texte_Case_Placement[1][e][6] ,'  |  ', Texte_Case_Placement[1][e][7] ,'  |  ', Texte_Case_Placement[1][e][8] ,'  |  ', Texte_Case_Placement[1][e][9] ,'  |  ', Texte_Case_Placement[1][e][10] ,'  |  ', Texte_Case_Placement[1][e][11] ,'  |  ', Texte_Case_Placement[1][e][12] ,'  |');
  498.                            WriteLn('       -----------------------------------------------------------------------');
  499.                          end;
  500.                        WriteLn('');
  501.                        Partie_Nombre_Bateaux := Partie_Nombre_Bateaux - 1;
  502.                      end;
  503.                  end;
  504.  
  505.  
  506.  
  507.                While(Nombre_Bateaux_Depart > 0) do
  508.                  begin
  509.  
  510.                    Placement_Valide := false;
  511.                    Position_Valide := false;
  512.  
  513.                    Position_X_E := Random(12)+1;
  514.                    Position_Y_E := Random(12)+1;
  515.                    Orientation_E := Random(2)+1;
  516.  
  517.                    Position_X := Position_X_E;
  518.                    Position_Y := Position_Y_E;
  519.                    Orientation := Orientation_E;
  520.  
  521.                    If(Placement_Valide = false) then
  522.                      begin
  523.                        case Orientation_E of
  524.                          1: // Droite
  525.                            begin
  526.                              c := Nombre_Bateaux_Depart;
  527.                              While(c >= 1) do
  528.                                begin
  529.                                  If(Position_Y_E <= 12) then
  530.                                    begin
  531.                                      Placement_Valide := true;
  532.                                      Position_Y_E := Position_Y_E + 1;
  533.                                      c := c - 1;
  534.                                    end
  535.                                  Else
  536.                                    begin
  537.                                      Placement_Valide := false;
  538.                                      c := 0;
  539.                                      Break;
  540.                                    end;
  541.                                end;
  542.                            end;
  543.                          2: // Bas
  544.                            begin
  545.                              c := Nombre_Bateaux_Depart;
  546.                              While(c >= 1) do
  547.                                begin
  548.                                  If(Position_X_E <= 12) then
  549.                                    begin
  550.                                      Placement_Valide := true;
  551.                                      Position_X_E := Position_X_E + 1;
  552.                                      c := c - 1;
  553.                                    end
  554.                                  Else
  555.                                    begin
  556.                                      Placement_Valide := false;
  557.                                      c := 0;
  558.                                      Break;
  559.                                    end;
  560.                                end;
  561.                            end;
  562.                          end;
  563.                      end;
  564.  
  565.                  If(Position_Valide = false) then
  566.                    begin
  567.                      case Orientation of
  568.                        1:
  569.                          begin
  570.                            For k := 1 to Nombre_Bateaux_Depart do
  571.                              begin
  572.                                If(Plateau[2][Position_X][(Position_Y-1)+k] = false) then
  573.                                  begin
  574.                                    Position_Valide := true;
  575.                                  end
  576.                                Else
  577.                                  begin
  578.                                    Position_Valide := false;
  579.                                    Break;
  580.                                  end;
  581.                              end;
  582.                          end;
  583.                        2:
  584.                          begin
  585.                            For k := 1 to Nombre_Bateaux_Depart do
  586.                              begin
  587.                                If(Plateau[2][(Position_X-1)+k][Position_Y] = false) then
  588.                                  begin
  589.                                    Position_Valide := true;
  590.                                  end
  591.                                Else
  592.                                  begin
  593.                                    Position_Valide := false;
  594.                                    Break;
  595.                                  end;
  596.                              end;
  597.                          end;
  598.                      end;
  599.                    end;
  600.  
  601.                  If((Placement_Valide = true) and (Position_Valide = true)) then
  602.                    begin
  603.                      case Orientation of
  604.                            1:
  605.                              begin
  606.                                For d := 1 to Nombre_Bateaux_Depart do
  607.                                  begin
  608.                                    Plateau[2][Position_X][(Position_Y-1)+d] := true;
  609.                                    Bateau[2][Nombre_Bateaux_Depart][Position_X][(Position_Y-1)+d] := true;
  610.                                    case Environnement of
  611.                                      'Test':
  612.                                        begin
  613.                                          Texte_Case_Placement[2][Position_X][(Position_Y-1)+d] := 'x';
  614.                                        end;
  615.                                      'Jeu':
  616.                                        begin
  617.                                          Texte_Case_Placement[2][Position_X][(Position_Y-1)+d] := '-';
  618.                                        end;
  619.                                    end;
  620.                                    Cases_Bateaux[2][Nombre_Bateaux_Depart] := Nombre_Bateaux_Depart;
  621.                                  end;
  622.                              end;
  623.                            2:
  624.                              begin
  625.                                For d := 1 to Nombre_Bateaux_Depart do
  626.                                  begin
  627.                                    Plateau[2][(Position_X-1)+d][Position_Y] := true;
  628.                                    Bateau[2][Nombre_Bateaux_Depart][(Position_X-1)+d][Position_Y] := true;
  629.                                    case Environnement of
  630.                                      'Test':
  631.                                        begin
  632.                                          Texte_Case_Placement[2][(Position_X-1)+d][Position_Y] := 'x';
  633.                                        end;
  634.                                      'Jeu':
  635.                                        begin
  636.                                          Texte_Case_Placement[2][(Position_X-1)+d][Position_Y] := '-';
  637.                                        end;
  638.                                    end;
  639.                                    Cases_Bateaux[2][Nombre_Bateaux_Depart] := Nombre_Bateaux_Depart;
  640.                                  end;
  641.                              end;
  642.                       end;
  643.                       Nombre_Bateaux_Depart := Nombre_Bateaux_Depart - 1;
  644.                     end;
  645.                end;
  646.  
  647.                Bateaux[1] := Nombre_Bateaux;
  648.                Bateaux[2] := Nombre_Bateaux;
  649.                WriteLn('');
  650.                WriteLn('       _______________________________________________________________________             _______________________________________________________________________');
  651.                WriteLn('      |                             Mon plateau                               |           |                               IA Local                                |');
  652.                WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  653.                WriteLn('      |  1     2     3     4     5     6     7     8     9    10    11    12  |           |  1     2     3     4     5     6     7     8     9    10    11    12  |');
  654.                WriteLn('      |_______________________________________________________________________|           |_______________________________________________________________________|');
  655.                case Environnement of
  656.                  'Test':
  657.                    begin
  658.                      For f := 1 to 12 do
  659.                        begin
  660.                          WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  ', Texte_Case_Placement[2][f][1] ,'  |  ', Texte_Case_Placement[2][f][2] ,'  |  ', Texte_Case_Placement[2][f][3] ,'  |  ', Texte_Case_Placement[2][f][4] ,'  |  ', Texte_Case_Placement[2][f][5] ,'  |  ', Texte_Case_Placement[2][f][6] ,'  |  ', Texte_Case_Placement[2][f][7] ,'  |  ', Texte_Case_Placement[2][f][8] ,'  |  ', Texte_Case_Placement[2][f][9] ,'  |  ', Texte_Case_Placement[2][f][10] ,'  |  ', Texte_Case_Placement[2][f][11] ,'  |  ', Texte_Case_Placement[2][f][12] ,'  |');
  661.                          WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  662.                        end;
  663.                    end;
  664.                  'Jeu':
  665.                    begin
  666.                      For f := 1 to 12 do
  667.                        begin
  668.                          WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |');
  669.                          WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  670.                        end;
  671.                    end;
  672.                end;
  673.  
  674.                WriteLn('');
  675.                WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  676.                WriteLn('           |                                       |');
  677.                WriteLn('           |            DEBUT DE LA PARTIE         |');
  678.                WriteLn('           |                                       |');
  679.                WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  680.                WriteLn('');
  681.  
  682.                Partie_Actuelle_Finie := false;
  683.                Tour_Frappe := 1;
  684.  
  685.                Case_Joueur_Touchee := false;
  686.                IA_ID_Bateau_Touche := 0;
  687.  
  688.                For s := 1 to 12 do
  689.                  begin
  690.                    For t := 1 to 12 do
  691.                      begin
  692.                        IA_Frappes[s][t] := false;
  693.                        Joueur_Frappes[s][t] := false;
  694.                      end;
  695.                  end;
  696.  
  697.                While(Partie_Actuelle_Finie = false) do
  698.                  begin
  699.                    case Tour_Frappe of
  700.                      1:
  701.                        begin
  702.                          WriteLn('Veuillez choisir vos positions X (ligne) et Y (colonne) pour frapper votre missile et tenter de toucher un navire ennemi.');
  703.                          WriteLn('');
  704.                          WriteLn('Position X de frappe :');
  705.                          ReadLn(Frappe_X);
  706.                          While((Frappe_X < 1) or (Frappe_X > 12)) do
  707.                            begin
  708.                              WriteLn('');
  709.                              WriteLn('Veuillez saisir une valeur valide !');
  710.                              WriteLn('Position X de frappe :');
  711.                              ReadLn(Frappe_X);
  712.                            end;
  713.                          WriteLn('');
  714.                          WriteLn('Position Y de frappe :');
  715.                          ReadLn(Frappe_Y);
  716.  
  717.                          While((Frappe_Y < 1) or (Frappe_Y > 12)) do
  718.                            begin
  719.                              WriteLn('');
  720.                              WriteLn('Veuillez saisir une valeur valide !');
  721.                              WriteLn('Position Y de frappe :');
  722.                              ReadLn(Frappe_Y);
  723.                            end;
  724.  
  725.                          While(Joueur_Frappes[Frappe_X][Frappe_Y] = true) do
  726.                            begin
  727.                              WriteLn('');
  728.                              WriteLn('Erreur : vous avez deja frappe sur cette position !');
  729.                              WriteLn('Veuillez choisir vos positions X (ligne) et Y (colonne) pour frapper votre missile et tenter de toucher un navire ennemi.');
  730.                              WriteLn('');
  731.                              WriteLn('Position X de frappe :');
  732.                              ReadLn(Frappe_X);
  733.                              While((Frappe_X < 1) or (Frappe_X > 12)) do
  734.                                begin
  735.                                  WriteLn('');
  736.                                  WriteLn('Veuillez saisir une valeur valide !');
  737.                                  WriteLn('Position X de frappe :');
  738.                                  ReadLn(Frappe_X);
  739.                                end;
  740.                              WriteLn('');
  741.                              WriteLn('Position Y de frappe :');
  742.                              ReadLn(Frappe_Y);
  743.  
  744.                              While((Frappe_Y < 1) or (Frappe_Y > 12)) do
  745.                                begin
  746.                                  WriteLn('');
  747.                                  WriteLn('Veuillez saisir une valeur valide !');
  748.                                  WriteLn('Position Y de frappe :');
  749.                                  ReadLn(Frappe_Y);
  750.                                end;
  751.                            end;
  752.  
  753.                          If(Joueur_Frappes[Frappe_X][Frappe_Y] = false) then
  754.                            begin
  755.                              Joueur_Frappes[Frappe_X][Frappe_Y] := true;
  756.                            end;
  757.  
  758.                          If(Plateau[2][Frappe_X][Frappe_Y] = true) then
  759.                            begin
  760.                              Bateau_Coule := false;
  761.                              Plateau[2][Frappe_X][Frappe_Y] := false;
  762.                              Texte_Case_Placement[2][Frappe_X][Frappe_Y] := '#';
  763.  
  764.                              For m := 1 to 10 do
  765.                                begin
  766.                                  If(Bateau[2][m][Frappe_X][Frappe_Y] = true) then
  767.                                    begin
  768.                                      Bateau[2][m][Frappe_X][Frappe_Y] := false;
  769.                                      Cases_Bateaux[2][m] := Cases_Bateaux[2][m] - 1;
  770.                                      If(Cases_Bateaux[2][m] > 0) then
  771.                                        begin
  772.                                          Bateau_Coule := false;
  773.                                        end
  774.                                      Else
  775.                                        begin
  776.                                          Bateau_Coule := true;
  777.                                        end;
  778.  
  779.                                    end;
  780.                                end;
  781.  
  782.                              If(Bateau_Coule = true) then
  783.                                begin
  784.                                  WriteLn('');
  785.                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  786.                                  WriteLn('           |                                       |');
  787.                                  WriteLn('           |       VOUS AVEZ COULE UN BATEAU !     |');
  788.                                  WriteLn('           |                                       |');
  789.                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  790.                                  WriteLn('');
  791.                                  Bateaux[2] := Bateaux[2] - 1;
  792.                                  Bateau_Coule := false;
  793.                                  If(Bateaux[2] = 0) then
  794.                                    begin
  795.                                      WriteLn('');
  796.                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  797.                                      WriteLn('           |                                       |');
  798.                                      WriteLn('           |       VOUS AVEZ GAGNE LA PARTIE !     |');
  799.                                      WriteLn('           |                                       |');
  800.                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  801.                                      WriteLn('');
  802.                                      Partie_Actuelle_Finie := true;
  803.                                    end;
  804.                                end
  805.                              Else
  806.                                begin
  807.                                  WriteLn('');
  808.                                  WriteLn('Vous avez touche un navire ! Continuez, vous pourrez peut-etre le couler !');
  809.                                  WriteLn('');
  810.                                  Texte_Case_Placement[2][Frappe_X][Frappe_Y] := '#';
  811.                                end;
  812.                            end
  813.                          Else
  814.                            begin
  815.                              WriteLn('');
  816.                              WriteLn('Oups ! Vous n''avez touche aucun navire.');
  817.                              Texte_Case_Placement[2][Frappe_X][Frappe_Y] := 'O';
  818.                            end;
  819.                          WriteLn('');
  820.                          WriteLn('       _______________________________________________________________________             _______________________________________________________________________');
  821.                          WriteLn('      |                             Mon plateau                               |           |                               IA Local                                |');
  822.                          WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  823.                          WriteLn('      |  1     2     3     4     5     6     7     8     9    10    11    12  |           |  1     2     3     4     5     6     7     8     9    10    11    12  |');
  824.                          WriteLn('      |_______________________________________________________________________|           |_______________________________________________________________________|');
  825.                          case Environnement of
  826.                            'Test':
  827.                              begin
  828.                                For f := 1 to 12 do
  829.                                  begin
  830.                                    WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  ', Texte_Case_Placement[2][f][1] ,'  |  ', Texte_Case_Placement[2][f][2] ,'  |  ', Texte_Case_Placement[2][f][3] ,'  |  ', Texte_Case_Placement[2][f][4] ,'  |  ', Texte_Case_Placement[2][f][5] ,'  |  ', Texte_Case_Placement[2][f][6] ,'  |  ', Texte_Case_Placement[2][f][7] ,'  |  ', Texte_Case_Placement[2][f][8] ,'  |  ', Texte_Case_Placement[2][f][9] ,'  |  ', Texte_Case_Placement[2][f][10] ,'  |  ', Texte_Case_Placement[2][f][11] ,'  |  ', Texte_Case_Placement[2][f][12] ,'  |');
  831.                                    WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  832.                                  end;
  833.                              end;
  834.                            'Jeu':
  835.                              begin
  836.                                For f := 1 to 12 do
  837.                                  begin
  838.                                    WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |');
  839.                                    WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  840.                                  end;
  841.                              end;
  842.                          end;
  843.                        Tour_Frappe := 2;
  844.                        end;
  845.                      2:
  846.                        begin
  847.                          If(Case_Joueur_Touchee <> true) then
  848.                            begin
  849.                              IA_Nombre_Frappes := 0;
  850.                              IA_Orientation_Juste := 0;
  851.                              IA_Frappe_X := Random(12) + 1;
  852.                              IA_Frappe_Y := Random(12) + 1;
  853.                              While(IA_Frappes[IA_Frappe_X][IA_Frappe_Y] = true) do
  854.                                begin
  855.                                  IA_Frappe_X := Random(12) + 1;
  856.                                  IA_Frappe_Y := Random(12) + 1;
  857.                                end;
  858.                              IA_Frappes[IA_Frappe_X][IA_Frappe_Y] := true;
  859.                              WriteLn('IA Positions : (',IA_Frappe_X,';',IA_Frappe_Y,').');
  860.                              For c := 1 to 4 do
  861.                                begin
  862.                                  IA_Orientations[c] := true;
  863.                                end;
  864.  
  865.                              If(Plateau[1][IA_Frappe_X][IA_Frappe_Y] = true) then
  866.                                begin
  867.                                  Case_Joueur_Touchee := true;
  868.                                  Plateau[1][IA_Frappe_X][IA_Frappe_Y] := false;
  869.                                  Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := '#';
  870.                                  For m := 1 to 10 do
  871.                                    begin
  872.                                      If(Bateau[1][m][IA_Frappe_X][IA_Frappe_Y] = true) then
  873.                                        begin
  874.                                          If((Cases_Bateaux[1][m] - 1) > 0) then
  875.                                            begin
  876.                                              Bateau[1][m][IA_Frappe_X][IA_Frappe_Y] := false;
  877.                                              Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  878.                                              IA_ID_Bateau_Touche := m;
  879.                                              IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  880.                                              IA_Orientation := Random(4) + 1;
  881.                                            end
  882.                                          Else
  883.                                            begin
  884.                                              Case_Joueur_Touchee := false;
  885.                                              WriteLn('');
  886.                                              WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  887.                                              WriteLn('           |                                       |');
  888.                                              WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  889.                                              WriteLn('           |                                       |');
  890.                                              WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  891.                                              WriteLn('');
  892.                                              If(Bateaux[1] = 0) then
  893.                                                begin
  894.                                                  WriteLn('');
  895.                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  896.                                                  WriteLn('           |                                       |');
  897.                                                  WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  898.                                                  WriteLn('           |                                       |');
  899.                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  900.                                                  WriteLn('');
  901.                                                  Partie_Actuelle_Finie := true;
  902.                                                end;
  903.                                            end;
  904.                                        end;
  905.                                    end;
  906.                                  IA_Ancienne_Frappe_X := IA_Frappe_X;
  907.                                  IA_Ancienne_Frappe_Y := IA_Frappe_Y;
  908.                                  WriteLn('Votre adversaire a touche l''un de vos navires.');
  909.                                  Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := '#';
  910.                                  Tour_Frappe := 1;
  911.                                end
  912.                              Else
  913.                                begin
  914.                                  WriteLn('Votre adversaire n''a touche aucun de vos navires.');
  915.                                  Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := 'O';
  916.                                  Case_Joueur_Touchee := false;
  917.                                  Tour_Frappe := 1;
  918.                                end;
  919.                            end
  920.                          Else
  921.                            begin
  922.                              If(Case_Joueur_Touchee = true) then
  923.                                begin
  924.                                  IA_Tour_Fini := false;
  925.                                  While(IA_Tour_Fini <> true) do
  926.                                    begin
  927.                                      If(IA_Orientation_Juste = 0) then
  928.                                        begin
  929.                                          WriteLn('1st etape');
  930.                                          case IA_Orientation of
  931.                                            1: // Gauche
  932.                                              begin
  933.                                                If((IA_Ancienne_Frappe_Y - IA_Nombre_Frappes) >= 1) then
  934.                                                  begin
  935.                                                    If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
  936.                                                      begin
  937.                                                        Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
  938.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := '#';
  939.                                                        For m := 1 to 10 do
  940.                                                          begin
  941.                                                            If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
  942.                                                              begin
  943.                                                                Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
  944.  
  945.                                                                If((Cases_Bateaux[1][m] - 1) > 0) then
  946.                                                                  begin
  947.                                                                    If(IA_ID_Bateau_Touche <> m) then
  948.                                                                      begin
  949.                                                                        IA_Orientations[1] := false;
  950.                                                                        For n := 1 to 4 do
  951.                                                                        begin
  952.                                                                          If(IA_Orientations[n] = true) then
  953.                                                                            begin
  954.                                                                              IA_Orientation_Juste := n;
  955.                                                                              Break;
  956.                                                                            end;
  957.                                                                        end;
  958.                                                                        IA_Nombre_Frappes := 1;
  959.                                                                      end
  960.                                                                    Else
  961.                                                                      begin
  962.                                                                        IA_Orientation_Juste := 1;
  963.                                                                        IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  964.                                                                      end;
  965.                                                                    Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  966.                                                                  end
  967.                                                                Else
  968.                                                                  begin
  969.                                                                    Case_Joueur_Touchee := false;
  970.                                                                    Bateaux[1] := Bateaux[1] - 1;
  971.                                                                    WriteLn('');
  972.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  973.                                                                    WriteLn('           |                                       |');
  974.                                                                    WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  975.                                                                    WriteLn('           |                                       |');
  976.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  977.                                                                    WriteLn('');
  978.                                                                    If(Bateaux[1] = 0) then
  979.                                                                      begin
  980.                                                                        WriteLn('');
  981.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  982.                                                                        WriteLn('           |                                       |');
  983.                                                                        WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  984.                                                                        WriteLn('           |                                       |');
  985.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  986.                                                                        WriteLn('');
  987.                                                                        Partie_Actuelle_Finie := true;
  988.                                                                      end;
  989.                                                                  end;
  990.                                                                IA_Tour_Fini := true;
  991.                                                                Tour_Frappe := 1;
  992.                                                              end;
  993.                                                          end;
  994.                                                      end
  995.                                                    Else
  996.                                                      begin
  997.                                                        IA_Orientations[1] := false;
  998.                                                        For n := 1 to 4 do
  999.                                                        begin
  1000.                                                          If(IA_Orientations[n] = true) then
  1001.                                                            begin
  1002.                                                              IA_Orientation := n;
  1003.                                                              Break;
  1004.                                                            end;
  1005.                                                        end;
  1006.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := 'O';
  1007.                                                        IA_Tour_Fini := true;
  1008.                                                        Tour_Frappe := 1;
  1009.                                                      end;
  1010.                                                  end
  1011.                                                Else
  1012.                                                  begin
  1013.                                                    IA_Orientations[1] := false;
  1014.                                                    For n := 1 to 4 do
  1015.                                                      begin
  1016.                                                        If(IA_Orientations[n] = true) then
  1017.                                                          begin
  1018.                                                            IA_Orientation := n;
  1019.                                                            Break;
  1020.                                                          end;
  1021.                                                      end;
  1022.                                                  end;
  1023.                                              end;
  1024.                                            2: // Droite
  1025.                                              begin
  1026.                                                If((IA_Ancienne_Frappe_Y + IA_Nombre_Frappes) <= 12) then
  1027.                                                  begin
  1028.                                                    If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
  1029.                                                      begin
  1030.                                                        Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
  1031.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := '#';
  1032.                                                        For m := 1 to 10 do
  1033.                                                          begin
  1034.                                                            If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
  1035.                                                              begin
  1036.                                                                Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
  1037.  
  1038.                                                                If((Cases_Bateaux[1][m] - 1) > 0) then
  1039.                                                                  begin
  1040.                                                                    If(IA_ID_Bateau_Touche <> m) then
  1041.                                                                      begin
  1042.                                                                        IA_Orientations[2] := false;
  1043.                                                                        For n := 1 to 4 do
  1044.                                                                        begin
  1045.                                                                          If(IA_Orientations[n] = true) then
  1046.                                                                            begin
  1047.                                                                              IA_Orientation_Juste := n;
  1048.                                                                              Break;
  1049.                                                                            end;
  1050.                                                                        end;
  1051.                                                                        IA_Nombre_Frappes := 1;
  1052.                                                                      end
  1053.                                                                    Else
  1054.                                                                      begin
  1055.                                                                        IA_Orientation_Juste := 2;
  1056.                                                                        IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1057.                                                                      end;
  1058.                                                                    Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1059.                                                                  end
  1060.                                                                Else
  1061.                                                                  begin
  1062.                                                                    Case_Joueur_Touchee := false;
  1063.                                                                    Bateaux[1] := Bateaux[1] - 1;
  1064.                                                                    WriteLn('');
  1065.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1066.                                                                    WriteLn('           |                                       |');
  1067.                                                                    WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1068.                                                                    WriteLn('           |                                       |');
  1069.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1070.                                                                    WriteLn('');
  1071.                                                                    If(Bateaux[1] = 0) then
  1072.                                                                      begin
  1073.                                                                        WriteLn('');
  1074.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1075.                                                                        WriteLn('           |                                       |');
  1076.                                                                        WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1077.                                                                        WriteLn('           |                                       |');
  1078.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1079.                                                                        WriteLn('');
  1080.                                                                        Partie_Actuelle_Finie := true;
  1081.                                                                      end;
  1082.                                                                  end;
  1083.                                                                IA_Tour_Fini := true;
  1084.                                                                Tour_Frappe := 1;
  1085.                                                              end;
  1086.                                                          end;
  1087.                                                      end
  1088.                                                    Else
  1089.                                                      begin
  1090.                                                        IA_Orientations[2] := false;
  1091.                                                        For n := 1 to 4 do
  1092.                                                        begin
  1093.                                                          If(IA_Orientations[n] = true) then
  1094.                                                            begin
  1095.                                                              IA_Orientation := n;
  1096.                                                              Break;
  1097.                                                            end;
  1098.                                                        end;
  1099.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := 'O';
  1100.                                                        IA_Tour_Fini := true;
  1101.                                                        Tour_Frappe := 1;
  1102.                                                      end;
  1103.                                                  end
  1104.                                                Else
  1105.                                                  begin
  1106.                                                    IA_Orientations[2] := false;
  1107.                                                    For n := 1 to 4 do
  1108.                                                      begin
  1109.                                                        If(IA_Orientations[n] = true) then
  1110.                                                          begin
  1111.                                                            IA_Orientation := n;
  1112.                                                            Break;
  1113.                                                          end;
  1114.                                                      end;
  1115.                                                  end;
  1116.                                              end;
  1117.                                            3: // Haut
  1118.                                              begin
  1119.                                                If((IA_Ancienne_Frappe_X - IA_Nombre_Frappes) >= 1) then
  1120.                                                  begin
  1121.                                                    If(Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1122.                                                      begin
  1123.                                                        Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1124.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
  1125.                                                        For m := 1 to 10 do
  1126.                                                          begin
  1127.                                                            If(Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1128.                                                              begin
  1129.                                                                Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1130.  
  1131.                                                                If((Cases_Bateaux[1][m] - 1) > 0) then
  1132.                                                                  begin
  1133.                                                                    If(IA_ID_Bateau_Touche <> m) then
  1134.                                                                      begin
  1135.                                                                        IA_Orientations[3] := false;
  1136.                                                                        For n := 1 to 4 do
  1137.                                                                        begin
  1138.                                                                          If(IA_Orientations[n] = true) then
  1139.                                                                            begin
  1140.                                                                              IA_Orientation_Juste := n;
  1141.                                                                              Break;
  1142.                                                                            end;
  1143.                                                                        end;
  1144.                                                                        IA_Nombre_Frappes := 1;
  1145.                                                                      end
  1146.                                                                    Else
  1147.                                                                      begin
  1148.                                                                        IA_Orientation_Juste := 3;
  1149.                                                                        IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1150.                                                                      end;
  1151.                                                                    Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1152.                                                                  end
  1153.                                                                Else
  1154.                                                                  begin
  1155.                                                                    Case_Joueur_Touchee := false;
  1156.                                                                    Bateaux[1] := Bateaux[1] - 1;
  1157.                                                                    WriteLn('');
  1158.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1159.                                                                    WriteLn('           |                                       |');
  1160.                                                                    WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1161.                                                                    WriteLn('           |                                       |');
  1162.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1163.                                                                    WriteLn('');
  1164.                                                                    If(Bateaux[1] = 0) then
  1165.                                                                      begin
  1166.                                                                        WriteLn('');
  1167.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1168.                                                                        WriteLn('           |                                       |');
  1169.                                                                        WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1170.                                                                        WriteLn('           |                                       |');
  1171.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1172.                                                                        WriteLn('');
  1173.                                                                        Partie_Actuelle_Finie := true;
  1174.                                                                      end;
  1175.                                                                  end;
  1176.                                                                IA_Tour_Fini := true;
  1177.                                                                Tour_Frappe := 1;
  1178.                                                              end;
  1179.                                                          end;
  1180.                                                      end
  1181.                                                    Else
  1182.                                                      begin
  1183.                                                        IA_Orientations[3] := false;
  1184.                                                        For n := 1 to 4 do
  1185.                                                        begin
  1186.                                                          If(IA_Orientations[n] = true) then
  1187.                                                            begin
  1188.                                                              IA_Orientation := n;
  1189.                                                              Break;
  1190.                                                            end;
  1191.                                                        end;
  1192.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
  1193.                                                        IA_Tour_Fini := true;
  1194.                                                        Tour_Frappe := 1;
  1195.                                                      end;
  1196.                                                  end
  1197.                                                Else
  1198.                                                  begin
  1199.                                                    IA_Orientations[3] := false;
  1200.                                                    For n := 1 to 4 do
  1201.                                                      begin
  1202.                                                        If(IA_Orientations[n] = true) then
  1203.                                                          begin
  1204.                                                            IA_Orientation := n;
  1205.                                                            Break;
  1206.                                                          end;
  1207.                                                      end;
  1208.                                                  end;
  1209.                                              end;
  1210.                                            4: // Bas
  1211.                                              begin
  1212.                                                If((IA_Ancienne_Frappe_X + IA_Nombre_Frappes) <= 12) then
  1213.                                                  begin
  1214.                                                    If(Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1215.                                                      begin
  1216.                                                        Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1217.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
  1218.                                                        For m := 1 to 10 do
  1219.                                                          begin
  1220.                                                            If(Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1221.                                                              begin
  1222.                                                                Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1223.  
  1224.                                                                If((Cases_Bateaux[1][m] - 1) > 0) then
  1225.                                                                  begin
  1226.                                                                    If(IA_ID_Bateau_Touche <> m) then
  1227.                                                                      begin
  1228.                                                                        IA_Orientations[4] := false;
  1229.                                                                        For n := 1 to 4 do
  1230.                                                                        begin
  1231.                                                                          If(IA_Orientations[n] = true) then
  1232.                                                                            begin
  1233.                                                                              IA_Orientation_Juste := n;
  1234.                                                                              Break;
  1235.                                                                            end;
  1236.                                                                        end;
  1237.                                                                        IA_Nombre_Frappes := 1;
  1238.                                                                      end
  1239.                                                                    Else
  1240.                                                                      begin
  1241.                                                                        IA_Orientation_Juste := 4;
  1242.                                                                        IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1243.                                                                      end;
  1244.                                                                    Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1245.                                                                  end
  1246.                                                                Else
  1247.                                                                  begin
  1248.                                                                    Case_Joueur_Touchee := false;
  1249.                                                                    Bateaux[1] := Bateaux[1] - 1;
  1250.                                                                    WriteLn('');
  1251.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1252.                                                                    WriteLn('           |                                       |');
  1253.                                                                    WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1254.                                                                    WriteLn('           |                                       |');
  1255.                                                                    WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1256.                                                                    WriteLn('');
  1257.                                                                    If(Bateaux[1] = 0) then
  1258.                                                                      begin
  1259.                                                                        WriteLn('');
  1260.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1261.                                                                        WriteLn('           |                                       |');
  1262.                                                                        WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1263.                                                                        WriteLn('           |                                       |');
  1264.                                                                        WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1265.                                                                        WriteLn('');
  1266.                                                                        Partie_Actuelle_Finie := true;
  1267.                                                                      end;
  1268.                                                                  end;
  1269.                                                                IA_Tour_Fini := true;
  1270.                                                                Tour_Frappe := 1;
  1271.                                                              end;
  1272.                                                          end;
  1273.                                                      end
  1274.                                                    Else
  1275.                                                      begin
  1276.                                                        IA_Orientations[4] := false;
  1277.                                                        IA_Orientation := 1;
  1278.                                                        Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
  1279.                                                        IA_Tour_Fini := true;
  1280.                                                        Tour_Frappe := 1;
  1281.                                                      end;
  1282.                                                  end
  1283.                                                Else
  1284.                                                  begin
  1285.                                                    IA_Orientations[4] := false;
  1286.                                                    For n := 1 to 4 do
  1287.                                                      begin
  1288.                                                        If(IA_Orientations[n] = true) then
  1289.                                                          begin
  1290.                                                            IA_Orientation := n;
  1291.                                                            Break;
  1292.                                                          end;
  1293.                                                      end;
  1294.                                                  end;
  1295.                                              end;
  1296.                                          end;
  1297.                                      end
  1298.                                    Else
  1299.                                      begin
  1300.                                        case IA_Orientation_Juste of
  1301.                                          1: // Gauche
  1302.                                            begin
  1303.                                              If((IA_Ancienne_Frappe_Y - IA_Nombre_Frappes) >= 1) then
  1304.                                                begin
  1305.                                                  If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
  1306.                                                    begin
  1307.                                                      Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
  1308.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := '#';
  1309.                                                      For m := 1 to 10 do
  1310.                                                        begin
  1311.                                                          If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
  1312.                                                            begin
  1313.                                                              Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
  1314.  
  1315.                                                              If((Cases_Bateaux[1][m] - 1) > 0) then
  1316.                                                                begin
  1317.                                                                  If(IA_ID_Bateau_Touche <> m) then
  1318.                                                                    begin
  1319.                                                                      IA_Orientation_Juste := 2;
  1320.                                                                      IA_Nombre_Frappes := 1;
  1321.                                                                    end
  1322.                                                                  Else
  1323.                                                                    begin
  1324.                                                                      IA_Orientation_Juste := 1;
  1325.                                                                      IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1326.                                                                    end;
  1327.                                                                  Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1328.                                                                end
  1329.                                                              Else
  1330.                                                                begin
  1331.                                                                  Case_Joueur_Touchee := false;
  1332.                                                                  Bateaux[1] := Bateaux[1] - 1;
  1333.                                                                  WriteLn('');
  1334.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1335.                                                                  WriteLn('           |                                       |');
  1336.                                                                  WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1337.                                                                  WriteLn('           |                                       |');
  1338.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1339.                                                                  WriteLn('');
  1340.                                                                  If(Bateaux[1] = 0) then
  1341.                                                                    begin
  1342.                                                                      WriteLn('');
  1343.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1344.                                                                      WriteLn('           |                                       |');
  1345.                                                                      WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1346.                                                                      WriteLn('           |                                       |');
  1347.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1348.                                                                      WriteLn('');
  1349.                                                                      Partie_Actuelle_Finie := true;
  1350.                                                                    end;
  1351.                                                                end;
  1352.                                                              IA_Tour_Fini := true;
  1353.                                                              Tour_Frappe := 1;
  1354.                                                            end;
  1355.                                                        end;
  1356.                                                    end
  1357.                                                  Else
  1358.                                                    begin
  1359.                                                      IA_Orientations[1] := false;
  1360.                                                      For n := 1 to 4 do
  1361.                                                        begin
  1362.                                                          If(IA_Orientations[n] = true) then
  1363.                                                            begin
  1364.                                                              IA_Orientation_Juste := n;
  1365.                                                              Break;
  1366.                                                            end;
  1367.                                                        end;
  1368.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := 'O';
  1369.                                                      IA_Nombre_Frappes := 1;
  1370.                                                      IA_Tour_Fini := true;
  1371.                                                      Tour_Frappe := 1;
  1372.                                                    end;
  1373.                                                end
  1374.                                              Else
  1375.                                                begin
  1376.                                                  IA_Orientations[1] := false;
  1377.                                                  For n := 1 to 4 do
  1378.                                                    begin
  1379.                                                      If(IA_Orientations[n] = true) then
  1380.                                                        begin
  1381.                                                          IA_Orientation_Juste := n;
  1382.                                                          Break;
  1383.                                                        end;
  1384.                                                    end;
  1385.                                                  IA_Nombre_Frappes := 1;
  1386.                                                end;
  1387.                                            end;
  1388.                                          2: // Droite
  1389.                                            begin
  1390.                                              If((IA_Ancienne_Frappe_Y + IA_Nombre_Frappes) <= 12) then
  1391.                                                begin
  1392.                                                  If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
  1393.                                                    begin
  1394.                                                      Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
  1395.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := '#';
  1396.                                                      For m := 1 to 10 do
  1397.                                                        begin
  1398.                                                          If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
  1399.                                                            begin
  1400.                                                              Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
  1401.                                                              WriteLn('Bateau ',m,' touche.');
  1402.  
  1403.                                                              If((Cases_Bateaux[1][m] - 1) > 0) then
  1404.                                                                begin
  1405.                                                                  If(IA_ID_Bateau_Touche <> m) then
  1406.                                                                    begin
  1407.                                                                      IA_Orientation_Juste := 1;
  1408.                                                                      IA_Nombre_Frappes := 1;
  1409.                                                                    end
  1410.                                                                  Else
  1411.                                                                    begin
  1412.                                                                      IA_Orientation_Juste := 2;
  1413.                                                                      IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1414.                                                                    end;
  1415.                                                                  Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1416.                                                                end
  1417.                                                              Else
  1418.                                                                begin
  1419.                                                                  Case_Joueur_Touchee := false;
  1420.                                                                  Bateaux[1] := Bateaux[1] - 1;
  1421.                                                                  WriteLn('');
  1422.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1423.                                                                  WriteLn('           |                                       |');
  1424.                                                                  WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1425.                                                                  WriteLn('           |                                       |');
  1426.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1427.                                                                  WriteLn('');
  1428.                                                                  If(Bateaux[1] = 0) then
  1429.                                                                    begin
  1430.                                                                      WriteLn('');
  1431.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1432.                                                                      WriteLn('           |                                       |');
  1433.                                                                      WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1434.                                                                      WriteLn('           |                                       |');
  1435.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1436.                                                                      WriteLn('');
  1437.                                                                      Partie_Actuelle_Finie := true;
  1438.                                                                    end;
  1439.                                                                end;
  1440.                                                              IA_Tour_Fini := true;
  1441.                                                              Tour_Frappe := 1;
  1442.                                                            end;
  1443.                                                        end;
  1444.                                                    end
  1445.                                                  Else
  1446.                                                    begin
  1447.                                                      IA_Orientations[2] := false;
  1448.                                                      For n := 1 to 4 do
  1449.                                                      begin
  1450.                                                        If(IA_Orientations[n] = true) then
  1451.                                                          begin
  1452.                                                            IA_Orientation_Juste := n;
  1453.                                                            Break;
  1454.                                                          end;
  1455.                                                      end;
  1456.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := 'O';
  1457.                                                      IA_Nombre_Frappes := 1;
  1458.                                                      IA_Tour_Fini := true;
  1459.                                                      Tour_Frappe := 1;
  1460.                                                    end;
  1461.                                                end
  1462.                                              Else
  1463.                                                begin
  1464.                                                  IA_Orientations[2] := false;
  1465.                                                  For n := 1 to 4 do
  1466.                                                    begin
  1467.                                                      If(IA_Orientations[n] = true) then
  1468.                                                        begin
  1469.                                                          IA_Orientation_Juste := n;
  1470.                                                          Break;
  1471.                                                        end;
  1472.                                                    end;
  1473.                                                  IA_Nombre_Frappes := 1;
  1474.                                                end;
  1475.                                            end;
  1476.                                          3: // Haut
  1477.                                            begin
  1478.                                              If((IA_Ancienne_Frappe_X - IA_Nombre_Frappes) >= 1) then
  1479.                                                begin
  1480.                                                  If(Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1481.                                                    begin
  1482.                                                      Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1483.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
  1484.                                                      For m := 1 to 10 do
  1485.                                                        begin
  1486.                                                          If(Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1487.                                                            begin
  1488.                                                              Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1489.                                                              WriteLn('Bateau ',m,' touche.');
  1490.  
  1491.                                                              If((Cases_Bateaux[1][m] - 1) > 0) then
  1492.                                                                begin
  1493.                                                                  If(IA_ID_Bateau_Touche <> m) then
  1494.                                                                    begin
  1495.                                                                      IA_Orientation_Juste := 4;
  1496.                                                                      IA_Nombre_Frappes := 1;
  1497.                                                                    end
  1498.                                                                  Else
  1499.                                                                    begin
  1500.                                                                      IA_Orientation_Juste := 3;
  1501.                                                                      IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1502.                                                                    end;
  1503.                                                                  Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1504.                                                                end
  1505.                                                              Else
  1506.                                                                begin
  1507.                                                                  Case_Joueur_Touchee := false;
  1508.                                                                  Bateaux[1] := Bateaux[1] - 1;
  1509.                                                                  WriteLn('');
  1510.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1511.                                                                  WriteLn('           |                                       |');
  1512.                                                                  WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1513.                                                                  WriteLn('           |                                       |');
  1514.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1515.                                                                  WriteLn('');
  1516.                                                                  If(Bateaux[1] = 0) then
  1517.                                                                    begin
  1518.                                                                      WriteLn('');
  1519.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1520.                                                                      WriteLn('           |                                       |');
  1521.                                                                      WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1522.                                                                      WriteLn('           |                                       |');
  1523.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1524.                                                                      WriteLn('');
  1525.                                                                      Partie_Actuelle_Finie := true;
  1526.                                                                    end;
  1527.                                                                end;
  1528.                                                              IA_Tour_Fini := true;
  1529.                                                              Tour_Frappe := 1;
  1530.                                                            end;
  1531.                                                        end;
  1532.                                                    end
  1533.                                                  Else
  1534.                                                    begin
  1535.                                                      IA_Orientations[3] := false;
  1536.                                                      For n := 1 to 4 do
  1537.                                                      begin
  1538.                                                        If(IA_Orientations[n] = true) then
  1539.                                                          begin
  1540.                                                            IA_Orientation_Juste := n;
  1541.                                                            Break;
  1542.                                                          end;
  1543.                                                      end;
  1544.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
  1545.                                                      IA_Nombre_Frappes := 1;
  1546.                                                      IA_Tour_Fini := true;
  1547.                                                      Tour_Frappe := 1;
  1548.                                                    end;
  1549.                                                end
  1550.                                              Else
  1551.                                                begin
  1552.                                                  IA_Orientations[3] := false;
  1553.                                                  For n := 1 to 4 do
  1554.                                                    begin
  1555.                                                      If(IA_Orientations[n] = true) then
  1556.                                                        begin
  1557.                                                          IA_Orientation_Juste := n;
  1558.                                                          Break;
  1559.                                                        end;
  1560.                                                    end;
  1561.                                                  IA_Nombre_Frappes := 1;
  1562.                                                end;
  1563.                                            end;
  1564.                                          4: // Bas
  1565.                                            begin
  1566.                                              If((IA_Ancienne_Frappe_X + IA_Nombre_Frappes) <= 12) then
  1567.                                                begin
  1568.                                                  If(Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1569.                                                    begin
  1570.                                                      Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1571.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
  1572.                                                      For m := 1 to 10 do
  1573.                                                        begin
  1574.                                                          If(Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
  1575.                                                            begin
  1576.                                                              Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
  1577.                                                              WriteLn('Bateau ',m,' touche.');
  1578.  
  1579.                                                              If((Cases_Bateaux[1][m] - 1) > 0) then
  1580.                                                                begin
  1581.                                                                  If(IA_ID_Bateau_Touche <> m) then
  1582.                                                                    begin
  1583.                                                                      IA_Orientation_Juste := 3;
  1584.                                                                      IA_Nombre_Frappes := 1;
  1585.                                                                    end
  1586.                                                                  Else
  1587.                                                                    begin
  1588.                                                                      IA_Orientation_Juste := 4;
  1589.                                                                      IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
  1590.                                                                    end;
  1591.                                                                  Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
  1592.                                                                end
  1593.                                                              Else
  1594.                                                                begin
  1595.                                                                  Case_Joueur_Touchee := false;
  1596.                                                                  Bateaux[1] := Bateaux[1] - 1;
  1597.                                                                  WriteLn('');
  1598.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1599.                                                                  WriteLn('           |                                       |');
  1600.                                                                  WriteLn('           |  VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
  1601.                                                                  WriteLn('           |                                       |');
  1602.                                                                  WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1603.                                                                  WriteLn('');
  1604.                                                                  If(Bateaux[1] = 0) then
  1605.                                                                    begin
  1606.                                                                      WriteLn('');
  1607.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1608.                                                                      WriteLn('           |                                       |');
  1609.                                                                      WriteLn('           |       VOUS AVEZ PERDU LA PARTIE !     |');
  1610.                                                                      WriteLn('           |                                       |');
  1611.                                                                      WriteLn('           *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
  1612.                                                                      WriteLn('');
  1613.                                                                      Partie_Actuelle_Finie := true;
  1614.                                                                    end;
  1615.                                                                end;
  1616.                                                              IA_Tour_Fini := true;
  1617.                                                              Tour_Frappe := 1;
  1618.                                                            end;
  1619.                                                        end;
  1620.                                                    end
  1621.                                                  Else
  1622.                                                    begin
  1623.                                                      IA_Orientations[4] := false;
  1624.                                                      For n := 1 to 4 do
  1625.                                                      begin
  1626.                                                        If(IA_Orientations[n] = true) then
  1627.                                                          begin
  1628.                                                            IA_Orientation_Juste := n;
  1629.                                                            Break;
  1630.                                                          end;
  1631.                                                      end;
  1632.                                                      Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
  1633.                                                      IA_Nombre_Frappes := 1;
  1634.                                                      IA_Tour_Fini := true;
  1635.                                                      Tour_Frappe := 1;
  1636.                                                    end;
  1637.                                                end
  1638.                                              Else
  1639.                                                begin
  1640.                                                  IA_Orientations[4] := false;
  1641.                                                  For n := 1 to 4 do
  1642.                                                    begin
  1643.                                                      If(IA_Orientations[n] = true) then
  1644.                                                        begin
  1645.                                                          IA_Orientation_Juste := n;
  1646.                                                          Break;
  1647.                                                        end;
  1648.                                                    end;
  1649.                                                  IA_Nombre_Frappes := 1;
  1650.                                                end;
  1651.                                            end;
  1652.                                        end;
  1653.                                      end;
  1654.                                    end;
  1655.                                end;
  1656.                            end;
  1657.                        WriteLn('');
  1658.                        WriteLn('       _______________________________________________________________________             _______________________________________________________________________');
  1659.                        WriteLn('      |                             Mon plateau                               |           |                               IA Local                                |');
  1660.                        WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  1661.                        WriteLn('      |  1     2     3     4     5     6     7     8     9    10    11    12  |           |  1     2     3     4     5     6     7     8     9    10    11    12  |');
  1662.                        WriteLn('      |_______________________________________________________________________|           |_______________________________________________________________________|');
  1663.                        case Environnement of
  1664.                            'Test':
  1665.                              begin
  1666.                                For f := 1 to 12 do
  1667.                                  begin
  1668.                                    WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  ', Texte_Case_Placement[2][f][1] ,'  |  ', Texte_Case_Placement[2][f][2] ,'  |  ', Texte_Case_Placement[2][f][3] ,'  |  ', Texte_Case_Placement[2][f][4] ,'  |  ', Texte_Case_Placement[2][f][5] ,'  |  ', Texte_Case_Placement[2][f][6] ,'  |  ', Texte_Case_Placement[2][f][7] ,'  |  ', Texte_Case_Placement[2][f][8] ,'  |  ', Texte_Case_Placement[2][f][9] ,'  |  ', Texte_Case_Placement[2][f][10] ,'  |  ', Texte_Case_Placement[2][f][11] ,'  |  ', Texte_Case_Placement[2][f][12] ,'  |');
  1669.                                    WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  1670.                                  end;
  1671.                              end;
  1672.                            'Jeu':
  1673.                              begin
  1674.                                For f := 1 to 12 do
  1675.                                  begin
  1676.                                    WriteLn(' ', f:2 ,'   |  ', Texte_Case_Placement[1][f][1] ,'  |  ', Texte_Case_Placement[1][f][2] ,'  |  ', Texte_Case_Placement[1][f][3] ,'  |  ', Texte_Case_Placement[1][f][4] ,'  |  ', Texte_Case_Placement[1][f][5] ,'  |  ', Texte_Case_Placement[1][f][6] ,'  |  ', Texte_Case_Placement[1][f][7] ,'  |  ', Texte_Case_Placement[1][f][8] ,'  |  ', Texte_Case_Placement[1][f][9] ,'  |  ', Texte_Case_Placement[1][f][10] ,'  |  ', Texte_Case_Placement[1][f][11] ,'  |  ', Texte_Case_Placement[1][f][12] ,'  |      ', f:2 ,'   |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |  -  |');
  1677.                                    WriteLn('      |-----------------------------------------------------------------------|           |-----------------------------------------------------------------------|');
  1678.                                  end;
  1679.                              end;
  1680.                          end;
  1681.                        end;
  1682.                    end;
  1683.                  end;
  1684.              end;
  1685.          end;
  1686.        'B', 'b':
  1687.          begin
  1688.            WriteLn('Ce mode de jeu est indisponible.');
  1689.          end;
  1690.      end;
  1691.  
  1692.    end;
  1693.  
  1694.  ReadLn;
  1695.  
  1696. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement