Programme morpion sur ADA GIDE : vérifier si la case est vide.
sefa4
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai programmé un morpion avec ADA GIDE mais lorsqu'on entre une coordonnée deux fois de suite le rond est effacé et remplacé par la croix et inversément.
Veuillez bien m'aider à compléter mon sous programme.
Merci.
Voici mon code:
with ada.text_io;
use ada.text_io;
with ada.integer_text_io;
use ada.integer_text_io;
PROCEDURE Morpion IS
--Creation du tableau
TYPE T_Grille IS ARRAY (1..50, 1..50) OF Character;
Grille:T_Grille;
X,Y:Integer;
Vide:Boolean;
--Affichage des coordonnees
PROCEDURE AffichageCoordonnees IS
BEGIN
For I in 1..50 loop
Put('|');
If I<10 then
Put(' ');
End if;
Put(I,0);
End loop;
Put('|');
New_Line;
END AffichageCoordonnees;
--Affichage du tableau
PROCEDURE AffichageTableau IS
begin
FOR I IN 1..50 LOOP --Affichage des lignes
FOR J IN 1..50 LOOP --Affichage des colonnes
Put("| ");
Put(Grille(I,J));
END LOOP;
Put('|');
Put(I,0);
New_Line;
END LOOP;
END AffichageTableau;
--Verification : les coordonnees recues sont elles valables ?
PROCEDURE VerificationCoordonnees IS
begin
Put("Saisissez le numero de la ligne de votre pion: "); Get(X);
WHILE (X<1) OR (X>50) LOOP
Put("Le numero de la ligne n'est pas comprise dans le tableau."); New_Line;
Put("Saisissez le numero de la ligne de votre pion: "); Get(X);
End loop;
Put("Saisissez le numero de la colonne de votre pion: "); Get(Y);
WHILE (Y<1) OR (Y>50) LOOP
Put("Le numero de la colonne n'est pas comprise dans le tableau"); New_Line;
Put("Saisissez le numero de la colonne de votre pion: "); Get(Y);
END LOOP;
END VerificationCoordonnees;
--Verification : il n'existe aucun pion sur la case choisie
PROCEDURE VerificationPions (S : in integer) IS
begin
IF S mod(2)=0 THEN --Condition : differencier pions
Grille(X,Y):= 'X';
end if;
if S mod(2)=1 then
Grille(X,Y):= 'O';
END IF;
end VerificationPions;
Begin
Vide:= True;
--Initialisation du tableau
Grille:=(1..50 =>(1..50 => ' '));
AffichageCoordonnees;
-- Affiche Le tableau
AffichageTableau;
-- On fait une boucle pour mettre les pions dans le tableau
FOR S IN 1..2500 LOOP
VerificationCoordonnees;
--Verification : il n'existe aucun pion sur la case choisie
VerificationPions (S mod(2));
--Verfication : gagné ou perdu ?
AffichageCoordonnees;
AffichageTableau;
End loop;
End morpion;
Et voici le sous programme:
--Verification : il n'existe aucun pion sur la case choisie
PROCEDURE VerificationPions (S : in integer) IS
begin
IF S mod(2)=0 THEN --Condition : differencier pions
Grille(X,Y):= 'X';
end if;
if S mod(2)=1 then
Grille(X,Y):= 'O';
END IF;
end VerificationPions;
J'ai programmé un morpion avec ADA GIDE mais lorsqu'on entre une coordonnée deux fois de suite le rond est effacé et remplacé par la croix et inversément.
Veuillez bien m'aider à compléter mon sous programme.
Merci.
Voici mon code:
with ada.text_io;
use ada.text_io;
with ada.integer_text_io;
use ada.integer_text_io;
PROCEDURE Morpion IS
--Creation du tableau
TYPE T_Grille IS ARRAY (1..50, 1..50) OF Character;
Grille:T_Grille;
X,Y:Integer;
Vide:Boolean;
--Affichage des coordonnees
PROCEDURE AffichageCoordonnees IS
BEGIN
For I in 1..50 loop
Put('|');
If I<10 then
Put(' ');
End if;
Put(I,0);
End loop;
Put('|');
New_Line;
END AffichageCoordonnees;
--Affichage du tableau
PROCEDURE AffichageTableau IS
begin
FOR I IN 1..50 LOOP --Affichage des lignes
FOR J IN 1..50 LOOP --Affichage des colonnes
Put("| ");
Put(Grille(I,J));
END LOOP;
Put('|');
Put(I,0);
New_Line;
END LOOP;
END AffichageTableau;
--Verification : les coordonnees recues sont elles valables ?
PROCEDURE VerificationCoordonnees IS
begin
Put("Saisissez le numero de la ligne de votre pion: "); Get(X);
WHILE (X<1) OR (X>50) LOOP
Put("Le numero de la ligne n'est pas comprise dans le tableau."); New_Line;
Put("Saisissez le numero de la ligne de votre pion: "); Get(X);
End loop;
Put("Saisissez le numero de la colonne de votre pion: "); Get(Y);
WHILE (Y<1) OR (Y>50) LOOP
Put("Le numero de la colonne n'est pas comprise dans le tableau"); New_Line;
Put("Saisissez le numero de la colonne de votre pion: "); Get(Y);
END LOOP;
END VerificationCoordonnees;
--Verification : il n'existe aucun pion sur la case choisie
PROCEDURE VerificationPions (S : in integer) IS
begin
IF S mod(2)=0 THEN --Condition : differencier pions
Grille(X,Y):= 'X';
end if;
if S mod(2)=1 then
Grille(X,Y):= 'O';
END IF;
end VerificationPions;
Begin
Vide:= True;
--Initialisation du tableau
Grille:=(1..50 =>(1..50 => ' '));
AffichageCoordonnees;
-- Affiche Le tableau
AffichageTableau;
-- On fait une boucle pour mettre les pions dans le tableau
FOR S IN 1..2500 LOOP
VerificationCoordonnees;
--Verification : il n'existe aucun pion sur la case choisie
VerificationPions (S mod(2));
--Verfication : gagné ou perdu ?
AffichageCoordonnees;
AffichageTableau;
End loop;
End morpion;
Et voici le sous programme:
--Verification : il n'existe aucun pion sur la case choisie
PROCEDURE VerificationPions (S : in integer) IS
begin
IF S mod(2)=0 THEN --Condition : differencier pions
Grille(X,Y):= 'X';
end if;
if S mod(2)=1 then
Grille(X,Y):= 'O';
END IF;
end VerificationPions;
A voir également:
- Programme morpion sur ADA GIDE : vérifier si la case est vide.
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Desinstaller un programme sur windows - Guide
2 réponses
Bonjour
je ne connais pas ce langage, mais de ce que j'en comprends, tu ne testes pas s'il y a un pion, tu places le nouveau c'est tout.
je ne connais pas ce langage, mais de ce que j'en comprends, tu ne testes pas s'il y a un pion, tu places le nouveau c'est tout.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, ne devrais-tu pas calculer X et Y en fonction de S?