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 :

bataille navale, un projet bateau (haha)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut bataille navale, un projet bateau (haha)
    Ami(e)s du C, bien le bonjour !

    Bien, j'ai un projet de bataille navale en C à faire.
    Pas d'interface graphique, pas de jeu contre l'ordi.

    Juste permettre à deux joueurs de jouer l'un contre l'autre.

    Je commence d'aujourd'hui, donc je n'en suis qu'à gérer chaque plateau (sous forme de tableau) et leur affichage.
    Mon code fonctionne quand je mets tout dans le main.
    Les problèmes arrivent quand je tente d'externaliser l'affichage dans une fonction. Voici donc 1) le code qui fonctionne. 2) Le code qui coince.

    Merci d'avance de me dire quelle(s) bévue(s) j'ai fait(es).

    Ceci fonctionne :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_LIGNES 11
    #define MAX_COL 11
     
    int main()
    {
        int x,y;
        char plateau1[MAX_LIGNES][MAX_COL];
        char abcisses[MAX_LIGNES]={'X','A','B','C','D','E','F','G','H','I','J'};
        char ordonnees[MAX_LIGNES]={'X','0','1','2','3','4','5','6','7','8','9'};
     
     
        //boucles d'initialisation plateau1
     
        for(x=0;x<MAX_LIGNES;x++){
            plateau1[0][x]=abcisses[x];
        }
        for(y=0;y<MAX_COL;y++){
            plateau1[y][0]=ordonnees[y];
        }
     
        for(x=1;x<MAX_LIGNES;x++){
            for(y=1;y<MAX_COL;y++){
                plateau1[x][y]='O';
            }
        }
     
        //Boucle d'affichage
        printf("\n");
        for(x=0;x<MAX_LIGNES;x++){
            printf("%c | ",plateau1[0][x]);
        }
        printf("\n- - - - - - - - - - - - - - - - - - - - - \n");
     
        for(x=1;x<MAX_LIGNES;x++){
            for(y=0;y<MAX_COL;y++){
                if(y==0){
                    printf("%c | ",plateau1[x][y]);
                }
                else{
                    printf("%c   ",plateau1[x][y]);
                }
            }
            printf("\n  | \n");
        }
        return 0;
    }
    Ceci coince :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_LIGNES 11
    #define MAX_COL 11
     
    //les prototypes des fonctions
    void affiche(char plateau[MAX_LIGNES][MAX_COL]);
     
    //Les variables globales.
    int x,y;
    char plateau1[MAX_LIGNES][MAX_COL],plateau2[MAX_LIGNES][MAX_COL];
    char abcisses[MAX_LIGNES]={'X','A','B','C','D','E','F','G','H','I','J'};
    char ordonnees[MAX_LIGNES]={'X','0','1','2','3','4','5','6','7','8','9'};
     
     
    //boucles d'initialisation plateau1
     
    for(x=0;x<MAX_LIGNES;x++){
        plateau1[0][x]=abcisses[x];
    }
    for(y=0;y<MAX_COL;y++){
        plateau1[y][0]=ordonnees[y];
    }
     
    for(x=1;x<MAX_LIGNES;x++){
        for(y=1;y<MAX_COL;y++){
            plateau1[x][y]='O';
        }
    }
     
    //boucles d'initialisation plateau2
     
    for(x=0;x<MAX_LIGNES;x++){
        plateau2[0][x]=abcisses[x];
    }
    for(y=0;y<MAX_COL;y++){
        plateau2[y][0]=ordonnees[y];
    }
     
    for(x=1;x<MAX_LIGNES;x++){
        for(y=1;y<MAX_COL;y++){
            plateau2[x][y]='O';
        }
    }
    int main()
    {
        affiche(plateau1);
     
        return 0;
    }
     
    void affiche( char plateau[MAX_LIGNES][MAX_COL]){
        printf("\n");
        for(x=0;x<MAX_LIGNES;x++){
            printf("%c | ",plateau[0][x]);
        }
        printf("\n- - - - - - - - - - - - - - - - - - - - - \n");
     
        for(x=1;x<MAX_LIGNES;x++){
            for(y=0;y<MAX_COL;y++){
                if(y==0){
                    printf("%c | ",plateau[x][y]);
                }
                else{
                    printf("%c   ",plateau[x][y]);
                }
            }
            printf("\n  | \n");
        }
     
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Es-tu sur d'avoir le droit de mettre des boucle FOR en global ?
    C'est à dire... hors fonction ? :p

  3. #3
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Oh merci mille fois rilou, c'était bien ça le problème.
    Ma variable plateau est déclarée en globale, mais il faut que je la tripote dans le main ou dans une autre fonction.

    Je ne coche pas "résolu" cependant, car je souhaite garder ce fil ouvert pendant toute la confection de mon projet.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    oups, pardon, j'ai trouvé, un problème de faute de frappe dans mon code...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bon les choses avancent.

    Pourtant un problème me bloque régulièrement avec ces strings qui ne sont que des tableaux de caractères.

    J'ai un tableau de 4 directions initialisé ainsi.

    dir[4]={'N','S','E','O'};

    Je passe par une série de conditions qui fonctionne très bien mais dont je vous épargne les méandres, et chaque condition doit retenir un éventail différent de directions (NSE ou bien SO enfin bref); il faut donc redéfinir les valeurs de ce tableau dans chaque cas. Il ne prend pas la syntaxe dir="N E " ? Quelle est la bonne syntaxe pour "écraser une variable string" dirait-on en PHP ? J'ai un mal de chien à comprendre bien qu'ayant lu quelques tutos sur la question.

    edit

    J'ai fini par trouver que ceci marche

    dir[6]={'N','S','E','O'};
    dir[6]="N E ";

    Vous pouvez m'expliquer en détails que j'imprime un peu s'il vous plaît ?
    Je ne sais jamais quand il faut tenir compte de \0 de fin de chaîne ou non.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    J'ai fini par trouver que ceci marche

    dir[6]={'N','S','E','O'};
    dir[6]="N E ";

    Vous pouvez m'expliquer en détails que j'imprime un peu s'il vous plaît ?
    Je ne sais jamais quand il faut tenir compte de \0 de fin de chaîne ou non.
    Si tu utilises des fonctions qui traitent des chaînes, il te faut un '\0' à la fin généralement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dir[6]={'N','S','E','O'};
    devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dir[6]={'N','S','E','O','\0'};
    en fait.

    Ajoute le '\0' automatiquement par contre.


    Jc

Discussions similaires

  1. [Python 3.X] Projet de bataille navale
    Par clemissile dans le forum Tkinter
    Réponses: 38
    Dernier message: 22/04/2015, 17h44
  2. projet de bataille navale
    Par tropicthunder dans le forum Général Python
    Réponses: 1
    Dernier message: 22/04/2015, 17h26
  3. Bataille navale projet
    Par lorli911 dans le forum Général Python
    Réponses: 2
    Dernier message: 01/04/2015, 16h44
  4. Projet de bataille navale
    Par hichamtimberlake dans le forum C
    Réponses: 1
    Dernier message: 23/05/2009, 14h22
  5. [LG]Programme Bataille Navale en Pascal
    Par RaFaL dans le forum Langage
    Réponses: 21
    Dernier message: 10/06/2003, 22h22

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