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

Collection et Stream Java Discussion :

Dessiner un tableau pour un morpion


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut Dessiner un tableau pour un morpion
    Bonjour ,

    J'aimerai réaliser un jeu de morpion.Ma question concerne l'affichage comment réaliser un affichage simple en mode texte.

    Concrètement comment je dessine un tableau de x lignes et y colonnes.En sachant que j'ai besoin de connaitre les coordonnées de chaque case.
    J'ai bien demander à la prof mais elle m'a expliqué ça du genre c'est trop simple et comme j'ai pas voulu passer pour un *** j'ai pas insisté.

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 25
    Points
    25
    Par défaut
    Bonjour,
    Sais tu faire une matrice ?

  3. #3
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour,

    Peut être en faisant quelque chose de ce style :

    o|x|o
    -----
    x|o|x
    -----
    o|x|o

    Tu peux stocker ton morpion dans un tableau à 2 dimensions et là au moins 2 possibilités :

    1°) Tu stocke les o et les x uniquement (donc 3 lignes et 3 colonnes), et c'est à l'affichage que tu rajoutes les barres pour faire un aspect visuel "morpion". (préférable je pense)

    2°) Tu stocke les o, les x et le graphique (donc 5 lignes et 5 colonnes), les o et les x sont dans les cases paires (0, 2 et 4) et les cases impaires pour les | et - et tu ne te pose pas de question pour l'affichage.

  4. #4
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Le modèle capturant l'état du jeu doit être indépendant de sa représentation. La proposition 1 que tu fais est donc la meilleure

    Pitié, ne pas stocker des chaînes ou des caractères dans la matrice, passer un type énuméré...

    Pour la représentation tu as deux choix:

    - le facile, qui est envisageable si la matrice est de faible dimension (3/4²). Se reposer sur des JButon pour matérialiser les cases, et utiliser le caption du bouton pour afficher 'o' ou 'x' ou rien. C'est facile a instancier, facile à organiser dans la vue ; tu as une marge de manœuvre dans la cosmétique et en prime tu as un mécanisme évènementiel prêt à l'emploi.

    - le moins facile qui consiste à te taper le graphique à la mano comme un grand à coup de primitives graphiques et à traiter comme un grand les clicks dans la vue. L'intérêt est que tu as une totale liberté dans l'affichage et permet d'envisager également des animations... Une bibliothèque supplémentaire peut-être envisagée style (http://sourceforge.net/projects/sprite2d/).

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut
    Merci pour les réponses ,
    Je vais tester tout ça ce soir

  6. #6
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Posons une matrice "morpion" m*n et écrivons la en sortie console...

    (on suppose que son contenu est 1 pour les rond , 2 pour les x et autre chose pour les espaces [rien ] ), on obtient un code qui vaut ça à peu pres (aux erreurs de syntaxe pres bien sûr parce que sans compilateur c'est super dur !)

    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
    void ecrireMorpion ()
    {
    // on suppose que morpion est une variable de la classe sinon faut la passer 
    //en argument
    // m, n voire ligne tiret peuvent être calculés ailleurs et pas à chaque boucle 
    //ca serait mieux
    int m = morpion.length();
    int n = morpion[0].length();
     
    String lignetiret ="";
    for (int j =0; j<2*n-1;j++) // la ligne de tirets contient 2*n -1 éléments 
       lignetiret+="-";
     
    for (int i = 0; i< m; i++)
      {
      for (int j=0; j<n;j++) 
        {
        String temp=" ";
        if(morpion[i][j]==1 ) 
            {
            temp="O";
            }
           else if (morpion[i][j]==2) 
                    {
                    temp ="X" ;
                    }
          System.out.print(temp );// print SANS LN 
          if(j!= n-1)  // pas de "|" apres le dernier element de la colonne
               // print SANS LN 
               System.out.print("|");
          } //fin du for j
     
         if(i!= m-1) // pas de ligne de tiret apres la derniere ligne 
            //print AVEC LN
             System.out.println(lignetiret);
        }// fin du for i 
    }

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 354
    Points : 134
    Points
    134
    Par défaut
    Merci beaucoup pour le code,
    pour l'instant je galère sur les matrices je ne savais pas que c'était aussi compliqué un tableau à deux dimensions.
    J'en suis venu à déclaré deux tableaux dans une double boucle dont voici le code
    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
     
       // Les attributs
        String [][]tab ;
        String tab3[] = {"A","B","C","D","E"} ; 
        String [] tab1 ;
        String [] tab2 ;
     
        // Le constructeur
        public TableauJeu()
        {
            tab1 = new String[5] ;
            tab2 = new String[5] ;
             /*tab2 = new String[5] ; */
     
            for (int i =0;i<5;i++)
            System.out.print("| " +tab3[i]) ;
            for(int i=0 ;i<5 ;i++ )
            {
                for(int j=0;j<5;j++)
                {  
     
                tab1[j] ="| " ;
                System.out.print(tab1[j]) ;
                }
                tab2[i]="| ";
                System.out.println(tab2[i]) ;
        }
        }
    Mes questions sont :
    est ce une méthode valable , y a t il d'autres solutions plus simples,
    dans mon exemple qelles sont les lignes et les colonnes i ou j ?

    Merci d'avance

  8. #8
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    2 tableaux à 1 dimension ne sont pas du tout l'équivalent d'une matrice à 2 dimensions ....
    Matrice :
    12345
    1 *****
    2 *****
    3 *****
    4 *****
    5 *****
    soit donc 25 éléments ...
    tableau 1 = 5 élements
    tableau 2 = 5 éléments .... il en manque ....

  9. #9
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Je reviens mettre mon petit grain de sel.

    Ta méthode pourrait être valable, mais la solution du tableau à 2 dimensions de miloux32 est beaucoup plus simple et grandement conseillée si tu veux continuer d'apprendre Java.

    Pour ton exemple, le print signifie que tu ne vas pas à la ligne, donc tous tes j sont sur la même ligne.
    Et tu vas à la ligne avec le println, cela te permet de faire une nouvelle ligne.

    Je te conseille de réétudier l'exemple de miloux32.

    Pour mieux comprendre, tu peux initialiser son code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int [][]morpion = new int[5][5] ;
    int tab3[] = {1,2,0,2,1} ; 
     
    morpion[0]=tab3; 
    morpion[1]=tab3;
    morpion[2]=tab3;
    morpion[3]=tab3;
    morpion[4]=tab3;
    Et en corrigeant les length() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int m = morpion.length;
    int n = morpion[0].length;
    Et en ajoutant un saut de ligne avant la ligne de tiret :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(i!= m-1) {// pas de ligne de tiret apres la derniere ligne 
    		        //print AVEC LN
    		    	 System.out.println();
    		         System.out.println(lignetiret);
    		     }
    Cela te permettra de mieux comprendre le code, et ensuite il te suffira d'initialiser ta variable morpion comme tu veux, selon les choix des joueurs (mais ça c'est une autre histoire).

Discussions similaires

  1. petit probleme pour dessiner un tableau
    Par fleurrouge dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/12/2012, 11h22
  2. [HTML] Tableau pour l'enregistrement des données
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 01/11/2005, 15h28
  3. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21
  4. dessiner un tableau dans WORD?
    Par sali dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/01/2005, 14h11
  5. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38

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