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

avec Java Discussion :

Créer son propre package


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Par défaut Créer son propre package
    Bonjour,

    Je dois faire un jeu de pong en java (applet) et j'aimerais créer un package. J'ai créé un dossier "test" sur mon bureau dans lequel se trouve les .java et un autre dossier "pong". Dans chaque fichier du package je le débute par :

    Et je compile chaque fichier du package par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -d ./pong -cp "C:\...\Bureau\test" Fichier.java
    Et dans le fichier Pong.java j'importe tout le contenu de ce package :

    Je compile ensuite ce dernier par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javac -cp "C:\...\Bureau\test" Pong.java
    Mais j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pong.java:31: cannot access Jeu
    bad class file: C:\...\Bureau\test\Jeu.java
    file does not contain class Jeu
    Please remove or make sure it is in the correct subdirectory of the classpath.
    Je ne suis pas très à l'aise avec les packages malgré les diverses docs que j'ai pu lire...Merci par avance de votre aide !

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Que contient ce fichier "Jeu.java"' ??

    a++

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Par défaut
    Il contient tout ce qui sert à implanter le jeu de pong : gestion du nombre de balles, déplacement des balles, calcul des collisions, etc... (je ne peux pas copier le code ici il est trop long !).

    Le fichier Pong.java contient ceci :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    import pong.*;
    import javax.swing.JApplet;
    import javax.swing.Timer; 
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.ActionListener; 
    import java.awt.event.ActionEvent;
    import java.awt.Image;
    import java.awt.Graphics;
     
    /**
      * Classe moteur servant d'interface entre le jeu et sa mise en oeuvre.
      */
    public class Pong extends JApplet implements KeyListener, ActionListener {
     
      /**
        * Constante paramétrant le nombre d'images par seconde du jeu.
        */
      private final int fps = 50;
      /**
        * Timer orchestrant le jeu à la vitesse définie par la constante fps.
        */
      private Timer cadenceur = new Timer(1000/fps, this);
      /**
        * Image utilisée pour le double buffering software.
        */
      private Image backBuffer;
      /**
        * Jeu représentant la partie en cours.
        */
      private Jeu jeu;
     
      /* Méthodes KeyListener */
      public void keyPressed(KeyEvent e){
        /* Si un utilisateur appuye sur la touche Echap, on met le jeu en pause ou on l'enlève de la pause suivant son état actuel. */
        if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
          if(jeu.etat == Jeu.PAUSE){
            jeu.etat = Jeu.JEU;
            cadenceur.restart();
          } else {
            jeu.etat = Jeu.PAUSE;
            repaint();
            cadenceur.stop();
          }
        /* Sinon si un utilisateur appuye sur la barre Espace */
        } else if(e.getKeyCode() == KeyEvent.VK_SPACE){
          /* Si le jeu est en cours, on ajoute une balle. */
          if(jeu.etat == Jeu.JEU){
            jeu.ajouterBalle();
          /* Sinon si le jeu est au début, on commence la partie. */
          } else if(jeu.etat == Jeu.DEBUT ||jeu.etat == Jeu.FIN){
            if(jeu.etat == Jeu.FIN){
              jeu = new Jeu(getWidth(), getHeight(), "Joueur A", "Joueur B", Jeu.POINTS_MAX_PAR_DEFAUT);
            }
            jeu.start();
            cadenceur.restart();
          }
        /* Sinon (autre touche), le jeu gère cet appui (pour savoir si un joueur a commandé le déplacement de sa raquette). */
        } else {
          jeu.gereAppuiTouche(e);
        }
      }
      public void keyReleased(KeyEvent e){
        /* Le jeu gère le relachement d'une touche pour savoir si un joueur a commandé l'arrêt de sa raquette. */
        jeu.gereFinAppuiTouche(e);
      }
      public void keyTyped(KeyEvent e){}
     
      // Call-back pour le minuteur
      public void actionPerformed(ActionEvent evt){
        /* Si le jeu est en cours, on commence une nouvelle scène, et on appelle la méthode paint. */
        if(jeu.etat == Jeu.JEU){
          jeu.gereScene();
        } else if(jeu.etat == Jeu.FIN){
          cadenceur.stop();
        }
        repaint();
      }
     
      public void init(){
        addKeyListener(this);
        backBuffer = createImage(getWidth(), getHeight());
        jeu = new Jeu(getWidth(), getHeight(), "Joueur A", "Joueur B", Jeu.POINTS_MAX_PAR_DEFAUT);
      } 
     
      /**
        * Affiche une scène du jeu courant.
        * @param g Objet Graphics du frontBuffer utilisé pour dessiner à l'écran.
        */
      public void paint(Graphics g){
        if(jeu.etat == Jeu.JEU){
          jeu.afficherJeu(backBuffer.getGraphics());
          /* Recopie le backBuffer dans le frontBuffer qui dessinera son contenu à l'écran. */
          g.drawImage(backBuffer, 0, 0, this);
        } else if(jeu.etat == Jeu.DEBUT){
          jeu.afficherDebut(g);
        } else if(jeu.etat == Jeu.PAUSE) {
          jeu.afficherPause(g);
        } else {
          jeu.afficherFin(g);
        }
        requestFocus();
      }
     
    }

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par j0o0
    Il contient tout ce qui sert à implanter le jeu de pong : gestion du nombre de balles, déplacement des balles, calcul des collisions, etc... (je ne peux pas copier le code ici il est trop long !).
    C'est à dire ?
    D'après le message d'erreur on dirait que le problème vient du fait qu'il ne contient pas la classe Jeu...

    a++

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Par défaut
    Voici le début du fichier Jeu.java :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    package pong;
     
    import javax.swing.Timer; 
    import java.util.ArrayList;
    import java.awt.event.ActionListener; 
    import java.awt.event.ActionEvent;
    import java.awt.event.KeyEvent;
    import java.awt.Graphics;
    import java.awt.Color;
    import java.awt.FontMetrics;
    import java.awt.Point;
    import java.awt.Font;
    import java.awt.Rectangle;
     
    /**
      * Définit une partie de Pong.
      */
    public class Jeu implements ActionListener {
     
      /**
        * Constante définissant l'état de jeu : début de la partie.
        */
      public static final int DEBUT = 0;
      /**
        * Constante définissant l'état de jeu : jeu en pause.
        */
      public static final int PAUSE = 1;
      /**
        * Constante définissant l'état de jeu : jeu en cours.
        */
      public static final int JEU = 2;
      /**
        * Constante définissant l'état de jeu : fin de la partie.
        */
      public static final int FIN = 3;
     
      /**
        * Constante définissant l'intervalle de temps par défaut de création de nouvel évènement (en millisecondes).
        */
      private static final int INT_EVENEMENT_PAR_DEFAUT = 30000;
      /**
        * Constante définissant le nombre de points par défaut à atteindre pour finir une partie.
        */
      public static final int POINTS_MAX_PAR_DEFAUT = 10;
     
      /**
        * Constante définissant la touche de mouvement vers le haut de la raquette du joueur 1.
        */
      private static final int HAUT_1 = KeyEvent.VK_Z;
      /**
        * Constante définissant la touche de mouvement vers le bas de la raquette du joueur 1.
        */
      private static final int BAS_1 = KeyEvent.VK_S;
      /**
        * Constante définissant la touche de mouvement vers le haut de la raquette du joueur 2.
        */
      private static final int HAUT_2 = KeyEvent.VK_P;
      /**
        * Constante définissant la touche de mouvement vers le bas de la raquette du joueur 2.
        */
      private static final int BAS_2 = KeyEvent.VK_M;
     
      /**
        * Constante définissant la hauteur en pixel de la partie de l'écran utilisée pour l'affichage du score.
        */
      private static final int separateur = 50;
     
      /**
        * Joueur n°1.
        */
      public Joueur j1;
      /**
        * Joueur n°2.
        */
      public Joueur j2;
     
      /**
        * Etat courant du jeu (machine à états).
        */
      public int etat;
      /**
        * Booléen indiquant si le score doit être actualisé lors du prochain affichage (permet de plus écrire le score à chaque affichage de scène à l'écran).
        */
      public boolean actualiserScore;
     
      /**
        * Rectangle représentant le terrain (position et dimensions).
        */
      private Rectangle terrain;
      /**
        * Matrice de listes servant à découper le terrain en plusieurs zones (permet d'optimiser le calcul des collisions).
        */
      private ArrayList<Objet> zones[][];
      /**
        * Quadrillage du terrain : nombre de lignes (determiné lors de l'instanciation d'une partie pour être calculé de manière optimale).
        */
      private final int NBLIG;
      /**
        * Quadrillage du terrain : nombre de colonnes (determiné lors de l'instanciation d'une partie pour être calculé de manière optimale).
        */
      private final int NBCOL;
      /**
        * Timer utilisé pour les évènements créés lors du jeu (ajout de nouvelle balle, augmentation de la vitesse d'une balle...).
        */
      private Timer minuteurEvenement;
      /**
        * Liste d'objet du jeu (balles et raquettes).
        */
      private ArrayList<Objet> objets;
      /**
        * Nombre de points à atteindre pour finir la partie.
        */
      private final int POINTS_MAX;
     
      ... // Constructeurs et méthodes
     
    }
    Et le contenu du répertoire "test" :


  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Si la classe Jeu appartient au package pong, elle devrait se trouver dans le répertoire du même nom... ce qui ne semble pas être le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bad class file: C:\...\Bureau\test\Jeu.java
    a++

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 44
    Par défaut
    Bonjour,
    serait-il possible d'avoir une simple capture d'ecran, ou si tu te le sens de nous le taper, du contenu du repertoire test, et des sous repertoires ?

    Par exemple :
    test/
    test/Pong.java
    test/Pong.class
    test/pong/Jeux.java
    test/pong/Jeux.class



    Merci

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

Discussions similaires

  1. Créer son propre système de fichiers
    Par L'immortel dans le forum Programmation d'OS
    Réponses: 15
    Dernier message: 15/12/2013, 22h16
  2. Créer son propre MessageDlg
    Par snoop94 dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2005, 18h14
  3. Créer son propre éditeur pour un descendant de tpopupmenu
    Par sfpx dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/10/2005, 12h21
  4. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15
  5. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 14h16

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