Je suis vraiment perdu et si une personne peux changé mon language Pascal en algorithme sa sera vraiment sympas car j'ai essayé essayé mais je n'y arrive pas. Voici une partie du programme pour aprés je pourrais comprendre comment faire le reste : program project1puissance4; USES Crt ;
CONST
TourDuJoueur1= +1 ;
TourDuJoueur2= -1 ;
FinDePartie = 0 ;
IAJoue1 = 1 ;
IAJoue2 = 2 ;
TYPE // Definir un nouveau type de variable fait a partir de Type simple
Intervalle = TourDuJoueur2..TourDuJoueur1 ; //Interva
TTableau = Array [ 1..7, 1..6 ] of Char ;
Ligne = Array [ 1..4 ] of ShortInt ;
Diagonales = Array [ 1..12 ] of Ligne ; //Nombre de diagonales a tester
Var
Pseudo1,Pseudo2,tab,nom,Recommencer:String;
Premier,I,I1,tr:Integer;
Color: Byte;
x,y : ShortInt ;
Trait : Intervalle ;
TableauActuel : TTableau ;
Coup : Char ;
Pion : Char ;
CoupPossible : Boolean ;
ModeJeu : Byte ;
ModeIA : Boolean ;
CONST
PionJoueur1 : Char = 'X' ;
PionJoueur2 : Char = 'O' ;
D : Diagonales = (
(1,4,4,+1), //Diagonales possible avec leur longueur
(1,5,5,+1), // Colonne,Ligne,Longueur, +Direction
(1,6,6,+1),
(2,6,6,+1),
(3,6,5,+1),
(4,6,4,+1),
(4,6,4,-1),
(5,6,5,-1),
(6,6,6,-1),
(7,6,6,-1),
(7,5,5,-1),
(7,4,4,-1));
PROCEDURE OuiNon ( Var Resultat : Boolean);
var Rep:Char;
Begin
repeat
Rep:=ReadKey; //Lecteur du caractere
Delay ( 100 ) ;
until ( Ord( UpCase( Rep ) ) in [78..79] );
if (Rep='O') or (Rep='o') then
Resultat:=True ;
Writeln(rep);
END;
PROCEDURE Initialise ( var Tab : TTableau ; var Tr : Intervalle ) ;
var x,y : ShortInt ;
var Valide : boolean;
begin
Write('Bienvenue au jeu Puissance 4, voulez vous jouer contre l''IA (O/N):');
OuiNon(Valide);
if (Valide)then
begin
ModeIA:=True
end ;
Write('Choisissez votre pseudo : ');
Readln(Pseudo1);
if not ModeIA then
begin
Write('Deuxieme joueur veuillez choisir votre pseudo : ');
Readln(Pseudo2);
end
Else
Pseudo2:='IA' ;
Write('Joueur 1 veuillez choisir votre Pion X ou O : ');
Readln(Pion);
While (Pion<>'X') and (Pion<>'O') do
Begin
Write('Le pion que vous avez choisit est invalide, vous avez le choix entre X ou O : ');
Readln(Pion);
End;
Writeln('Une partie vient de commencer, vous avez 21 jetons et le but du jeu est d''etre le premier a aligner 4 jetons de votre couleur horizontalement, verticalement et diagonalement. Pour choisir la colonne de votre choix taper : A,B,C,D,E,F ou G');
Premier:=random(1);
//Construction de la grille
for x:=1 to 7 do begin
for y:=1 to 6 do begin
Tab [x,y] := '.' ;
end ;
end ;
Tr := TourDuJoueur1;
ClrScr ; //Effacer l''ecran
end ; { Initialise }
PROCEDURE Affiche ( Tab : TTableau ; Tr : Intervalle ) ;
var
x,y : ShortInt ;
nom : String ;
begin
//Affichage de la grille
for y:=6 downto 1 do begin
for x:=1 to 7 do begin
//case Tab[x,y] of
//'.':TextColor(LightGray);
//'X':TextColor(White);
//'O':TextColor(White);
//end ;
GotoXY(3*x+2,-2*y+20); //Positionnement du curseur
Write(Tab[x,y]);
end;
end;
WriteLn;
WriteLn;
WriteLn;
//TextColor(LightGray);
WriteLn(' A B C D E F G');
WriteLn;
WriteLn;
if Tr=1 then nom:=Pseudo2 else nom:=Pseudo1 ;
WriteLn ( ' ',nom,', votre coup !') ;
end ; { Affiche }