Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Fast_Destruction;
- uses
- sysutils;
- var
- Environnement: String;
- Utilisateur_Connexion: Boolean;
- Etat_Connexion: String;
- Fichier_Utilisateur: TextFile;
- Contenu_Fichier_Utilisateur: String;
- Nom_Utilisateur, Mot_de_passe : String;
- Nouvelle_Partie: Boolean;
- Choix_Mode_Jeu: String;
- Partie_Nombre_Bateaux: Integer;
- Nombre_Bateaux_Depart: Integer;
- Nombre_Bateaux: Integer;
- Bateaux: Array[1..2] of Integer;
- Cases_Bateaux: Array[1..2,1..10] of Integer;
- Plateau: Array[1..2,1..12,1..12] of Boolean;
- Bateau: Array[1..2,1..10,1..12,1..12] of Boolean;
- Position_X, Position_Y, Orientation, Position_X_E, Position_Y_E, Orientation_E: Integer;
- Placement_Valide, Position_Valide: Boolean;
- Partie_Actuelle_Finie: Boolean;
- Tour_Frappe: Integer;
- Frappe_X, Frappe_Y: Integer;
- Bateau_Coule: Boolean;
- Case_Joueur_Touchee: Boolean;
- IA_Frappe_X, IA_Frappe_Y, IA_Orientation: Integer;
- IA_Ancienne_Frappe_X, IA_Ancienne_Frappe_Y: Integer;
- IA_Orientations: Array[1..4] of Boolean;
- IA_ID_Bateau_Touche: Integer;
- IA_Orientation_Juste: Integer;
- IA_Nombre_Frappes: Integer;
- IA_Tour_Fini: Boolean;
- IA_Frappes: Array[1..12,1..12] of Boolean;
- Joueur_Frappes: Array[1..12,1..12] of Boolean;
- Texte_Case_Placement: Array[1..2,1..12,1..12] of String;
- a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, s, t, y, z: Integer;
- begin
- Randomize;
- WriteLn(' ______ _ _____ _ _ _');
- WriteLn(' | ____| | | | __ \ | | | | (_)');
- WriteLn(' | |__ __ _ ___| |_ | | | | ___ ___| |_ _ __ _ _ ___| |_ _ ___ _ __');
- WriteLn(' | __/ _` / __| __| | | | |/ _ \/ __| __| ''__| | | |/ __| __| |/ _ \| ''_ \');
- WriteLn(' | | | (_| \__ \ |_ | |__| | __/\__ \ |_| | | |_| | (__| |_| | (_) | | | |');
- WriteLn(' |_| \__,_|___/\__| |_____/ \___||___/\__|_| \__,_|\___|\__|_|\___/|_| |_|');
- WriteLn('');
- WriteLn(' Par Samuel CLAUZON et Joel MAYAYA NZAL');
- WriteLn('');
- WriteLn(' Par Samuel CLAUZON et Joel MAYAYA NZAL');
- WriteLn(' Licence MIASHS - Semestre 2 - Projet d''algorithmie');
- WriteLn('');
- WriteLn(' ________________________________________________________________________________________________________________');
- WriteLn(' | Fast Destruction est une replique du jeu classique de bataille navale. |');
- WriteLn(' | Dans ce jeu, vous affronterez un ordinateur auquel vous essaierez de couler les navires. |');
- WriteLn(' | Soyez strategique dans le placement de vos navires et dans les frappes que vous ferez ; chaque geste compte... |');
- WriteLn(' ----------------------------------------------------------------------------------------------------------------');
- Environnement := 'Test';
- Utilisateur_Connexion := false;
- While(Utilisateur_Connexion <> true) do
- begin
- WriteLn('');
- WriteLn(' _______________________________________');
- WriteLn(' | |');
- WriteLn(' | A: Connexion |');
- WriteLn(' | B: Inscription |');
- WriteLn(' | |');
- WriteLn(' ---------------------------------------');
- WriteLn('');
- ReadLn(Etat_Connexion);
- case Etat_Connexion of
- 'A', 'a':
- begin
- WriteLn('');
- WriteLn('Nom d''utilisateur :');
- ReadLn(Nom_Utilisateur);
- If(FileExists('utilisateurs/'+Nom_Utilisateur+'.txt')) then
- begin
- WriteLn('');
- WriteLn('Mot de passe :');
- ReadLn(Mot_de_passe);
- Assign(Fichier_Utilisateur, 'utilisateurs/'+Nom_Utilisateur+'.txt');
- Reset(Fichier_Utilisateur);
- ReadLn(Fichier_Utilisateur, Contenu_Fichier_Utilisateur);
- If(Mot_de_passe = Contenu_Fichier_Utilisateur) then
- begin
- Utilisateur_Connexion := true;
- WriteLn('Connexion reussie. Bonjour, ', Nom_Utilisateur, ' !');
- WriteLn('');
- end
- Else
- begin
- WriteLn('Nom d''utilisateur ou mot de passe incorrect.');
- WriteLn('');
- end;
- CloseFile(Fichier_Utilisateur);
- end
- Else
- begin
- WriteLn('Cet utilisateur n''existe pas !');
- WriteLn('');
- end;
- end;
- 'B', 'b':
- begin
- WriteLn('');
- WriteLn('Nom d''utilisateur :');
- ReadLn(Nom_Utilisateur);
- If(FileExists('utilisateurs/'+Nom_Utilisateur+'.txt')) then
- begin
- WriteLn('Cet utilisateur existe deja !');
- WriteLn('');
- end
- Else
- begin
- WriteLn('');
- WriteLn('Mot de passe :');
- ReadLn(Mot_de_passe);
- AssignFile(Fichier_Utilisateur, 'utilisateurs/'+Nom_Utilisateur+'.txt');
- Rewrite(Fichier_Utilisateur);
- WriteLn(Fichier_Utilisateur, Mot_de_passe);
- CloseFile(Fichier_Utilisateur);
- WriteLn('Votre compte a ete cree avec succes. Connectez-vous.');
- end;
- end;
- Else
- begin
- WriteLn('Veuillez saisir une valeur valide !');
- WriteLn('');
- end;
- end;
- end;
- Nouvelle_Partie := true;
- While(Nouvelle_Partie = true) do
- begin
- WriteLn('');
- WriteLn(' _______________________________________');
- WriteLn(' | |');
- WriteLn(' | Mode de jeu |');
- WriteLn(' | A: Local (IA) |');
- WriteLn(' | B: En ligne |');
- WriteLn(' | |');
- WriteLn(' ---------------------------------------');
- WriteLn('');
- ReadLn(Choix_Mode_Jeu);
- While((upCase(Choix_Mode_Jeu) <> 'A') and (upCase(Choix_Mode_Jeu) <> 'B')) do
- begin
- WriteLn('');
- WriteLn(' _______________________________________');
- WriteLn(' | |');
- WriteLn(' | Mode de jeu |');
- WriteLn(' | A: Local (IA) |');
- WriteLn(' | B: En ligne |');
- WriteLn(' | |');
- WriteLn(' ---------------------------------------');
- WriteLn('');
- ReadLn(Choix_Mode_Jeu);
- end;
- case Choix_Mode_Jeu of
- 'A', 'a':
- begin
- WriteLn('');
- WriteLn('Combien de bateaux souhaitez-vous mettre en jeu ? (Compris entre 2 et 10)');
- ReadLn(Partie_Nombre_Bateaux);
- While((Partie_Nombre_Bateaux < 2) and (Partie_Nombre_Bateaux > 10)) do
- begin
- WriteLn('Combien de bateaux souhaitez-vous mettre en jeu ? (Compris entre 2 et 10)');
- ReadLn(Partie_Nombre_Bateaux);
- end;
- Nombre_Bateaux_Depart := Partie_Nombre_Bateaux;
- Nombre_Bateaux := Partie_Nombre_Bateaux;
- If((Partie_Nombre_Bateaux > 1) and (Partie_Nombre_Bateaux <= 10)) then
- begin
- WriteLn('');
- WriteLn('Vous allez maintenant proceder au positionnement de vos bateaux.');
- WriteLn('Voici le plan de l''ocean: 12 cases sur 12 cases.');
- WriteLn('');
- WriteLn(' 1 2 3 4 5 6 7 8 9 10 11 12');
- WriteLn(' _______________________________________________________________________');
- WriteLn(' 1 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 2 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 3 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 4 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 5 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 6 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 7 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 8 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 9 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 10 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 11 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn(' 12 | | | | | | | | | | | | |');
- WriteLn(' -----------------------------------------------------------------------');
- WriteLn('');
- 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.');
- WriteLn('');
- For a := 1 to 12 do
- begin
- For b := 1 to 12 do
- begin
- Plateau[1][a][b] := false;
- Plateau[2][a][b] := false;
- end;
- end;
- For g := 1 to 10 do
- begin
- For h := 1 to 12 do
- begin
- For j := 1 to 12 do
- begin
- Bateau[1][g][h][j] := false;
- Bateau[2][g][h][j] := false;
- end;
- end;
- end;
- For l := 1 to 2 do
- begin
- For p := 1 to 12 do
- begin
- For q := 1 to 12 do
- begin
- Texte_Case_Placement[l][p][q] := '-';
- end;
- end;
- end;
- While(Partie_Nombre_Bateaux > 0) do
- begin
- WriteLn('Veuillez placer le BATEAU ', Partie_Nombre_Bateaux, ' sur le plateau de jeu (longueur : ', Partie_Nombre_Bateaux, ' case(s)).');
- WriteLn('Position X (ligne) :');
- ReadLn(Position_X);
- WriteLn('');
- While((Position_X < 1) and (Position_X > 12)) do
- begin
- WriteLn('Saisissez une valeur valide !');
- WriteLn('');
- WriteLn('Position X (ligne) :');
- ReadLn(Position_X);
- end;
- Position_X_E := Position_X;
- If((Position_X >= 1) and (Position_X <= 12)) then
- begin
- WriteLn('');
- WriteLn('Position Y (colonne) :');
- ReadLn(Position_Y);
- While((Position_Y < 1) and (Position_Y > 12)) do
- begin
- WriteLn('Saisissez une valeur valide !');
- WriteLn('');
- WriteLn('Position Y (colonne) :');
- ReadLn(Position_Y);
- end;
- Position_Y_E := Position_Y;
- If((Position_Y >= 1) and (Position_Y <= 12)) then
- begin
- WriteLn('');
- WriteLn('Comment souhaitez-vous orienter votre bateau ? (1: Vers la gauche ; 2: Vers la droite ; 3: Vers le haut ; 4: Vers le bas)');
- ReadLn(Orientation);
- While((Orientation <> 1) and (Orientation <> 2) and (Orientation <> 3) and (Orientation <> 4)) do
- begin
- WriteLn('Saisissez une valeur valide !');
- WriteLn('');
- WriteLn('Comment souhaitez-vous orienter votre bateau ? (1: Vers la gauche ; 2: Vers la droite ; 3: Vers le haut ; 4: Vers le bas)');
- ReadLn(Orientation);
- end;
- Orientation_E := Orientation;
- Placement_Valide := false;
- case Orientation of // On vérifie s'il n'y a pas de dépassement de plan.
- 1:
- begin
- c := Partie_Nombre_Bateaux;
- While(c >= 1) do
- begin
- If(Position_Y >= 1) then
- begin
- Placement_Valide := true;
- c := c - 1;
- Position_Y := Position_Y - 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- end;
- end;
- end;
- 2:
- begin
- c := Partie_Nombre_Bateaux;
- While (c >= 1) do
- begin
- If(Position_Y <= 12) then
- begin
- Placement_Valide := true;
- c := c - 1;
- Position_Y := Position_Y + 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- end;
- end;
- end;
- 3:
- begin
- c := Partie_Nombre_Bateaux;
- While (c >= 1) do
- begin
- If(Position_X >= 1) then
- begin
- Placement_Valide := true;
- c := c - 1;
- Position_X := Position_X - 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- end;
- end;
- end;
- 4:
- begin
- c := Partie_Nombre_Bateaux;
- While (c >= 1) do
- begin
- If(Position_X <= 12) then
- begin
- Placement_Valide := true;
- c := c - 1;
- Position_X := Position_X + 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- WriteLn('Erreur lors du placement : depassement de plan. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- end;
- end;
- end;
- end;
- For i := 1 to Partie_Nombre_Bateaux do // On vérifie si la case demandée n'est pas déjà occupée.
- begin
- case Orientation of
- 1:
- begin
- If(Plateau[1][Position_X_E][(Position_Y_E+1)-i] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- Break;
- end;
- end;
- 2:
- begin
- If(Plateau[1][Position_X_E][(Position_Y_E-1)+i] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- Break;
- end;
- end;
- 3:
- begin
- If(Plateau[1][(Position_X_E+1)-i][Position_Y_E] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- Break;
- end;
- end;
- 4:
- begin
- If(Plateau[1][(Position_X_E-1)+i][Position_Y_E] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- WriteLn('Erreur lors du placement : case deja occupee. Veuillez reiterer le placement de votre bateau.');
- WriteLn('');
- Break;
- end;
- end;
- end;
- end;
- end;
- end;
- For y := 1 to 12 do
- begin
- For z := 1 to 12 do
- begin
- Bateau[1][Partie_Nombre_Bateaux][y][z] := false;
- end;
- end;
- If((Placement_Valide = true) and (Position_Valide = true)) then
- begin
- case Orientation_E of
- 1:
- begin
- For d := 1 to Partie_Nombre_Bateaux do
- begin
- Plateau[1][Position_X_E][(Position_Y_E+1)-d] := true;
- Bateau[1][Partie_Nombre_Bateaux][Position_X_E][(Position_Y_E+1)-d] := true;
- Texte_Case_Placement[1][Position_X_E][(Position_Y_E+1)-d] := 'x';
- Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
- end;
- end;
- 2:
- begin
- For d := 1 to Partie_Nombre_Bateaux do
- begin
- Plateau[1][Position_X_E][(Position_Y_E-1)+d] := true;
- Bateau[1][Partie_Nombre_Bateaux][Position_X_E][(Position_Y_E-1)+d] := true;
- Texte_Case_Placement[1][Position_X_E][(Position_Y_E-1)+d] := 'x';
- Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
- end;
- end;
- 3:
- begin
- For d := 1 to Partie_Nombre_Bateaux do
- begin
- Plateau[1][(Position_X_E+1)-d][Position_Y_E] := true;
- Bateau[1][Partie_Nombre_Bateaux][(Position_X_E+1)-d][Position_Y_E] := true;
- Texte_Case_Placement[1][(Position_X_E+1)-d][Position_Y_E] := 'x';
- Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
- end;
- end;
- 4:
- begin
- For d := 1 to Partie_Nombre_Bateaux do
- begin
- Plateau[1][(Position_X_E-1)+d][Position_Y_E] := true;
- Bateau[1][Partie_Nombre_Bateaux][(Position_X_E-1)+d][Position_Y_E] := true;
- Texte_Case_Placement[1][(Position_X_E-1)+d][Position_Y_E] := 'x';
- Cases_Bateaux[1][Partie_Nombre_Bateaux] := Partie_Nombre_Bateaux;
- end;
- end;
- end;
- WriteLn('');
- WriteLn('Le bateau ', Partie_Nombre_Bateaux, ' a ete place avec succes.');
- WriteLn('');
- WriteLn('Vous allez maintenant proceder au positionnement de vos bateaux.');
- WriteLn('Voici le plan de l''ocean: 12 cases sur 12 cases.');
- WriteLn('');
- WriteLn(' 1 2 3 4 5 6 7 8 9 10 11 12');
- WriteLn(' _______________________________________________________________________');
- For e := 1 to 12 do
- begin
- 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] ,' |');
- WriteLn(' -----------------------------------------------------------------------');
- end;
- WriteLn('');
- Partie_Nombre_Bateaux := Partie_Nombre_Bateaux - 1;
- end;
- end;
- While(Nombre_Bateaux_Depart > 0) do
- begin
- Placement_Valide := false;
- Position_Valide := false;
- Position_X_E := Random(12)+1;
- Position_Y_E := Random(12)+1;
- Orientation_E := Random(2)+1;
- Position_X := Position_X_E;
- Position_Y := Position_Y_E;
- Orientation := Orientation_E;
- If(Placement_Valide = false) then
- begin
- case Orientation_E of
- 1: // Droite
- begin
- c := Nombre_Bateaux_Depart;
- While(c >= 1) do
- begin
- If(Position_Y_E <= 12) then
- begin
- Placement_Valide := true;
- Position_Y_E := Position_Y_E + 1;
- c := c - 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- Break;
- end;
- end;
- end;
- 2: // Bas
- begin
- c := Nombre_Bateaux_Depart;
- While(c >= 1) do
- begin
- If(Position_X_E <= 12) then
- begin
- Placement_Valide := true;
- Position_X_E := Position_X_E + 1;
- c := c - 1;
- end
- Else
- begin
- Placement_Valide := false;
- c := 0;
- Break;
- end;
- end;
- end;
- end;
- end;
- If(Position_Valide = false) then
- begin
- case Orientation of
- 1:
- begin
- For k := 1 to Nombre_Bateaux_Depart do
- begin
- If(Plateau[2][Position_X][(Position_Y-1)+k] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- Break;
- end;
- end;
- end;
- 2:
- begin
- For k := 1 to Nombre_Bateaux_Depart do
- begin
- If(Plateau[2][(Position_X-1)+k][Position_Y] = false) then
- begin
- Position_Valide := true;
- end
- Else
- begin
- Position_Valide := false;
- Break;
- end;
- end;
- end;
- end;
- end;
- If((Placement_Valide = true) and (Position_Valide = true)) then
- begin
- case Orientation of
- 1:
- begin
- For d := 1 to Nombre_Bateaux_Depart do
- begin
- Plateau[2][Position_X][(Position_Y-1)+d] := true;
- Bateau[2][Nombre_Bateaux_Depart][Position_X][(Position_Y-1)+d] := true;
- case Environnement of
- 'Test':
- begin
- Texte_Case_Placement[2][Position_X][(Position_Y-1)+d] := 'x';
- end;
- 'Jeu':
- begin
- Texte_Case_Placement[2][Position_X][(Position_Y-1)+d] := '-';
- end;
- end;
- Cases_Bateaux[2][Nombre_Bateaux_Depart] := Nombre_Bateaux_Depart;
- end;
- end;
- 2:
- begin
- For d := 1 to Nombre_Bateaux_Depart do
- begin
- Plateau[2][(Position_X-1)+d][Position_Y] := true;
- Bateau[2][Nombre_Bateaux_Depart][(Position_X-1)+d][Position_Y] := true;
- case Environnement of
- 'Test':
- begin
- Texte_Case_Placement[2][(Position_X-1)+d][Position_Y] := 'x';
- end;
- 'Jeu':
- begin
- Texte_Case_Placement[2][(Position_X-1)+d][Position_Y] := '-';
- end;
- end;
- Cases_Bateaux[2][Nombre_Bateaux_Depart] := Nombre_Bateaux_Depart;
- end;
- end;
- end;
- Nombre_Bateaux_Depart := Nombre_Bateaux_Depart - 1;
- end;
- end;
- Bateaux[1] := Nombre_Bateaux;
- Bateaux[2] := Nombre_Bateaux;
- WriteLn('');
- WriteLn(' _______________________________________________________________________ _______________________________________________________________________');
- WriteLn(' | Mon plateau | | IA Local |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- 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 |');
- WriteLn(' |_______________________________________________________________________| |_______________________________________________________________________|');
- case Environnement of
- 'Test':
- begin
- For f := 1 to 12 do
- begin
- 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] ,' |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- 'Jeu':
- begin
- For f := 1 to 12 do
- begin
- 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 ,' | - | - | - | - | - | - | - | - | - | - | - | - |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- end;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | DEBUT DE LA PARTIE |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := false;
- Tour_Frappe := 1;
- Case_Joueur_Touchee := false;
- IA_ID_Bateau_Touche := 0;
- For s := 1 to 12 do
- begin
- For t := 1 to 12 do
- begin
- IA_Frappes[s][t] := false;
- Joueur_Frappes[s][t] := false;
- end;
- end;
- While(Partie_Actuelle_Finie = false) do
- begin
- case Tour_Frappe of
- 1:
- begin
- WriteLn('Veuillez choisir vos positions X (ligne) et Y (colonne) pour frapper votre missile et tenter de toucher un navire ennemi.');
- WriteLn('');
- WriteLn('Position X de frappe :');
- ReadLn(Frappe_X);
- While((Frappe_X < 1) or (Frappe_X > 12)) do
- begin
- WriteLn('');
- WriteLn('Veuillez saisir une valeur valide !');
- WriteLn('Position X de frappe :');
- ReadLn(Frappe_X);
- end;
- WriteLn('');
- WriteLn('Position Y de frappe :');
- ReadLn(Frappe_Y);
- While((Frappe_Y < 1) or (Frappe_Y > 12)) do
- begin
- WriteLn('');
- WriteLn('Veuillez saisir une valeur valide !');
- WriteLn('Position Y de frappe :');
- ReadLn(Frappe_Y);
- end;
- While(Joueur_Frappes[Frappe_X][Frappe_Y] = true) do
- begin
- WriteLn('');
- WriteLn('Erreur : vous avez deja frappe sur cette position !');
- WriteLn('Veuillez choisir vos positions X (ligne) et Y (colonne) pour frapper votre missile et tenter de toucher un navire ennemi.');
- WriteLn('');
- WriteLn('Position X de frappe :');
- ReadLn(Frappe_X);
- While((Frappe_X < 1) or (Frappe_X > 12)) do
- begin
- WriteLn('');
- WriteLn('Veuillez saisir une valeur valide !');
- WriteLn('Position X de frappe :');
- ReadLn(Frappe_X);
- end;
- WriteLn('');
- WriteLn('Position Y de frappe :');
- ReadLn(Frappe_Y);
- While((Frappe_Y < 1) or (Frappe_Y > 12)) do
- begin
- WriteLn('');
- WriteLn('Veuillez saisir une valeur valide !');
- WriteLn('Position Y de frappe :');
- ReadLn(Frappe_Y);
- end;
- end;
- If(Joueur_Frappes[Frappe_X][Frappe_Y] = false) then
- begin
- Joueur_Frappes[Frappe_X][Frappe_Y] := true;
- end;
- If(Plateau[2][Frappe_X][Frappe_Y] = true) then
- begin
- Bateau_Coule := false;
- Plateau[2][Frappe_X][Frappe_Y] := false;
- Texte_Case_Placement[2][Frappe_X][Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[2][m][Frappe_X][Frappe_Y] = true) then
- begin
- Bateau[2][m][Frappe_X][Frappe_Y] := false;
- Cases_Bateaux[2][m] := Cases_Bateaux[2][m] - 1;
- If(Cases_Bateaux[2][m] > 0) then
- begin
- Bateau_Coule := false;
- end
- Else
- begin
- Bateau_Coule := true;
- end;
- end;
- end;
- If(Bateau_Coule = true) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Bateaux[2] := Bateaux[2] - 1;
- Bateau_Coule := false;
- If(Bateaux[2] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ GAGNE LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end
- Else
- begin
- WriteLn('');
- WriteLn('Vous avez touche un navire ! Continuez, vous pourrez peut-etre le couler !');
- WriteLn('');
- Texte_Case_Placement[2][Frappe_X][Frappe_Y] := '#';
- end;
- end
- Else
- begin
- WriteLn('');
- WriteLn('Oups ! Vous n''avez touche aucun navire.');
- Texte_Case_Placement[2][Frappe_X][Frappe_Y] := 'O';
- end;
- WriteLn('');
- WriteLn(' _______________________________________________________________________ _______________________________________________________________________');
- WriteLn(' | Mon plateau | | IA Local |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- 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 |');
- WriteLn(' |_______________________________________________________________________| |_______________________________________________________________________|');
- case Environnement of
- 'Test':
- begin
- For f := 1 to 12 do
- begin
- 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] ,' |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- 'Jeu':
- begin
- For f := 1 to 12 do
- begin
- 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 ,' | - | - | - | - | - | - | - | - | - | - | - | - |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- end;
- Tour_Frappe := 2;
- end;
- 2:
- begin
- If(Case_Joueur_Touchee <> true) then
- begin
- IA_Nombre_Frappes := 0;
- IA_Orientation_Juste := 0;
- IA_Frappe_X := Random(12) + 1;
- IA_Frappe_Y := Random(12) + 1;
- While(IA_Frappes[IA_Frappe_X][IA_Frappe_Y] = true) do
- begin
- IA_Frappe_X := Random(12) + 1;
- IA_Frappe_Y := Random(12) + 1;
- end;
- IA_Frappes[IA_Frappe_X][IA_Frappe_Y] := true;
- WriteLn('IA Positions : (',IA_Frappe_X,';',IA_Frappe_Y,').');
- For c := 1 to 4 do
- begin
- IA_Orientations[c] := true;
- end;
- If(Plateau[1][IA_Frappe_X][IA_Frappe_Y] = true) then
- begin
- Case_Joueur_Touchee := true;
- Plateau[1][IA_Frappe_X][IA_Frappe_Y] := false;
- Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Frappe_X][IA_Frappe_Y] = true) then
- begin
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- Bateau[1][m][IA_Frappe_X][IA_Frappe_Y] := false;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- IA_ID_Bateau_Touche := m;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- IA_Orientation := Random(4) + 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- end;
- end;
- IA_Ancienne_Frappe_X := IA_Frappe_X;
- IA_Ancienne_Frappe_Y := IA_Frappe_Y;
- WriteLn('Votre adversaire a touche l''un de vos navires.');
- Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := '#';
- Tour_Frappe := 1;
- end
- Else
- begin
- WriteLn('Votre adversaire n''a touche aucun de vos navires.');
- Texte_Case_Placement[1][IA_Frappe_X][IA_Frappe_Y] := 'O';
- Case_Joueur_Touchee := false;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- If(Case_Joueur_Touchee = true) then
- begin
- IA_Tour_Fini := false;
- While(IA_Tour_Fini <> true) do
- begin
- If(IA_Orientation_Juste = 0) then
- begin
- WriteLn('1st etape');
- case IA_Orientation of
- 1: // Gauche
- begin
- If((IA_Ancienne_Frappe_Y - IA_Nombre_Frappes) >= 1) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientations[1] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 1;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[1] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := 'O';
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[1] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- end;
- end;
- 2: // Droite
- begin
- If((IA_Ancienne_Frappe_Y + IA_Nombre_Frappes) <= 12) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientations[2] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 2;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[2] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := 'O';
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[2] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- end;
- end;
- 3: // Haut
- begin
- If((IA_Ancienne_Frappe_X - IA_Nombre_Frappes) >= 1) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientations[3] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 3;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[3] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[3] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- end;
- end;
- 4: // Bas
- begin
- If((IA_Ancienne_Frappe_X + IA_Nombre_Frappes) <= 12) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientations[4] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 4;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[4] := false;
- IA_Orientation := 1;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[4] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation := n;
- Break;
- end;
- end;
- end;
- end;
- end;
- end
- Else
- begin
- case IA_Orientation_Juste of
- 1: // Gauche
- begin
- If((IA_Ancienne_Frappe_Y - IA_Nombre_Frappes) >= 1) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := false;
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientation_Juste := 2;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 1;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[1] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y-IA_Nombre_Frappes] := 'O';
- IA_Nombre_Frappes := 1;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[1] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end;
- end;
- 2: // Droite
- begin
- If((IA_Ancienne_Frappe_Y + IA_Nombre_Frappes) <= 12) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := false;
- WriteLn('Bateau ',m,' touche.');
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientation_Juste := 1;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 2;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[2] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X][IA_Ancienne_Frappe_Y+IA_Nombre_Frappes] := 'O';
- IA_Nombre_Frappes := 1;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[2] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end;
- end;
- 3: // Haut
- begin
- If((IA_Ancienne_Frappe_X - IA_Nombre_Frappes) >= 1) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- WriteLn('Bateau ',m,' touche.');
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientation_Juste := 4;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 3;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[3] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X-IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := 'O';
- IA_Nombre_Frappes := 1;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[3] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end;
- end;
- 4: // Bas
- begin
- If((IA_Ancienne_Frappe_X + IA_Nombre_Frappes) <= 12) then
- begin
- If(Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Plateau[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
- For m := 1 to 10 do
- begin
- If(Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] = true) then
- begin
- Bateau[1][m][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := false;
- WriteLn('Bateau ',m,' touche.');
- If((Cases_Bateaux[1][m] - 1) > 0) then
- begin
- If(IA_ID_Bateau_Touche <> m) then
- begin
- IA_Orientation_Juste := 3;
- IA_Nombre_Frappes := 1;
- end
- Else
- begin
- IA_Orientation_Juste := 4;
- IA_Nombre_Frappes := IA_Nombre_Frappes + 1;
- end;
- Cases_Bateaux[1][m] := Cases_Bateaux[1][m] - 1;
- end
- Else
- begin
- Case_Joueur_Touchee := false;
- Bateaux[1] := Bateaux[1] - 1;
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOTRE ADVERSAIRE A COULE UN BATEAU ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- If(Bateaux[1] = 0) then
- begin
- WriteLn('');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn(' | |');
- WriteLn(' | VOUS AVEZ PERDU LA PARTIE ! |');
- WriteLn(' | |');
- WriteLn(' *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*');
- WriteLn('');
- Partie_Actuelle_Finie := true;
- end;
- end;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end;
- end
- Else
- begin
- IA_Orientations[4] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- Texte_Case_Placement[1][IA_Ancienne_Frappe_X+IA_Nombre_Frappes][IA_Ancienne_Frappe_Y] := '#';
- IA_Nombre_Frappes := 1;
- IA_Tour_Fini := true;
- Tour_Frappe := 1;
- end;
- end
- Else
- begin
- IA_Orientations[4] := false;
- For n := 1 to 4 do
- begin
- If(IA_Orientations[n] = true) then
- begin
- IA_Orientation_Juste := n;
- Break;
- end;
- end;
- IA_Nombre_Frappes := 1;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- WriteLn('');
- WriteLn(' _______________________________________________________________________ _______________________________________________________________________');
- WriteLn(' | Mon plateau | | IA Local |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- 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 |');
- WriteLn(' |_______________________________________________________________________| |_______________________________________________________________________|');
- case Environnement of
- 'Test':
- begin
- For f := 1 to 12 do
- begin
- 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] ,' |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- 'Jeu':
- begin
- For f := 1 to 12 do
- begin
- 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 ,' | - | - | - | - | - | - | - | - | - | - | - | - |');
- WriteLn(' |-----------------------------------------------------------------------| |-----------------------------------------------------------------------|');
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- 'B', 'b':
- begin
- WriteLn('Ce mode de jeu est indisponible.');
- end;
- end;
- end;
- ReadLn;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement