S'inscrire
section-icon

Forums

Parlez de tout ce que vous voulez!

Admin
avatar-image

Shiloh

@shiloh

Maître des clés

    Plusieurs problème dans ton code :

    1 – il manque les mécaniques de jeu de base et la logique pour déterminer le gagnant.
    2 – Le programme suppose également un certain format pour l’entrée du joueur et ne gère pas de manière robuste les erreurs ou les entrées invalides.
    3 – Pour finir, la façon dont les tuiles sont distribuées doit être révisée, car elle semble actuellement retirer les tuiles déjà distribuées du pool global, ce qui pourrait entraîner des erreurs.

    Je ne suis pas un expert mais essaie ceci :

    #include <iostream>
    #include <vector>
    #include <cstdlib>
    #include <ctime>
    #include <algorithm>
    
    using namespace std;
    
    const int MAX_PLAYERS = 9;
    const int SMALL_GRID_SIZE = 20;
    const int LARGE_GRID_SIZE = 30;
    const int TOTAL_TILES = 96;
    const int TILES_PER_PLAYER = 10;
    
    struct Player {
        string name;
        char color;
        int startX;
        int startY;
        int tileExchangeCoupons;
        vector<char> tiles;  // Ensemble de tuiles du joueur
    };
    
    void initializeGrid(vector<vector<char>> &grid, int gridSize) {
        grid.assign(gridSize, vector<char>(gridSize, '.'));  // Initialisation de la grille avec '.' pour les cases vides
    }
    
    void displayGrid(const vector<vector<char>> &grid) {
        for (const auto &row : grid) {
            for (char square : row) {
                cout << square << " ";
            }
            cout << endl;
        }
    }
    
    int determineWinner(const vector<vector<char>> &grid, const vector<Player> &players) {
        vector<int> scores(players.size(), 0);
    
        // Calcul des scores pour chaque joueur
        for (int i = 0; i < grid.size(); i++) {
            for (int j = 0; j < grid[i].size(); j++) {
                for (int k = 0; k < players.size(); k++) {
                    if (grid[i][j] == players[k].color) {
                        scores[k]++;
                    }
                }
            }
        }
    
        // Trouver le joueur avec le score le plus élevé
        int maxScore = 0, winnerIndex = -1;
        for (int i = 0; i < scores.size(); i++) {
            if (scores[i] > maxScore) {
                maxScore = scores[i];
                winnerIndex = i;
            }
        }
    
        return winnerIndex;
    }
    
    vector<char> generateRandomTileOrder() {
        vector<char> tilesOrder(TOTAL_TILES);
        for (int i = 0; i < TOTAL_TILES; ++i) {
            tilesOrder[i] = 'A' + i;  // Tuiles représentées par des lettres
        }
        random_shuffle(tilesOrder.begin(), tilesOrder.end());
        return tilesOrder;
    }
    
    void distributeTiles(vector<Player> &players, vector<char> &tilesOrder) {
        for (Player &player : players) {
            player.tiles.assign(tilesOrder.begin(), tilesOrder.begin() + TILES_PER_PLAYER);
            tilesOrder.erase(tilesOrder.begin(), tilesOrder.begin() + TILES_PER_PLAYER);
        }
    }
    
    int main() {
        srand(time(0));  // Initialisation du générateur de nombres aléatoires
    
        int numPlayers;
        cout << "Entrez le nombre de joueurs (2 à 9) : ";
        cin >> numPlayers;
    
        if (numPlayers < 2 || numPlayers > MAX_PLAYERS) {
            cout << "Nombre de joueurs invalide. Fin du programme." << endl;
            return 1;
        }
    
        int gridSize = (numPlayers <= 4) ? SMALL_GRID_SIZE : LARGE_GRID_SIZE;
    
        vector<vector<char>> grid;
        initializeGrid(grid, gridSize);
    
        vector<Player> players(numPlayers);
    
        // Configuration des joueurs
        for (int i = 0; i < numPlayers; ++i) {
            cout << "Entrez le nom pour le Joueur " << i + 1 << " : ";
            cin >> players[i].name;
    
            cout << "Choisissez une couleur (caractère unique) pour " << players[i].name << " : ";
            cin >> players[i].color;
    
            // Initialisation de la position de départ
            players[i].startX = rand() % gridSize;
            players[i].startY = rand() % gridSize;
            grid[players[i].startX][players[i].startY] = players[i].color;
    
            players[i].tileExchangeCoupons = 1;  // Initialisation des coupons d'échange de tuile
        }
    
        // Génération et distribution des tuiles
        vector<char> tilesOrder = generateRandomTileOrder();
        distributeTiles(players, tilesOrder);
    
        // Affichage de la grille initiale
        cout << "\nÉtat initial de la grille :\n";
        displayGrid(grid);
    
        // Boucle de jeu
        bool gameOver = false;
        int currentPlayerIndex = 0;
    
        while (!gameOver) {
            // Logique du jeu ici
            // Exemple : Chaque joueur place une tuile à tour de rôle
            // ...
    
            // Vérification de la fin du jeu
            // gameOver = ...;  // À déterminer selon les règles du jeu
    
            currentPlayerIndex = (currentPlayerIndex + 1) % numPlayers;
        }
    
        int winnerIndex = determineWinner(grid, players);
        if (winnerIndex != -1) {
            cout << "Le gagnant est " << players[winnerIndex].name << " !" << endl;
        } else {
            cout << "Pas de gagnant." << endl;
        }
    
        return 0;
    }
    

    Dans ce code, j’ai ajouté une logique de jeu basique et une fonction determineWinner pour déterminer le gagnant et j’ai corrigé différentes érreurs.

    CERT-FR CERTFR-2026-ALE-008 ALERTE Multiples vulnérabilités dans Microsoft Sharepoint (22 juillet 2026) 22/07/2026 NVD CVE-1999-0095 HIGH 10 The debug command in Sendmail is enabled, allowing attackers to… 01/10/1988 CISA KEV CVE-2021-23758 EXPLOITÉE Ajax.NET Professional Deserialization of Untrusted Data Vulnerability 26/08/2026 EXPLOIT-DB CVE-2026-42167 EXPLOIT PUBLIC [remote] CVE-2026-42167 - ProFTPD mod_sql post-authentication SQLi - RCE 25/08/2026 CERT-FR CERTFR-2026-ALE-007 ALERTE Multiples vulnérabilités dans WordPress (20 juillet 2026) 20/07/2026 NVD CVE-1999-0082 HIGH 10 CWD ~root command in ftpd allows root access. 11/11/1988 CISA KEV CVE-2015-3246 EXPLOITÉE Red Hat Libuser Race Condition Vulnerability 26/08/2026 EXPLOIT-DB EDB-52657 EXPLOIT PUBLIC [remote] PCMan 2.0.7 - Buffer Overflow 18/08/2026 CERT-FR CERTFR-2026-ALE-006 ALERTE Multiples vulnérabilités dans Sonicwall Secure Mobile Access (15 juillet 2026) 15/07/2026 NVD CVE-1999-1471 HIGH 7.2 Buffer overflow in passwd in BSD based operating systems 4.3… 01/01/1989 CISA KEV CVE-2015-5287 EXPLOITÉE Red Hat Automatic Bug Reporting Tool Privilege Escalation Vulnerability 26/08/2026 EXPLOIT-DB EDB-52653 EXPLOIT PUBLIC [webapps] Linuxfabrik monitoring_plugins_6.0.0 - SSRF 18/08/2026 CERT-FR CERTFR-2026-ALE-005 ALERTE [Màj] Vulnérabilité dans Microsoft Exchange Server (15 mai 2026) 15/05/2026 NVD CVE-1999-1122 MEDIUM 4.6 Vulnerability in restore in SunOS 4.0.3 and earlier allows local… 26/07/1989 CISA KEV CVE-2022-0995 EXPLOITÉE Linux Kernel Out-of-Bounds Write Vulnerability 26/08/2026 EXPLOIT-DB EDB-52654 EXPLOIT PUBLIC [webapps] Nodemailer 9.0.0 - File Read/ SSRF 18/08/2026 CERT-FR CERTFR-2026-ALE-004 ALERTE Vulnérabilité dans F5 BIG-IP Access Policy Manager (31 mars 2026) 31/03/2026 NVD CVE-1999-1467 HIGH 10 Vulnerability in rcp on SunOS 4.0.x allows remote attackers from… 26/10/1989 CISA KEV CVE-2026-8452 EXPLOITÉE Citrix NetScaler ADC and NetScaler Gateway Improper Restriction of Operations… 26/08/2026 EXPLOIT-DB EDB-52655 EXPLOIT PUBLIC [webapps] flyto-core 2.26.7 - Arbitrary File Write 18/08/2026 CERT-FR CERTFR-2026-ALE-003 ALERTE Note d’alerte – Ciblage des messageries instantanées (20 mars 2026) 20/03/2026 NVD CVE-1999-1506 HIGH 7.5 Vulnerability in SMI Sendmail 4.0 and earlier, on SunOS up… 29/01/1990 CISA KEV CVE-2019-1068 EXPLOITÉE Microsoft SQL Server Remote Code Execution Vulnerability 26/08/2026 EXPLOIT-DB EDB-52656 EXPLOIT PUBLIC [dos] NanaZip 6.5 - DoS 18/08/2026 CERT-FR CERTFR-2026-ALE-002 ALERTE [MàJ] Vulnérabilité dans Cisco Catalyst SD-WAN (25 février 2026) 25/02/2026 NVD CVE-1999-0084 HIGH 8.4 Certain NFS servers allow users to use mknod to gain… 01/05/1990 CISA KEV CVE-2026-60004 EXPLOITÉE Gitea Code Injection Vulnerability 25/08/2026 EXPLOIT-DB EDB-52643 EXPLOIT PUBLIC [remote] D-Link DNS_340L - OS Command Injection 17/08/2026 CERT-FR CERTFR-2026-ALE-008 ALERTE Multiples vulnérabilités dans Microsoft Sharepoint (22 juillet 2026) 22/07/2026 NVD CVE-1999-0095 HIGH 10 The debug command in Sendmail is enabled, allowing attackers to… 01/10/1988 CISA KEV CVE-2021-23758 EXPLOITÉE Ajax.NET Professional Deserialization of Untrusted Data Vulnerability 26/08/2026 EXPLOIT-DB CVE-2026-42167 EXPLOIT PUBLIC [remote] CVE-2026-42167 - ProFTPD mod_sql post-authentication SQLi - RCE 25/08/2026 CERT-FR CERTFR-2026-ALE-007 ALERTE Multiples vulnérabilités dans WordPress (20 juillet 2026) 20/07/2026 NVD CVE-1999-0082 HIGH 10 CWD ~root command in ftpd allows root access. 11/11/1988 CISA KEV CVE-2015-3246 EXPLOITÉE Red Hat Libuser Race Condition Vulnerability 26/08/2026 EXPLOIT-DB EDB-52657 EXPLOIT PUBLIC [remote] PCMan 2.0.7 - Buffer Overflow 18/08/2026 CERT-FR CERTFR-2026-ALE-006 ALERTE Multiples vulnérabilités dans Sonicwall Secure Mobile Access (15 juillet 2026) 15/07/2026 NVD CVE-1999-1471 HIGH 7.2 Buffer overflow in passwd in BSD based operating systems 4.3… 01/01/1989 CISA KEV CVE-2015-5287 EXPLOITÉE Red Hat Automatic Bug Reporting Tool Privilege Escalation Vulnerability 26/08/2026 EXPLOIT-DB EDB-52653 EXPLOIT PUBLIC [webapps] Linuxfabrik monitoring_plugins_6.0.0 - SSRF 18/08/2026 CERT-FR CERTFR-2026-ALE-005 ALERTE [Màj] Vulnérabilité dans Microsoft Exchange Server (15 mai 2026) 15/05/2026 NVD CVE-1999-1122 MEDIUM 4.6 Vulnerability in restore in SunOS 4.0.3 and earlier allows local… 26/07/1989 CISA KEV CVE-2022-0995 EXPLOITÉE Linux Kernel Out-of-Bounds Write Vulnerability 26/08/2026 EXPLOIT-DB EDB-52654 EXPLOIT PUBLIC [webapps] Nodemailer 9.0.0 - File Read/ SSRF 18/08/2026 CERT-FR CERTFR-2026-ALE-004 ALERTE Vulnérabilité dans F5 BIG-IP Access Policy Manager (31 mars 2026) 31/03/2026 NVD CVE-1999-1467 HIGH 10 Vulnerability in rcp on SunOS 4.0.x allows remote attackers from… 26/10/1989 CISA KEV CVE-2026-8452 EXPLOITÉE Citrix NetScaler ADC and NetScaler Gateway Improper Restriction of Operations… 26/08/2026 EXPLOIT-DB EDB-52655 EXPLOIT PUBLIC [webapps] flyto-core 2.26.7 - Arbitrary File Write 18/08/2026 CERT-FR CERTFR-2026-ALE-003 ALERTE Note d’alerte – Ciblage des messageries instantanées (20 mars 2026) 20/03/2026 NVD CVE-1999-1506 HIGH 7.5 Vulnerability in SMI Sendmail 4.0 and earlier, on SunOS up… 29/01/1990 CISA KEV CVE-2019-1068 EXPLOITÉE Microsoft SQL Server Remote Code Execution Vulnerability 26/08/2026 EXPLOIT-DB EDB-52656 EXPLOIT PUBLIC [dos] NanaZip 6.5 - DoS 18/08/2026 CERT-FR CERTFR-2026-ALE-002 ALERTE [MàJ] Vulnérabilité dans Cisco Catalyst SD-WAN (25 février 2026) 25/02/2026 NVD CVE-1999-0084 HIGH 8.4 Certain NFS servers allow users to use mknod to gain… 01/05/1990 CISA KEV CVE-2026-60004 EXPLOITÉE Gitea Code Injection Vulnerability 25/08/2026 EXPLOIT-DB EDB-52643 EXPLOIT PUBLIC [remote] D-Link DNS_340L - OS Command Injection 17/08/2026