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

Langage Java Discussion :

[nouveau package] Sauriez-vous comment faire pour créer un nouveau package ?


Sujet :

Langage Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut [nouveau package] Sauriez-vous comment faire pour créer un nouveau package ?
    Bonjour,

    j'ai écris une classe "sprite" et comme elle peux être utile dans plusieurs programmes (spécialement les jeux), j'aimerai la mettre dans un package (dans lequel je rajouterai également d'autres classes utiles), mais j'ai regardé sur le web et ai essayé plusieurs méthodes mais jusque-là je n'ai rien obtenu de satisfaisant (sûrement ma faute, je suppose), alors voilà:

    j'excecute l'invite de commande depuis le dossier dans lequel se trouve "javac.exe", c'est-à-dire: "D:\utilitaires\JDK (pour java)\jdk\bin"

    ma classe "sprite" se trouve à: "D:\NET\Jclasses\sprite"

    et si possible j'aimerai que tout se qui se trouve sous "Jclasses" soit accessibles via la méthode "import", je sais pas si c'est possible.


    j'ai essayé "javac -classpath D:\NET\Jclasses\sprite sprite.java" / "javac -classpath D:\NET\Jclasses\sprite\sprite.java" / "javac -classpath \..\..\..\..\NET\Jclasses\sprite sprite.java" / "javac -classpath \..\..\..\..\NET\Jclasses\sprite\sprite.java"

    mais tous me renvoient des erreurs, j'ai cherché pas mal de temps et posé la question sur divers forums, mais jusque-là j'ai pas réussi à comprendre comment ça marche. Merci d'avance à celle/celui qui pourra m'aider (désolé pour la longueur du message, c'est pour que vous ayez un maximum d'informations)

    ma classe sprite:
    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    package Jclasses.sprite;
     
    import java.awt.*;
    import java.lang.Math;
     
    class sprite{
     
    	private Image imageSprite=null;
    	private int posX=0, posY=0, sizeX=0, sizeY=0, speedX, speedY, margeX, margeY, marge;
     
    //initialise le sprite
    	public sprite(Image image, int PX, int PY, int SX, int SY){
    		imageSprite=image;
    		sizeX=SX; sizeY=SY;
    		posX=PX; posY=PY;
    	}
     
    	public sprite(Image image, int PX, int PY, int SX, int SY, int spX, int spY){
    		imageSprite=image;
    		sizeX=SX; sizeY=SY;
    		posX=PX; posY=PY;
    		speedX=spX; speedY=spY;
    	}
     
    	public sprite(int PX, int PY, int SX, int SY){
    		sizeX=SX; sizeY=SY;
    		posX=PX; posY=PY;
    	}
     
    	public sprite(int PX, int PY, int SX, int SY, int spX, int spY){
    		sizeX=SX; sizeY=SY;
    		posX=PX; posY=PY;
    		speedX=spX; speedY=spY;
    	}
     
     
    //les méthodes SET
    	public void setImage(Image image){
    		imageSprite=image;
    	}
    	public void setPos(int X, int Y){
    		posX=X; posY=Y;
    	}
    	public void setSize(int X, int Y){
    		sizeX=X; sizeY=Y;
    	}
    	public void setPosX(int X){posX=X;}
    	public void setPosY(int Y){posY=Y;}
    	public void setSizeX(int X){sizeX=X;}
    	public void setSizeY(int Y){sizeY=Y;}
     
    	public void setSpeedX(int X){speedX=X;}
    	public void setSpeedY(int Y){speedY=Y;}
     
     
    //les méthodes GET
    	public Image getImage(){
    		return imageSprite;
    	}	
    	public int getSizeX(){return sizeX;}
    	public int getSizeY(){return sizeY;}
    	public int getPosX(){return posX;}
    	public int getPosY(){return posY;}
     
    	public int getSpeedX(){return speedX;}
    	public int getSpeedY(){return speedY;}
     
    	public int getArea(){
    	return (sizeX*sizeY);
    	}
    //les méthode move
    	public void move(int X, int Y){
    		posX+=X; posY+=Y;
    	}
     
    	public void moveX(int X){
    		posX+=X;
    	}
     
    	public void moveY(int Y){
    		posY+=Y;
    	}
     
    	public void move(){
    		posX+=speedX; posY+=speedY;
    	}
     
    	public void moveX(){
    		posX+=speedX;
    	}
     
    	public void moveY(){
    		posY+=speedY;
    	}
     
    //les méthodes checkCollision qui renvoient true s'il y a une collision ou sinon false
    	public boolean checkCollision(sprite Sprite){
    		if(posX+sizeX<=Sprite.getPosX() || posX>=Sprite.getPosX()+Sprite.getSizeX() || posY+sizeY<=Sprite.getPosY() || posY>=Sprite.getPosY()+Sprite.getSizeY()){
    			return false;
    		}
    		else{return true;}
    	}
     
    	public boolean checkCollision(int PX, int PY, int SX, int SY){
    		if(posX+sizeX<=PX || posX>=PX+SX || posY+sizeY<=PY || posY>=PY+SY){
    			return false;
    		}
    		else{return true;}
    	}
     
    //les méthodes checkCollisionExt qui renvoient quelle partie du sprite cible est touchée
    	public String checkCollisionExt(sprite Sprite, int V){
    		if(!(posX+sizeX<Sprite.getPosX() || posX>Sprite.getPosX()+Sprite.getSizeX() || posY+sizeY<Sprite.getPosY() || posY>Sprite.getPosY()+Sprite.getSizeY())){
    			if(posX+sizeX-V<=Sprite.getPosX()){return "left";}
    			if(posX+V>=Sprite.getPosX()+Sprite.getSizeX()){return "right";}
    			if(posY+sizeY-V<=Sprite.getPosY()){return "top";}
    			if(posY+V>=Sprite.getPosY()+Sprite.getSizeY()){return "bottom";}
    		}
    		else{return "null";}
    		return "null";
    	}
     
    	public String checkCollisionExt(sprite Sprite){
    		if(!(posX+sizeX<Sprite.getPosX() || posX>Sprite.getPosX()+Sprite.getSizeX() || posY+sizeY<Sprite.getPosY() || posY>Sprite.getPosY()+Sprite.getSizeY())){
    			margeX=Math.abs(speedX)+Math.abs(Sprite.getSpeedX()); margeY=Math.abs(speedY)+Math.abs(Sprite.getSpeedY());
     
    			if(posX+sizeX-margeX<=Sprite.getPosX()){return "left";}
    			if(posX+margeX>=Sprite.getPosX()+Sprite.getSizeX()){return "right";}
    			if(posY+sizeY-margeY<=Sprite.getPosY()){return "top";}
    			if(posY+margeY>=Sprite.getPosY()+Sprite.getSizeY()){return "bottom";}
    		}
    		else{return "null";}
    		return "null";
    	}
     
     
     
    	public String checkCollisionExt(int PX, int PY, int SX, int SY, int VS, int VO){
    		if(!(posX+sizeX<PX || posX>PX+SX || posY+sizeY<PY || posY>PY+SY)){
    		marge=Math.abs(VS)+Math.abs(VO);
    			if(posX+sizeX-marge<=PX){return "left";}
    			if(posX+marge>=PX+SX){return "right";}
    			if(posY+sizeY-marge<=PY){return "top";}
    			if(posY+marge>PY+SY){return "bottom";}
    		}
    		else{return "null";}
    		return "null";
    	}
     
    	public String checkCollisionExt(int PX, int PY, int SX, int SY, int V){
    		if(!(posX+sizeX<PX || posX>PX+SX || posY+sizeY<PY || posY>PY+SY)){
    		margeX=Math.abs(speedX)+V; margeY=Math.abs(speedY)+V;
    			if(posX+sizeX-margeX<=PX){return "left";}
    			if(posX+margeX>=PX+SX){return "right";}
    			if(posY+sizeY-margeY<=PY){return "top";}
    			if(posY+margeY>PY+SY){return "bottom";}
    		}
    		else{return "null";}
    		return "null";
    	}
     
    }//fin class sprite
    PS: je sais pas s'il faut mettre "public class" ou pas. Mais même en rajoutant ça ne change rien.

  2. #2
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    Une solution serai de faire un jar si tu as plein de class dans ton Jclasses.
    Guette sur les tuto et faq du site sur comment faire un jar. Une fois que t'as ton jar t'as juste à le mettre dans un repertoire (ex: lib) sur la racine de ton projet. Et tu pourras y accéder en faisant des import.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    merci pour ta réponse.


    Je sais faire un fichier *.jar, mais je ne savais pas qu'on pouvait s'en servir pour l'importer. Comment faut-il faire ?

    si je mets le fichier jar dans "D:\NET" et que mon projet se trouve dans "D:\NET\jeux\parcours2", que doi-je mettre dans import ? je comprends mal ce que tu veux dire... Si tu veux dire dans le même dossier, alors c'est OK pour ce programme, mais ne le sera pas pour les autres pour lesquels j'aimerai utiliser la classe sprite, non ?

    Et c'est justement mon problème, de pouvoir utiliser cette classe quel que soit le projet.

    PS: si on fait un nouveau package et que l'on met le programme dans un applet, cela ne pose aucun problème au visiteur, je suppose ? Je pense qu'il n'y a pas de problème, je penses que le fichier *.class contient tout ce dont il a besoin sans devoir aller chercher ailleurs, mais j'aimerai en être sûr.

  4. #4
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Tu veux que quelque soit le programme que tu développes tu puisses accéder à ton jar comme si tu accédais à java.io.* par exemple.
    Pour cela il te suffit de rajouter ton jar avec les autres jar de ton jdk. Par contre il faudra pas oublier de le rajouter à chaque projet que tu voudras distribuer.

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    merci de ta réponse.


    Oui, c'est ce que j'aimerai.

    Il faut le rajouter au JDK et si je veux distribuer mon projet je devrai le rajouter ?
    J'avais lu qu'on pouvait le mettre n'importe où et qu'il fallait le rajouter au classpath (mais j'arrives pas à le faire).

    Et que signifie "le rajouter" ? Si c'est pas l'importer avec "import ...", je vois pas trop ce que ça signifie...

  6. #6
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Je pense que le plus simple ca sera en illustrant par un exemple.

    Pour un programme en java tu fais un jar exécutable (avec un main dedans) en y incluant un repertoire META-INF dans lequel tu places un fichier MANIFEST.MF qui contiendras ton classpath vers ton (tes) jar.

    \parcours2 (repertoire)
    |----parcours2.jar
    |--META-INF (repertoire)
    |--MANIFEST.MF
    |--autre_repetoire
    |--tous tes fichiers class avec leur arborescence
    |----lib (repertoire)
    |--Jclasses.jar

    Ton MANIFEST.MF contiendras donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Manifest-Version: 1.0
    Main-Class: autre_repertoire.lefichier_avec_ta_classe_main
    Class-Path: lib/Jclasses.jar
    Si tu lance parcours2.jar, lors de son exécution il lira le fichier MANIFEST et inclura ton Jclasses.jar.
    Donc faut bien que tu rajoutes ton fichier Jclasses.jar à chaque programme que tu voudras installer sur une autre machine. Si tu distribue ton programme tu donneras le répertoire parcours2 avec tout son contenu.

    Pour ce qui est de l'import c'est expliqué ici

    Par contre pour les applets je peux pas t'aider j'en ai jamais fait mais je pense que ca doit fonctionner sur le même principe.

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    Merci gabriel, malheureusement, c'est justement pour une applet... (ce qui n'empêche pas que ça pourrait bien m'être util plus tard)

    Ou alors y aurait-il un moyen de récupérer une classe qui se trouve dans un autre répértoire que celui de la class qui l'utilise ?

    Merci d'avance à celle/celui qui me répondra

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 115
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    personne ne sait ou n'y a-t-il aucun moyen ?

Discussions similaires

  1. Quelle technologie, comment faire pour créer un CD simple d'emploi ?
    Par petitours dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 17/10/2007, 14h34
  2. Réponses: 12
    Dernier message: 18/04/2007, 19h13
  3. Comment faire pour créer une boucle ?
    Par Arko76 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/04/2007, 17h14
  4. Comment faire pour créer son master boot record
    Par HNT dans le forum Ordinateurs
    Réponses: 3
    Dernier message: 19/09/2005, 20h58
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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