Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1629 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Damier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Damier

n°2243779
debutante4​2
Posté le 23-11-2014 à 18:25:38  profilanswer
 

Bonsoir,
 
Je n'ai pas compris ce qu'il faut faire.  
Comment dessiner un damier. On doit remplir ce code. Je dois remplir la fonction drawCheck (les autres ce n'est pas moi qui l'es fait)  
 
Voici l'énoncé:  
 
remplir la méthode drawCheck de façon à ce qu'elle dessine un damier de n cases de côté, où n est le paramètre de drawCheck.
 
Le code de l'énoncé:
 

Code :
  1. import java.io.*;
  2. import java.io.File;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.Color;
  6. import java.awt.image.BufferedImage;
  7. import javax.swing.JFrame;
  8. import javax.swing.JPanel;
  9. import javax.swing.SwingUtilities;
  10. import javax.imageio.ImageIO;
  11. class Drawing {
  12.     void drawCheck(int n) {
  13.        
  14.         for(int i=0; i<n; i++){
  15.             for(int j=0; j<n; j++){
  16.                
  17.                 if ((i + j) % 2 == 0) {
  18.                     graphics.setColor(Color.black);
  19.                 } else {
  20.                     graphics.setColor(Color.white);
  21.                 }
  22.             }   
  23.                
  24.              
  25.     }
  26.  
  27.     void setWhite() {
  28.         graphics.setColor(Color.white);
  29.     }
  30.  
  31.     void setBlack() {
  32.         graphics.setColor(Color.black);
  33.     }
  34.  
  35.     void drawSquare(int x, int y, int len) {
  36.         graphics.fillRect(x, y, len, len);
  37.     }
  38.     int size;
  39.     Graphics graphics;
  40.     public Drawing (int n) {
  41.         size = n;
  42.     }
  43.     public void draw(Graphics2D g) {
  44.         graphics = g;
  45.         drawCheck(size);
  46.     }
  47. }
  48. class Picture extends JFrame {
  49.     class Surface extends JPanel {
  50.         private Drawing drawing;
  51.         public Surface (Drawing d) {
  52.             drawing = d;
  53.         }
  54.         public void paintComponent (Graphics g) {
  55.             Graphics2D g2d = (Graphics2D) g;
  56.             super.paintComponent(g);
  57.             drawing.draw(g2d);
  58.         }
  59.     }
  60.     public Picture (String name, int width, int height) {
  61.         setSize(width, height);
  62.         setTitle(name);
  63.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  64.         setLocationRelativeTo(null);
  65.     }
  66.     public void draw(Drawing d) {
  67.         add(new Surface(d));
  68.         Runnable r = new Runnable() {
  69.             public void run() {
  70.                 setVisible(true);
  71.             }
  72.         };
  73.         SwingUtilities.invokeLater(r);
  74.     }
  75. }
  76. class Checkboard {
  77.     public static void main(String[] args) {
  78.         Picture picture8 = new Picture ("Checkboard8", 600, 600);
  79.         Drawing drawing8 = new Drawing (10);
  80.         picture8.draw(drawing8);
  81.         Picture picture60 = new Picture ("Checkboard60", 600, 600);
  82.         Drawing drawing60 = new Drawing (60);
  83.         picture60.draw(drawing60);
  84.     }
  85. }


 
Merci d'avance
Bonne soirée
 
 

mood
Publicité
Posté le 23-11-2014 à 18:25:38  profilanswer
 

n°2243792
lasnoufle
La seule et unique!
Posté le 23-11-2014 à 21:30:39  profilanswer
 

Salut
 
Juste par curiosite, c'est quoi le contexte?
 
Le code que tu montres est tellement mal ecrit que je doute que ca soit vraiment un enonce.
 
Dans tous les cas, il ne manque qu'une seule ligne a ton code pour que ca fasse ce que tu veux (et il manque aussi une accolade fermante dans drawCheck(), ton code tel quel ne compile pas), et c'est vraiment elementaire. C'est pour ca que je demande le contexte. Histoire de savoir si tu es interessee par la programmation, si tu veux essayer de comprendre et de trouver par toi-meme, auquel cas on peut essayer de donner des indices, ou alors si tu t'en bats les steacks et veux juste la reponse.
 
A+


---------------
C'était vraiment très intéressant.
n°2243795
debutante4​2
Posté le 23-11-2014 à 22:27:28  profilanswer
 

oui je suis intéressée par la programmation. Oui je sais il ne compile pas. J'aimerai avoir des indices pas la réponse.  :pfff:

n°2243796
Bidem
Posté le 23-11-2014 à 23:16:04  profilanswer
 

Dessiner un damier de côté n se résume à dessiner n² carrés blanc et noirs en alternance.
 
L'alternance est déjà gérée par la méthode drawCheck (grâce au modulo).
 
Ce qu'il te reste à faire c'est pour chaque itération dessiner un carré à l'aide de drawSquare.
 
Donc pour chaque i et j tu dois calculer x et y, les coordonnées du coin supérieur gauche de ton carré (Cf. javadoc drawReeec)


Message édité par Bidem le 23-11-2014 à 23:16:34
n°2243798
lasnoufle
La seule et unique!
Posté le 23-11-2014 à 23:46:49  profilanswer
 

debutante42 a écrit :

oui je suis intéressée par la programmation. Oui je sais il ne compile pas. J'aimerai avoir des indices pas la réponse.  :pfff:


Bah tu sais on a different types de personnes qui demandent donc autant etre sur de ce qu'ils cherchent.
 
Alors deja pour la compilation, voici ton code original:

void drawCheck(int n) {
       
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
               
                if ((i + j) % 2 == 0) {
                    graphics.setColor(Color.black);
                } else {
                    graphics.setColor(Color.white);
                }
            }    
               
             
    }

Si tu fais attention, tu verras que ta premiere boucle for() n'a pas d'accolade fermante, c'est ca ton erreur de syntaxe. Normalement si tu l'ajoutes ca devrait compiler, mais evidemment il ne se passera rien a l'execution.
 
Maintenant pour le damier. A voir ton code, je suppose que l'algo que tu veux faire ressemble a ca:

- Pour chaque case:
1/ Determiner la couleur
2/ Dessiner un carre de cette couleur, au bon endroit

Tu fais deja le parcours de toutes les cases, et la determination de la couleur. Donc tout ce qu'il te reste a faire c'est le dessin du carre:

void drawCheck(int n) {
       
        // Parcours de toutes les cases
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
               
                // 1: determination de la couleur
                if ((i + j) % 2 == 0) {
                    graphics.setColor(Color.black);
                } else {
                    graphics.setColor(Color.white);
                }
 
                // 2: dessin du rectangle
                <Insere le code pour dessiner le carre ici>
            }    
        }
             
    }

Maintenant les indices supplementaires, a reveler un par un si tu bloques toujours apres chaque:

Spoiler :

Tu as deja une methode dans ta classe qui dessine un carre

Spoiler :

Il s'agit de drawSquare(int x, int y, int len)

Spoiler :

Je disais que le code etait mal ecrit, la methode drawSquare en est un exemple: elle n'est pas commentee, donc comment savoir quels arguments lui passer? Trois manieres de trouver:
- regarder la doc Java pour graphics.fillRect() et en deduire ce que sont les parametres de drawSquare()
- se demander de quels elements on a besoin pour dessiner un carre en general, et regarder si ca correspond a ce que drawSquare() demande
- passer des valeurs au pif et regarder ce que ca donne quand on lance le programme

Spoiler :

Les arguments a lui passer sont:
- (x,y): coordonnees (en pixels) dans la fenetre du coin du carre
- len: longueur (en pixel) du cote du carre

Spoiler :

(x,y) correspondent a tes variables (i,j), mais "ajustees" de la longueur de cote de tes carres, autrement dit, x = i*longueur et y = j*longueur

Spoiler :

Appel a utiliser pour un damier avec des cases de 20 pixels de cote: drawSquare(i*20, j*20, 20);


A+


---------------
C'était vraiment très intéressant.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Damier

 

Sujets relatifs
Damier sur pythonC++ : Jeu Damier (aide)
Plus de sujets relatifs à : Damier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR