Salut à tous !
Assez urgent, j'ai un projet d'école à faire (le principe est une bataille navale à exécuter sur Algoscript), mais lorsque j'exécute le programme cela ne fonctionne pas (la colonne/ligne que l'ont tape n'affiche pas forcément la case de la bonne couleur dans le graphisme dans l'onglet "Graphic Output" d'algoscript),
Si quelqu'un pouvait me dire ce qui ne fonctionne pas, c'est un génie ! Voici le code ci-dessous :
Code://Bataille navale var Plateau = Tableau(10, 10); // plateau pour jouer var facteur; // Entier qui sert à multiplier la taille des carreaux var coups, bateaux; // Entiers var SousMarin, Torpilleur, PorteAvion, Titanic; // Entiers, Les différents types de bateaux var i; // Compteur Plateau = [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 2, 2, 2, 2], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 3, 0, 0], [4, 4, 4, 0, 0, 0, 0, 3, 0, 0], [0, 0, 0, 0, 0, 0, 0, 3, 0, 0] ]; EffacerEcran(); // on efface la grille afin que l'utilisateur ne voit pas les bateaux facteur = 50; // taille de la grille for (indice_ligne = 0; indice_ligne < Taille(Plateau); indice_ligne = indice_ligne + 1) { // permet de tracer le tableau sur lequel on joue for (indice_colonne = 0; indice_colonne < Taille(Plateau); indice_colonne = indice_colonne + 1) { Rectangle(indice_ligne * facteur, indice_colonne * facteur, facteur, facteur, 'black'); } } SousMarin = 0; Torpilleur = 0; PorteAvion = 0; Titanic = 0; coups = 0; bateaux = 0; while (bateaux < 15) { // boucle qui s'arrête quand tous les bateaux ont été coulés ligne = Saisie('saisir le numéro de la colonne, compris entre 0 et 9'); colonne = Saisie('saisir le numéro de la ligne, compris entre 0 et 9'); RectanglePlein(530, 10, 350, 100, 'red'); // permet de faire disparaitre le texte des bateaux touchés if ((Plateau[ligne][colonne] == 1) || (Plateau[ligne][colonne] == 2) || (Plateau[ligne][colonne] == 3) || (Plateau[ligne][colonne] == 4)) { if (Plateau[ligne][colonne] == 1) { // compteur des différents bateaux touchés + indication à l'écran setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 40, 'Sous-Marin touché', 'red'); SousMarin = SousMarin + 1; } else { if (Plateau[ligne][colonne] == 2) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 40, 'Torpilleur touché', 'red'); Torpilleur = Torpilleur + 1; } else { if (Plateau[ligne][colonne] == 3) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 40, 'Porte Avion touché', 'red'); PorteAvion = PorteAvion + 1; } else { if (Plateau[ligne][colonne] == 4) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 40, 'Titanic touché', 'red'); Titanic = Titanic + 1; } } } } Plateau[ligne][colonne] = 6; // bateaux touchés bateaux = bateaux + 1; // accumulateur de bateaux touchés } else { Plateau[ligne][colonne] = 7; // missiles à l'eau } if (SousMarin == 5) { // indication des bateaux coulés et apparition à l'écran setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 300, 'Sous Marin coulé', 'blue'); SousMarin = 0; } else { if (Torpilleur == 4) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 350, 'Torpilleur coulé', 'blue'); Torpilleur = 0; } else { if (PorteAvion == 3) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 400, 'Porte Avion coulé', 'blue'); PorteAvion = 0; } else { if (Titanic == 3) { setCanvasFont('helvetica', '25pt', 'bold'); Texte(550, 450, 'Titanic coulé', 'blue'); Titanic = 0; } } } } for (indice_ligne = 0; indice_ligne < Taille(Plateau); indice_ligne = indice_ligne + 1) { for (indice_colonne = 0; indice_colonne < Taille(Plateau); indice_colonne = indice_colonne + 1) { if (Plateau[indice_ligne][indice_colonne] == 7) { RectanglePlein(indice_ligne * facteur, indice_colonne * facteur, facteur, facteur, 'blue'); // représente les missiles coulés } else { if (Plateau[indice_ligne][indice_colonne] == 6) { RectanglePlein(indice_ligne * facteur, indice_colonne * facteur, facteur, facteur, 'red'); // représente les bateaux touchés } } } } coups = coups + 1; // compte les coups } setCanvasFont('helvetica', '30pt', 'bold'); // fin de la partie et résultats Texte(100, 200, 'vous avez coulé tous les bateaux !', 'green'); setCanvasFont('helvetica', '30pt', 'bold'); Texte(100, 300, 'votre nombre de coups est de : ' + coups, 'green'); // fin du programme
-----