• [^] # Re: vieux souvenirs de code

    Posté par . En réponse au message Puissance 4, problème avec l'affichage du gagnant. Évalué à 6.

    Bon et après le style, c'est les perfs.

    C'est tout simplement catastrophique!

    pour chaque tour de jeu tu teste l'intégralité des positions sur tout le plateau... J'ajouterai que si tu changes de dimensions tu va au devant de gros ennuis, au vu des fonctionnement des verticale/horizontales; tu ferais mieux de faire une fonction

    int getGrid(int grid[N][N], int posX, int posY) {
     renvoie la valeur de la case dans la grille ou -1 (ou 0) si en dehors de la grille (en gros <0 ou >=N)
    }
    bool hasNumberAligned(int posX, int posY, int grid[N][N], int offsetX, int offset Y) {
     // ici faut s'assurer que les n(4) cases sont alignés
     int nbOK=1;
     for(int n=1;getGrid(grid, posX - offsetX*n, posY - offsetY*n) == grid[posX][posY] && n < 4; ++n){
     ++nbOK;
     }
     for(int n=1;getGrid(grid, posX + offsetX*n, posY + offsetY*n) == grid[posX][posY] && n < 4; ++n){
     ++nbOK;
     }
     return nbOK >= 4;
    }
    bool aGagne(int posX, int posY, int grid[N][N]) {
     // ici on teste les 4 directions possible ça renvoie vrai si ça a gagné
     return hasNumberAligned(posX, posY, grid, 0, 1) || hasNumberAligned(posX, posY, grid, 1, 0) || hasNumberAligned(posX, posY, grid, 1, 1) || hasNumberAligned(posX, posY, grid, 1, -1);
    }

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent