IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Allocation de tableaux 2D


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Allocation de tableaux 2D
    Bonsoir,

    Je suis entrain de coder un jeu 2048, j'ai presque finis le code mais il y a une erreur dans mon code que je n'arriva pas à cerner au niveau du déplacement à vers le haut.

    voici mon code pour un déplacement vers le haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Plateau deplacementHaut(Plateau plateau)
    {
        Plateau plateau1;
        plateau1 = Plateau (4);
        for(int i =0; i<4; i++)
        {
            plateau1[i] = vector<int> (4);
        }
        for (int i = 0; i<3; i++)
        {
            for(int j = 0; j<4; j++)
            {
                plateau1[i][j] = plateau[i][j];
            }
        }
     
    //Deplacemnt vers le haut   
    for(int i = 0; i<4; i++)
        {
            for (int j =0; j<2; j++){
            if(plateau1[0][i]==0)
            {
                plateau1[0][i]=plateau1[1][i];
                plateau1[1][i]=plateau1[2][i];
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            if(plateau1[1][i]==0)
            {
                plateau1[1][i]=plateau1[2][i];
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            if(plateau1[2][i]==0)
            {
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            }
        }
    //fusion des cases
     
            for(int i =3; i>3; i--)
        {
            for(int j = 0; j<4; j++)
            {
                if (plateau1[i-1][j]==plateau1[i][j])
                {
                    plateau1[i-1][j]=plateau1[i][j]*2;
                    plateau1[i-1][j] =0;
                }
            }
        }
     for(int i = 0; i<4; i++)
        {
            for (int j =0; j<2; j++){
            if(plateau1[0][i]==0)
            {
                plateau1[0][i]=plateau1[1][i];
                plateau1[1][i]=plateau1[2][i];
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            if(plateau1[1][i]==0)
            {
                plateau1[1][i]=plateau1[2][i];
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            if(plateau1[2][i]==0)
            {
                plateau1[2][i]=plateau1[3][i];
                plateau1[3][i] =0;
            }
            }
        }
     
        return plateau1;
     
    }
    le code est lancé par une fonction main dont voici le une partie du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Plateau plateau;
        plateau = Plateau (4);
        for (int i = 0; i<4; i++)
        {
            plateau[i] = vector <int> (4);
        }
    dessine(plateau);
     
    plateau = deplacementHaut(plateau);
     
    dessine(plateau);
    et j'ai une fonction dessine plateau qui dessine le plateau (captain obvious)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    string dessine(Plateau g)
    {
        string a = "lol";
        Plateau dessin;
        dessin = Plateau (4);
        for (int i = 0; i<4; i++)
        {
            dessin[i] = vector<int> (4);
        }
        for(int i = 0; i<4; i++)
        {
            for(int j =0; j<4; j++)
            {
                dessin[i][j]=g[i][j];
            }
        }
     
        cout<<endl;
        cout << "*****************"<<endl;
        for (int i=0; i<4; i++)
        {
            for (int j = 0; j<4; j++)
            {
                if (dessin[i][j]==0)
                {
                    cout<<"*   ";
                }
                else cout <<"* "<<dessin[i][j]<<" ";
            }
            cout<<"*";
            cout<<endl;
            cout <<"*****************"<<endl;
        }
        return a;
    }
    Quand j'effectue un déplacement vers le haut depuis des cases qui sont en position [3][i], les valeurs s'effacent toutes.

    Merci de bien vouloir m'aider

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 072
    Points : 12 118
    Points
    12 118
    Par défaut
    Fonction beaucoup trop longue, utilisez un débogueur pour avoir plus d'information sur le problème.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    des copies dans tous les sens, abscence d'une fonction qui vérifie que le déplacement est possible ?, une initialisation un peu étrange, des boucles totalement inutiles puisque l'indice n'est jamais utilisé : tu devrais relire ton code et y trouverais surement de nombreuses erreurs
    tu devrais aussi voir à utiliser des else if, une succession de if comme ça c'est le meilleur moyen de déclencher une cascade de trucs imprévus
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre retour, je vais en prendre bonne note, j'ai pu corrigé le problème mais il est vrai que le code est quelque peu inelegant, de ce fait le jeu fonctionne mais il est un peu lent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Allocation dynamique tableaux 4 dimensions
    Par mecaplus dans le forum Débuter
    Réponses: 42
    Dernier message: 13/10/2011, 08h45
  2. Allocation de tableaux de longueur nulle
    Par Aleph69 dans le forum Langage
    Réponses: 7
    Dernier message: 21/07/2010, 13h14
  3. allocations, structures, tableaux
    Par sirermelchior dans le forum Débuter
    Réponses: 2
    Dernier message: 30/12/2009, 15h03
  4. allocation de tableaux !
    Par Nulysses dans le forum Fortran
    Réponses: 2
    Dernier message: 16/11/2009, 10h58
  5. Allocation et réallocation dynamique de tableaux
    Par petitmic dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2006, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo