Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exos de zeros

Apprenez à programmer en suivant des règles

    17 avril 2009 à 20:34:45

    Je suis plutôt d'accord avec Dalshim. Je viens de faire un tirage avec 3 fois le nombre 100 et deux fois le nombre 55. Pas génial tout ça.
    Je l'ai implémenté correctement vu que j'ai même intégré un testeur de valeurs : je vérifie bien si mes variables suivent les lois de probabilités données.

    Par ailleurs à cette question 2, il n'est pas précisé si la sortie de chaque nombre est équiprobable ou non. J'ai supposé oui bien entendu...

    Pour la question 3 :

    Citation : ExoJava

    3e chiffre:
    - entre 0 et 9 (si le 1er chiffre est 0 et 2e chiffre est 0)


    Comme le 0 n'entre pas dans les nombres possibles, il faudrait plutôt mettre "-entre 1 et 9"

    Enfin je ne pense pas faire la question 5 étant donné que je n'ai qu'un PC chez moi et que j'ignore comment fonctionne un réseau.


    Malgré ça tous les tirages que j'effectue ne sont vraiment pas top top, je préfèrerais de loin les règles officielles du jeu.

    Pour les futurs exos je suggèrerais bien des jeux de réflexion classiques... Les tours de Hanoï, le taquin, un puissance 4 (ou 5), un mastermind (algorithme sympa à chercher pour l'IA). Ou reprendre l'idée de la génération de labyrinthes lancée y'a pas très longtemps sur le sdz, ou sur la cryptographie... :)
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2009 à 21:40:16

      Suite Au remarque de certains il s'avère que les valeurs obtenues dans la liste de choix ne sont pas top.
      Je révise un peu la question 2:

      Les nombres seront composé de 3 chiffres pris comme suit:
      1er chiffre: entre 0 et 1 (avec prob(1)=1/10 ; prob(0)=9/10)
      2e chiffre: entre 0 et 9 (
      0 si 1er chiffre est 1 ,si le 1er chiffre est 0 alors 0,2,5,7 avec (2,5,7) ayant un proba égale au double de celle de(1,3,4,6,8,9) et (0) ayant une proba égale au double de celle de (2,5,7) )
      3e chiffre:
      - entre 1 et 9 (si le 1er chiffre est 0 et 2e chiffre est 0)
      - 0 ou 5 (si le 1er chiffre est 0 et 2e chiffre différent de 0)
      - 0 (si le 1er chiffre est 1)

      Avec ces règles j'obtiens les resultats suivant pour 20 tirages successifs.

      20  90  75  50  6  75  55
      
        20  30  100  95  8  8  25
      
        80  40  30  15  25  40  60
      
        80  70  100  100  50  75  25
      
        55  30  4  9  45  55  100
      
        25  4  95  60  80  100  40
      
        20  45  15  90  85  2  95
      
        3  25  4  80  7  80  30
      
        70  80  100  20  3  50  30
      
        90  95  75  100  15  95  40
      
        55  20  100  6  2  80  65
      
        100  45  55  80  100  20  100
      
        40  3  75  45  85  20  9
      
        60  45  80  60  3  25  25
      
        100  50  15  80  80  2  80
      
        55  6  7  85  70  100  35
      
        50  10  60  75  85  9  90
      
        85  3  2  65  55  20  25
      
        2  2  30  2  20  60  9
      
        5  60  100  70  70  65  2


      Vous remarquerez que ces resultats sont traitables, alors bonne chance.
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2009 à 18:59:18

        Je trouve les résultats peu exploitable par manque de petit chiffre et une abondance de grand nombre, mais bon, on s'en fiche un peu, la n'est pas le but de l'exercice.

        Sinon, est ce que les performances des algorithmes seront mesurées par quelqu'un (auquel cas, les performances seraient mesurée sans l'IHM), si oui, est ce qu'il y a une façon standard dans laquelle il faudrait affiché le résultat dans un tel contexte ?
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2009 à 19:11:18

          Pour la question 3, il est préférable d'afficher au moins le temps d'exécution du problème. (en mode graphique ou en console).

          Bien que ce ne sera pas très utile pour les corrections, vu que les valeurs sont aléatoires et la durée dépend des valeur.
          Le correcteur vas analyser la complexité de l'algorithme utilisé.
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.
            20 avril 2009 à 22:10:03

            Il suffit de créer le générateur de nombre aléatoire à partir d'un seed qui sera le même pour tous et de comparer les résultats. Sinon, il suffit de rajouter les méthodes pour une résolution du problème avec des valeurs données par l'utilisateur.
            • Partager sur Facebook
            • Partager sur Twitter
              22 avril 2009 à 10:26:15

              Vous ne pensez pas que ça vaudrait le coup de créer un topic pour que chacun présente son algorithme ?

              Personnellement, je suis sur le point de finir l'optimisation de mon algorithme de recherche en profondeur et vais m'attaquer à celui en largeur (plus rapide et efficace), mais je suis curieux de voir comment les autres zéros on appréhendez le problèmes et quels algorithme ils ont trouver. En plus, il est très possible que les algo que l'on fait soit incorecte et ne fonctionnent pas dans certains cas limites. Vous en pensez quoi ?
              • Partager sur Facebook
              • Partager sur Twitter
                22 avril 2009 à 10:33:07

                Je pense que c'est une bonne idée, en plus j'en suis certain il y'aura plusieurs algo qui ne marcheront pas, ou qui mettront trop de temps !
                Vu que ce n'est pas interdit de créer un topic pour en savoir plus, vaudrait mieux le faire si on a des doutes, ou si l'on pense etre sur la mauvaise voie.
                mais aucune reponse ne doit etre donnée (donner la logique de raisonnement n'est pas donner une reponse).

                Bon courage à tous, et surtout eviter les algo a complexité factorielle.
                • Partager sur Facebook
                • Partager sur Twitter
                J'ai tous les badges d'OpenClassrooms.
                  22 avril 2009 à 11:16:47

                  Ah, moi je pensais surtout à montrer le code source de son algo. Si quelqu'un le prend pour faire son projet et n'apprend rien, j'ai envie de dire que c'est son problème, il n'y a rien a gagner de toutes manière.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 avril 2009 à 12:48:51

                    mhh c'est moi ou cet exercice ne nécessite pas vraiment de réfléchir en POO
                    enfin j'vais l'essayer quand même =p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 avril 2009 à 22:00:55

                      Bon ben moi j'ai abandonné cette idée car les tirages n'étaient pas géniaux, et l'algorithme pas très intéressant.

                      Enfin quoiqu'il en soit, ce post est pour proposer comme prochain exercice la réalisation d'un jeu de Taquin avec résolution automatique. Les algorithmes possibles me semblent déjà un peu plus sympa à creuser.
                      Après c'est sûr qu'au niveau de la POO, elle sera très peu présente pour la réalisation de minis jeux comme ça...
                      Pour la partie réseau, je pense qu'ici il y'a maximum une personne qui l'a essayé. Je ne suis pas certain que ce soit très attractif en fait. Bien que je n'y connaisse pas grand chose, il me semble qu'avec un seul PC on ne peut rien tester n'est-ce pas ? L'intérêt est donc assez limité.

                      Enfin j'attends de voir ce que va donner la première correction et les impressions sur ce topic (nombre de participants, intérêt...).
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 avril 2009 à 9:36:43

                        Pour la partie réseau, c'est très simple de tester, tu lances deux fois ton programme et voilà. Ca ne change rien que tu n'es qu'un seul ordinateur. Je trouve dommage que vous trouviez la partie réseau inintéressante dans la mesure où c'est, à mon sens, la plus intéressante. Enorménent d'appli sont maintenant basées sur une composante réseau (non, pas que les jeux).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 avril 2009 à 11:25:05

                          je ne trouve pas la partie réseau inintéressante non plus!
                          mais je pense qu'un autre projet serait plus adapté.

                          bien moi je propose d'ouvrir un autre sujet de discussion pour ne pas encombrer un sujet en post it ...

                          http://www.siteduzero.com/forum-83-396 [...] scussion.html
                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 avril 2009 à 1:42:54

                            Je rappelle à tous que la date de cloture de l'exo 1 est le 30 avril 2009.
                            Bonne chance à tous
                            • Partager sur Facebook
                            • Partager sur Twitter
                            J'ai tous les badges d'OpenClassrooms.
                              1 mai 2009 à 14:02:43

                              La correction n'est valable que pour ceux qui on envoyés des propositions , sinon pas d'intéret
                              • Partager sur Facebook
                              • Partager sur Twitter
                              J'ai tous les badges d'OpenClassrooms.
                                1 mai 2009 à 14:06:02

                                Ce soir
                                • Partager sur Facebook
                                • Partager sur Twitter
                                J'ai tous les badges d'OpenClassrooms.
                                  1 mai 2009 à 20:10:21

                                  Citation : Snooooopy

                                  je ne trouve pas la partie réseau inintéressante non plus!
                                  mais je pense qu'un autre projet serait plus adapté.

                                  bien moi je propose d'ouvrir un autre sujet de discussion pour ne pas encombrer un sujet en post it ...

                                  http://www.siteduzero.com/forum-83-396 [...] scussion.html

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 mai 2009 à 10:54:12

                                    Exercice du mois de Juin
                                    Titre : Un éditeur pas comme les autres
                                    Thème : Réseau, Graphique, Expressions régulières, POO

                                    But: L'objectif ici est de réaliser un éditeur de programme pour tous les langages qui existent et même qui n'existent pas encore ;) . On a déjà vu pas mal d'éditeur qui font cela et qui sont bien performant, mais la difficulté ici sera de pouvoir convertir au mieux un programme simple d'un langage en un autre, et aussi de pouvoir compiler ce programme sur un pc qui n'a pas forcément le compilateur requis.

                                    Histoire: On a tous été confronté un jour a l'erreur de lancement d'éclipse qui informent qu'il ne peux pas se lancer si l'on a pas la jdk qu'il lui faut.
                                    On a tous déjà écrit un programme en C, et l'on s'est demandé je veux qu'il soit maintenant en Java, Caml, Python, etc.

                                    Alors on va tous réaliser nos rêves. :D

                                    Cahier de charges :

                                    Question 1: Écrire un éditeur tout simple qui permette de colorier le code source pendant la frappe selon le langage que l'on a choisi.
                                    (je précise que le programme ne doit pas faire recours a un sgbd).


                                    Question 2: Permettre à un programme simple (en mode console) écris dans un langage de pouvoir être converti dans un autre (qui n'a jamais rêvé de ça ? :p ).


                                    Question 3: Écrire une partie du programme serveur qui se contentera d'exécuter le code que lui aura fourni le client et ainsi de retourner le résultat de la compilation au client.


                                    Ces trois question valent largement le mois de juin. :euh: pour les jeunes développeurs qui souhaitent apprendre encore et encore.

                                    Des question ou des remarques ? j'ai ouvert un sujet Par ici pour en discuter.

                                    Bonne chance a tous.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 juin 2009 à 17:20:13

                                      Çà serait quand même bien d'avoir les sources "correction", pour pouvoir par exemple faire les exercices après leur fin !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 juin 2009 à 17:23:47

                                        Citation : L@o58

                                        Çà serait quand même bien d'avoir les sources "correction", pour pouvoir par exemple faire les exercices après leur fin !



                                        Et c'est quoi l'intéret , l'expérience a montré qu'avec les sources on ne veux plus se casser la tête a reflechir. Donc je pense qu'il serait préférable que les corrections s'adresse au moins a ceux qui ont fait quelque chose et ont ou n'ont pas réussis.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        J'ai tous les badges d'OpenClassrooms.
                                          29 juin 2009 à 17:29:55

                                          Et si l'on n'a pas le temps de faire un exercice dans le mois et que l'on aimerait le faire le mois suivant, l'on n'a pas droit aux corrections ? Ou alors on peut envoyer après la fin de l'exercice ?

                                          Et si quelqu'un aimerait par exemple simplement avoir l'éditeur et se fichait de devoir se casser la tête, il devrait envoyer un programme pour la forme juste pour récupérer la correction ? Et donc la messagerie privée d' ExoJava se retrouverait surchargée de "rien-du-tout". Laisses donc les paresseux paresser dans leur coin, et tant pis pour eux après-tout !

                                          Par exemple, je viens de revenir sur le Java, et j'aimerais bien faire l'exercice "les chiffres sans les lettres". Mais comment puis-je faire ? Sans correction ? Je ne pourrais pas savoir, par exemple, si mon programme ne pourrait pas être plus optimisé ...

                                          Bref, voilà le fond de ma pensée.

                                          L@o58/Leows
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            2 juillet 2009 à 9:48:34

                                            Exercice du mois de Juillet

                                            Titre : Le meilleur Joueur

                                            Thème : Algorithmique, Graphisme, Thread, POO, IA

                                            But: L'objectif ici est de créer des instances de joueurs autonomes qui seront positionné sur une surface ( stade ), et auront un comportement particulier selon la position de ses leurs coequippiers, ou encore selon la balle de jeu.

                                            Cahier de charges :
                                            Nous partirons de la base suivante :
                                            public class Joueur implements Runnable {
                                               private final int X; // abscisse d'origine du joueur
                                               private final int Y; // ordonnée d'origine du joueur
                                               private int numero; // dossard du joueur
                                               private String equipe; // nom de l'équipe
                                               private String nom; // nom du joueur
                                               private String prenom; // prenom du joueur
                                               private int rayon_a_vide; // rayon maximal autour duquel peux se déplacer le joueur
                                               private int longueur_pas; // longueur du pas du joueur
                                               private double vitesse; // vitesse du joueur (m/s)
                                               private boolean etat; // avec ou sans balle
                                               private int Coord_X; // position en abscisse du joueur
                                               private int Coord_Y; // position en ordonnée du joueur
                                               private int rayon_reaction; // rayon autour duquel le joueur peut se déplacer hors de son périmètre a vide pour essayer d'aller chercher la balle
                                               private int rayon_decision; // rayon tel que s'il existe un joueur adversaire a l'intérieur le joueur doit prendre une decision (continuer balle au pied ou passer le ballon).
                                            }
                                            

                                            Question 0:
                                            Créer les classes relatives au terrain de jeu (terrain de votre choix football, basketball, hand, ...) et a la balle.
                                            Ansi que les méthode d'affichage des joeurs, du terrain et de la balle.

                                            Question 1:
                                            Complétez la classe joueur en y ajoutant la méthode de déplacement du joueur.

                                            Question 2:
                                            On sait que lorsqu'un joueur est sans balle, il doit etre dans sa circonférence a vide, et se positionner le plus près possible de la balle, implémentez cette méthode .

                                            Question 3:
                                            Un joueur qui est sorti de sa circonférence à vide et a soit perdu la balle soit la balle ne se trouve plus dans son rayon de réaction doit revenir progressivement (selon sa vitesse et son pas) dans son périmètre à vide, implémentez cette méthode.

                                            Question 4:
                                            Lorsqu'un joueur voit une balle dans son rayon de réaction et que la balle n'est pas dans les pieds de l'adversaire (l'adversaire a fait une passe) le joueur cherche à se positionner sur la trajectoire de la balle, implémentez cette méthode .

                                            Question 5:
                                            Lorsque l'adversaire à la balle et que l'on est face à lui on essaie de lui prendre la balle, implémentez cette méthode .

                                            Question 6:
                                            Lorsqu'un joueur à la balle il doit faire un choix (courir avec / faire une passe), ce choix est aléatoire, ensuite s'il choisi de faire une passe il doit choisir un des quatre joueurs autour de lui (choix aléatoire), s'il choisi de faire une course il doit prendre la meilleure direction (vers l'avant, et le plus loin possible des autres adversaires), implémentez cette méthode.

                                            Question 7:
                                            Devant un face a face, celui qui n'a pas de balle prend toujours la balle à l'autre (sans vouloir vous faire gérer les niveaux de puissance). Lorsque l'adversaire prend la balle le joueur se retrouve derrière l'adversaire .


                                            Je sais que les exercices ne sont pas du tout évidents pour les débutants, je crée donc un topic par ici pour en discuter.

                                            Bonne chance a tous.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              28 juillet 2009 à 20:09:55

                                              Citation : L@o58

                                              Çà serait quand même bien d'avoir les sources "correction", pour pouvoir par exemple faire les exercices après leur fin !



                                              Je suis d'accord.

                                              Personnellement ça faisait longtemps que je voulais essayer de faire un éditeur du genre et malgré plusieurs tentatives je n'ai jamais réussi. En ce moment je n'ai vraiment pas de temps pour m'y remettre, c'est pourquoi obtenir les sources pour au moins comprendre le fonctionnement serait bienvenue :) .
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                1 août 2009 à 23:49:24

                                                Exercice du mois d'aout

                                                Titre: La boule au fond.

                                                Thème : Algorithmique, Graphique, POO, Thread

                                                But: L'objectif est de réaliser un jeu de billard tout simple. Le programme devra être capable de simuler les mouvements de plusieurs boules placées sur une table de jeu.

                                                Cahier de charges:

                                                :waw: Comment vais-je reussir à faire un jeu de billard tout seul ? je suis encore débutant !

                                                pas de souci, je vous est préparé le terrain !

                                                Comme on pouvait le penser, une classe boule.


                                                import java.awt.Color;
                                                import java.awt.Graphics;
                                                
                                                /*
                                                 * Classe qui permet de modéliser une boule
                                                 * elle pourra se déplacer, rebondir sur une autre boule, ou sur le bord d'une table
                                                 */
                                                
                                                /**
                                                 *
                                                 * @author ExoJava
                                                 */
                                                public class Boule implements Runnable{
                                                
                                                    private double x; // abscisse de la boule
                                                    private double y; // ordonnée de la boule
                                                    private String valeur; // valeur écrite sur la boule
                                                    private Color couleur; // couleur de la boule
                                                    private boolean conductrice=false; // vrai si il s'agit de la boule blanche
                                                    public final static int rayon=20; // rayon général de chaque boule
                                                
                                                
                                                    public Boule(double x, double y, String valeur, Color couleur) {
                                                        this.x = x;
                                                        this.y = y;
                                                        this.valeur = valeur;
                                                        this.couleur = couleur;
                                                    }
                                                
                                                    public Boule(double x, double y, String valeur) {
                                                        this.x = x;
                                                        this.y = y;
                                                        this.valeur = valeur;
                                                    }
                                                
                                                    
                                                    public void run() {
                                                        
                                                    }
                                                
                                                    public String getValeur() {
                                                        return valeur;
                                                    }
                                                
                                                    public void setValeur(String valeur) {
                                                        this.valeur = valeur;
                                                    }
                                                
                                                    public int getX() {
                                                        return (int)x;
                                                    }
                                                
                                                    public void setX(double x) {
                                                        this.x = x;
                                                    }
                                                
                                                    public int getY() {
                                                        return (int)y;
                                                    }
                                                
                                                    public void setY(double y) {
                                                        this.y = y;
                                                    }
                                                
                                                    public boolean isConductrice() {
                                                        return conductrice;
                                                    }
                                                
                                                    public void setConductrice(boolean conductrice) {
                                                        this.conductrice = conductrice;
                                                    }
                                                
                                                    public Color getCouleur() {
                                                        return couleur;
                                                    }
                                                
                                                    public void setCouleur(Color couleur) {
                                                        this.couleur = couleur;
                                                    }
                                                
                                                    /**
                                                     * Méthode qui permet d'afficher une boule en fonction de ses coordonnées
                                                     * @param g instance de graphics permettant d'afficher la boule
                                                     */
                                                    public void Affiche(Graphics g)
                                                    {
                                                        g.setColor(getCouleur());
                                                        g.fillOval(getX()-rayon,getY()-rayon, rayon*2,rayon*2);
                                                
                                                        if(getValeur()!=null)
                                                        {
                                                            g.setColor(Color.WHITE);
                                                            g.fillOval(getX()-(rayon/2),getY()-(rayon/2), rayon,rayon);
                                                            g.setColor(Color.BLACK);
                                                            if(getValeur()!=null) g.drawString(getValeur(),getX()-(3*getValeur().length()),getY()+(3*getValeur().length()));
                                                        }
                                                    }
                                                }
                                                



                                                La classe baton

                                                import java.awt.Color;
                                                import java.awt.Graphics;
                                                
                                                /*
                                                 * Classe qui modélise le baton avec lequel on frappe la boule conductrice
                                                 */
                                                
                                                /**
                                                 *
                                                 * @author ExoJava
                                                 */
                                                public class Baton {
                                                    private int x1,x2,y1,y2; // coordonées du baton
                                                    private int taille; // taille du baton
                                                
                                                    public Baton(int x1, int x2, int y1, int y2, int taille) {
                                                        this.x1 = x1;
                                                        this.x2 = x2;
                                                        this.y1 = y1;
                                                        this.y2 = y2;
                                                        this.taille = taille;
                                                    }
                                                
                                                    public Baton(int x1, int y1) {
                                                        this.x1 = x1;
                                                        this.y1 = y1;
                                                        this.x2=x1-2;
                                                        this.y2=y1;
                                                    }
                                                
                                                    public Baton(int x1, int y1, int taille) {
                                                        this.x1 = x1;
                                                        this.y1 = y1;
                                                        this.x2=x1-2;
                                                        this.y2=y1;
                                                        this.taille = taille;
                                                    }
                                                
                                                    public int getTaille() {
                                                        return taille;
                                                    }
                                                
                                                    public void setTaille(int taille) {
                                                        this.taille = taille;
                                                    }
                                                
                                                    public int getX1() {
                                                        return x1;
                                                    }
                                                
                                                    public void setX1(int x1) {
                                                        this.x1 = x1;
                                                    }
                                                
                                                    public int getX2() {
                                                        return x2;
                                                    }
                                                
                                                    public void setX2(int x2) {
                                                        this.x2 = x2;
                                                    }
                                                
                                                    public int getY1() {
                                                        return y1;
                                                    }
                                                
                                                    public void setY1(int y1) {
                                                        this.y1 = y1;
                                                    }
                                                
                                                    public int getY2() {
                                                        return y2;
                                                    }
                                                
                                                    public void setY2(int y2) {
                                                        this.y2 = y2;
                                                    }
                                                
                                                    /**
                                                     * Méthode qui permet d'afficher le baton
                                                     * @param g instance de Graphics sur lequel on affiche le baton
                                                     */
                                                    public void Affiche(Graphics g)
                                                    {
                                                        g.setColor(Color.black);
                                                        //calculons le veritable x2 et y2
                                                        double x3,y3;
                                                        // pour cela on calcul la distance p1 à p2
                                                        double d12=Math.sqrt(Math.pow((x2-x1),2)+Math.pow((y2-y1),2));
                                                        double d13=getTaille();
                                                        // on utilisera ici la formule de thalès
                                                        x3=((d13/d12)*(x2-x1))+x1;
                                                        y3=((d13/d12)*(y2-y1))+y1;
                                                
                                                        // vous pourrez choisir de definir la forme de votre baton,
                                                        //soit en augmentant l'eppaiseur de la ligne, soit en desinnant un polygone
                                                        g.drawLine(x1, y1,(int) x3, (int) y3);
                                                    }
                                                
                                                }
                                                


                                                Une classe Tableau
                                                import java.awt.Color;
                                                import java.awt.Graphics;
                                                import java.util.ArrayList;
                                                
                                                
                                                /**
                                                 *
                                                 * @author Exojava
                                                 */
                                                public class Tableau {
                                                    private int X=50;
                                                    private int Y=50;
                                                    private final int largeur=800;
                                                    private final int hauteur=500;
                                                    private ArrayList<Boule> listeBoules; // liste des boules sur la table
                                                    private Baton bt; // baton
                                                    boolean enMvt=false; // vrai si il existe une boule de table en déplacement
                                                
                                                    public Tableau() {
                                                        listeBoules=new ArrayList<Boule>();
                                                        //boule blanche
                                                        getListeBoules().add(new boule(getX()+100,getY()+getHauteur()/2,null,Color.WHITE));
                                                        getListeBoules().get(0).setConductrice(true);
                                                        // baton
                                                        bt=new Baton(getListeBoules().get(0).getX(), getListeBoules().get(0).getY(), 100);
                                                        getListeBoules().add(new Boule(getX()+500,getY()+getHauteur()/2,"8",Color.BLACK));
                                                        getListeBoules().add(new Boule(getX()+550,getY()+getHauteur()/2-50,"3",Color.RED));
                                                        getListeBoules().add(new Boule(getX()+550,getY()+getHauteur()/2+50,"5",Color.YELLOW));
                                                        getListeBoules().add(new Boule(getX()+600,getY()+getHauteur()/2-100,"4",Color.BLUE));
                                                        getListeBoules().add(new Boule(getX()+600,getY()+getHauteur()/2+100,"6",Color.PINK));
                                                
                                                    }
                                                
                                                    public ArrayList<Boule> getListeBoules() {
                                                        return listeBoules;
                                                    }
                                                
                                                    public void setListeBoules(ArrayList<Boule> listeBoules) {
                                                        this.listeBoules = listeBoules;
                                                    }
                                                
                                                
                                                    public int getX() {
                                                        return X;
                                                    }
                                                
                                                    public int getY() {
                                                        return Y;
                                                    }
                                                
                                                    public int getHauteur() {
                                                        return hauteur;
                                                    }
                                                
                                                    public int getLargeur() {
                                                        return largeur;
                                                    }
                                                
                                                    /**
                                                     * Affiche la table de jeu
                                                     * @param g instance de l'objet graphics
                                                     */
                                                    public void Affiche(Graphics g)
                                                    {
                                                        // dessine la table
                                                        g.setColor(Color.PINK);
                                                        g.fillRoundRect(X-5, Y-5, largeur+10,hauteur+10,20,20);
                                                        g.setColor(Color.GREEN);
                                                        g.fillRoundRect(X, Y, largeur,hauteur,20,20);
                                                
                                                        g.setColor(Color.BLACK);
                                                        g.drawRoundRect(X-5, Y-5, largeur+10,hauteur+10,20,20);
                                                        g.setColor(Color.WHITE);
                                                        g.drawRoundRect(X, Y, largeur,hauteur,20,20);
                                                
                                                        // dessine toute les boules
                                                        for(int i=0;i<getListeBoules().size();i++)
                                                        {
                                                            getListeBoules().get(i).Affiche(g);
                                                        }
                                                
                                                        // dessine le baton
                                                        bt.Affiche(g);
                                                    }
                                                
                                                    public Baton getBt() {
                                                        return bt;
                                                    }
                                                
                                                    public void setBt(Baton bt) {
                                                        this.bt = bt;
                                                    }
                                                
                                                    
                                                }
                                                


                                                Une classe de test

                                                import java.awt.Graphics;
                                                import java.awt.event.MouseEvent;
                                                import java.awt.event.MouseListener;
                                                import java.awt.event.MouseMotionListener;
                                                import java.util.ArrayList;
                                                import javax.swing.JFrame;
                                                import javax.swing.JPanel;
                                                
                                                /**
                                                 *
                                                 * @author ExoJava
                                                 */
                                                public class Panneau extends JPanel implements MouseListener, MouseMotionListener {
                                                
                                                    Tableau stade;
                                                    // constructeur
                                                
                                                    public Panneau() {
                                                        stade = new Tableau();
                                                        addMouseListener(this);
                                                        addMouseMotionListener(this);
                                                
                                                    }
                                                
                                                    public void mouseDragged(MouseEvent e) {
                                                
                                                    }
                                                
                                                    public void mouseMoved(MouseEvent e) {
                                                        stade.getBt().setX2(e.getX());
                                                        stade.getBt().setY2(e.getY());
                                                    }
                                                
                                                
                                                    public void mouseClicked(MouseEvent e) {
                                                        if(!stade.enMvt)
                                                        {
                                                            Thread run=new Thread(stade.getListeBoules().get(0));
                                                            run.start();
                                                        }
                                                    }
                                                
                                                    public void mouseEntered(MouseEvent e) {
                                                
                                                    }
                                                
                                                    public void mouseExited(MouseEvent e) {
                                                
                                                    }
                                                
                                                    public void mousePressed(MouseEvent e) {
                                                
                                                    }
                                                
                                                    public void mouseReleased(MouseEvent e) {
                                                
                                                    }
                                                
                                                
                                                    @Override
                                                    protected void paintComponent(Graphics g) {
                                                        super.paintComponent(g);
                                                        stade.Affiche(g);
                                                    }
                                                
                                                    // main
                                                    public static void main(String[] args) {
                                                        JFrame jf = new JFrame("Fenetre");
                                                        jf.setSize(900, 700);
                                                        jf.add(new Panneau());
                                                        jf.addWindowListener(new java.awt.event.WindowAdapter() {
                                                
                                                            public void windowClosing(java.awt.event.WindowEvent e) {
                                                                System.exit(0);
                                                            }
                                                        });
                                                        jf.setVisible(true);
                                                        while (true) {
                                                            jf.repaint();
                                                            try {
                                                                Thread.sleep(100);
                                                            } catch (Exception e) {
                                                            }
                                                        }
                                                    }
                                                
                                                
                                                }
                                                


                                                Question 0 :
                                                Reprennez la base du programme et vérifiez qu'il marche chez vous :)

                                                Question 1 :
                                                Creez une classe Trou, et associez là a la classe Tableau. Une table doit avoir 6 trou. Implémentez les méthodes nécessaires afin que le trou puisse engloutir une boule, et compter le nombre de point. Si la boule conductrice est engloutie, il y'a perte de 4 points et les boules reviennent à l'état précédent le dernier coup.

                                                Question 2 :
                                                Lorsqu'un joueur clique sur sa souris pour lancer la boule, la puissance de lancement dépend du temps pendant lequel la souris à été appuyée sans relachement. Implémentez la gestion de cette puissance de tir (avec affichage d'une barre de progression pour indiquez au joueur).

                                                Question 3:
                                                Lorsque le joueur tire sur une boule elle suis la direction du baton, et en fonction de la puissqnce donnée, acquiert une certaine vitesse, qui décroit avec le temps (déclération) . Implémentez au mieux cette fonction.

                                                Question 4 :
                                                Lorsqu'une boule frappe une autre boule il y'a une transmission de mouvement et changement de sens venant des boules. Implémentez au mieux cette fonction.

                                                Question 5 :
                                                Ajouter la possibilité de pouvoir jouer à deux , sur un meme PC.

                                                Question 6 :
                                                Gerer les scores des joueurs, le numéro sur la boule représente la valeur acquise lors de la mise d'un trou correct.

                                                Alors, voila ce que vous avez à faire pour ce mois (un peu facile n'est ce pas ? :p ).
                                                Vous avez un mois pour le faire et vous avez un Topic pour en discutter.

                                                Bonne chance.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  5 août 2009 à 14:06:13

                                                  Bonjour,

                                                  il serait bon de poster la correction ici, en effet si on fait les exos après les dates butoir, on n'a pas accès à la réponse ???
                                                  Perso j'essaye le premier exercice mais j'aimerait la réponse pour m'appuyer dessus......
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    5 août 2009 à 21:02:48

                                                    Pour apprendre en programmation faut se casser la gueule dessus, et pas "s'appuyer" comme les 3/4 des membres voudraient.
                                                    Autant y'a des gens de bonne foi, mais il est plus courant de trouver des gens qui veulent voir la correction et basta. Ces gens là n'apprennent rien.
                                                    Sérieusement, le code source de ce jeu existe déjà, suffit de fouiller un peu.

                                                    Pour savoir si ton programme marche, teste-le.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      5 août 2009 à 22:38:10

                                                      Citation : elmh

                                                      Pour apprendre en programmation faut se casser la gueule dessus, et pas "s'appuyer" comme les 3/4 des membres voudraient.
                                                      Autant y'a des gens de bonne foi, mais il est plus courant de trouver des gens qui veulent voir la correction et basta. Ces gens là n'apprennent rien.
                                                      Sérieusement, le code source de ce jeu existe déjà, suffit de fouiller un peu.

                                                      Pour savoir si ton programme marche, teste-le.



                                                      +2

                                                      C'est tellement si facile de s'appuyer sur les corrections, c'est le meilleur moyen de stagner ou même pire , de reculer.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      J'ai tous les badges d'OpenClassrooms.
                                                      Anonyme
                                                        7 août 2009 à 12:54:53

                                                        Citation : willard

                                                        Citation : elmh

                                                        Pour apprendre en programmation faut se casser la gueule dessus, et pas "s'appuyer" comme les 3/4 des membres voudraient.
                                                        Autant y'a des gens de bonne foi, mais il est plus courant de trouver des gens qui veulent voir la correction et basta. Ces gens là n'apprennent rien.

                                                        Pour savoir si ton programme marche, teste-le.



                                                        +2

                                                        C'est tellement si facile de s'appuyer sur les corrections, c'est le meilleur moyen de stagner ou même pire , de reculer.



                                                        Et alors ? c'est quoi votre problème si les gens apprennent mal ? vous vous contentez de proposer des exos et des corrections, après, si quelqu'un est inspiré par le sujet et sérieux, il ne regardera pas le code....

                                                        Après le problème vient peut-être de la difficulté, je trouve le sujet assez délicat pour un "zero", comparé par exemple aux exos de C bien plus abordable..Donc si c'est plus dur, normal qu'on souhaite savoir par ou commencé sans devoir à chaque fois se connecter au site et attendre plusieurs heures que quelqu'un vous réponde.......
                                                        D'ailleurs si c'est pour le faire, les dates butoirs servent à quoi???????

                                                        Citation : elmh

                                                        Pour savoir si ton programme marche, teste-le.


                                                        Ah bon?



                                                        Bonne journée

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          7 août 2009 à 13:33:33

                                                          Je suis d'accord avec Ver2terre, si la personne apprend mal en ne regardant que la correction, c'est son problème, pas le notre. Montrer une solution ou donner les pistes qu'il fallait suivre permet de comparer son résultat, voir si l'on a pris un mauvais chemin, comprendre la reflexion mener par d'autre plus compétent.
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Exos de zeros

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                          • Editeur
                                                          • Markdown