accesseur - Java - Programmation
Marsh Posté le 06-12-2005 à 11:32:32
t'as un objet non instancié => soit joueur[i], soit l'objet retourné par joueur[i].get_main().
A toi de tester lequel c'est
à l'occasion, je te suggère d'aller faire un tour du côté des convention de nommage java http://java.sun.com/docs/codeconv/
Marsh Posté le 06-12-2005 à 11:46:26
en fait ma fonction get_main() retourne un objet null, mais c normal car je veux le remplir avec set_carte1 .. ca vient de la ?
Marsh Posté le 06-12-2005 à 12:20:49
PB- a écrit : en fait ma fonction get_main() retourne un objet null, mais c normal car je veux le remplir avec set_carte1 .. ca vient de la ? |
Mais avant de pouvoir remplir ta main, il faut d'abord la créer (l'instancier) et le meilleur endroit pour le faire c'est dans le constructeur de la classe Jeu_31.
PS : Comme l'a dit benou, va voir les convention de nommage. Les '_' dans les noms de classes et méthode, ça pique les yeux
Marsh Posté le 06-12-2005 à 12:34:04
si je fais X = new Joueur(...)
sachant qu'un joueur a comme attibut une main ca devrait le faire non ?
merci pour vos réponses et désolé pour les "_"
Marsh Posté le 06-12-2005 à 14:10:18
PB- a écrit : si je fais X = new Joueur(...) |
Avec ça tu instancies un joueur mais il faut encore que tu instancies sa main.
J'imagine que ton code ressemble à ça :
Code :
|
L'attribut main est bien défini mais il n'est pas initialisé !
Bref il faut avoir
Code :
|
Marsh Posté le 06-12-2005 à 17:52:31
Comme c'est plus joli getMain() que get_Main(). C'est important les conventions!
Marsh Posté le 06-12-2005 à 18:24:55
ok ca marche merci
pour les conventions , je savais pas je commence juste
Marsh Posté le 06-12-2005 à 18:57:10
ReplyMarsh Posté le 08-12-2005 à 00:25:56
rebonjour c'est encore moi
J'essaye de faire un applet gérant des images.
Le problème est que lorsque je la lance je vois le programme tourner normalement en fond mais il ne se passe rien dans mon applet ( je souhaite notemment rafraichir des images )
Au bout d'un moment le prog dans la console se termine mais reste "en attente" ..
quelqu'un a une idée ?il est tard donc je dois encore une fois ne pas etre tres clair
merci
Marsh Posté le 08-12-2005 à 19:37:16
Je voudrais savoir comment on rafraichi une applet.
J'ai une interface , un borderlayout, et des fonctions "fairePartieNord" , ..sud ..etc; a mon initialisation ca marche impec mais par contre lorsque je rapelle une de ces fonctions avec des parametres différents il ne se passe rien, quelqu'un a deja eu un probleme similaire ?
Marsh Posté le 08-12-2005 à 20:01:26
PB- a écrit : quelqu'un a deja eu un probleme similaire ? |
tu veux dire un probleme vague et mal decrit ?
Marsh Posté le 08-12-2005 à 20:17:04
désolé, voila ce que j'ai
public class Interface_jeu extends JApplet {
private Controleur controleur = new Controleur( this );
private JPanel conteneur_ouest;
private JPanel conteneur_nord;
private JPanel conteneur_est;
private JPanel conteneur_sud;
private JPanel conteneur_centre;
private JButton cogner, une, deux, trois, quatre, jouer, quitter, rejouer, Distribuer,carte_retour;
void faire_partie_nord( String c1, String c2, String c3, String nom_ordi, String niv, int sco )
{
....
}
void faire_partie_sud( String c1, String c2, String c3, String c4, String nom_joueur, int sco )
{
....
}
void faire_partie_ouest( String c1, String c2, String c3, String nom_ordi, String niv, int sco)
{
....
}
void faire_partie_centre( String c1, String c2, String c3, String nom_ordi, String niv, int sco)
{
....
}
void faire_partie_est( String c1, String c2, String c3, String nom_ordi, String niv, int sco)
{
....
}
public void init()
{
faire_partie_nord("Vide.gif","Vide.gif","Vide.gif",controleur.mon_jeu.tab[2].get_nom(),controleur.mon_jeu.tab[2].get_niveau(),controleur.mon_jeu.tab[2].get_score());
faire_partie_ouest("Vide.gif","Vide.gif","Vide.gif",controleur.mon_jeu.tab[3].get_nom(),controleur.mon_jeu.tab[3].get_niveau(),controleur.mon_jeu.tab[3].get_score());
faire_partie_est("Vide.gif","Vide.gif","Vide.gif",controleur.mon_jeu.tab[1].get_nom(),controleur.mon_jeu.tab[1].get_niveau(),controleur.mon_jeu.tab[1].get_score());
faire_partie_sud("Cartes/"+"Vide.gif","Cartes/"+"Vide.gif","Cartes/"+"Vide.gif","Cartes/"+"Vide.gif",controleur.mon_jeu.tab[0].get_nom(), controleur.mon_jeu.tab[0].get_score());
faire_partie_centre("Cartes/"+"Vide.gif","Cartes/"+"Vide.gif",controleur.mon_jeu.get_nb_partie(),"c'est a Fabien de jouer" );
faire_abonnement();
Container c=getContentPane();
c.setLayout(new BorderLayout());
c.add(conteneur_sud,BorderLayout.SOUTH);
c.add(conteneur_nord,BorderLayout.NORTH);
c.add(conteneur_ouest,BorderLayout.WEST);
c.add(conteneur_est,BorderLayout.EAST);
c.add(conteneur_centre,BorderLayout.CENTER);
controleur.t.start();
}
J'ai ensuite une classe Controleur :
public class Controleur {
Interface_jeu mon_inter;
Jeu_31 mon_jeu;
Timer t;
public Controleur( Interface_jeu j )
{
mon_jeu = new Jeu_31( this );
mon_inter = j;
t = new Timer( this );
}
public void commencer()
{
mon_jeu.le_jeu();
}
public void recommencer()
{
mon_jeu = new Jeu_31( this );
mon_jeu.le_jeu();
}
public void changer_texte( String s )
{
mon_inter.faire_partie_centre("Cartes/"+"Vide.gif","Cartes/"+"Vide.gif",mon_jeu.get_nb_partie(),s);
System.out.println("changement de texte:"+s);
}
public void changer_nord()
{
System.out.println("changement de nord" );
System.out.println("nouveau score:"+mon_jeu.tab[2].get_score());
mon_inter.faire_partie_nord(mon_jeu.tab[2].get_main().get_carte1().get_nom(),mon_jeu.tab[2].get_main().get_carte2().get_nom(),mon_jeu.tab[2].get_main().get_carte3().get_nom(),mon_jeu.tab[2].get_nom(),mon_jeu.tab[2].get_niveau(),mon_jeu.tab[2].get_score());
}
}
les méthodes changer_nord, changer texte, sont appellées dans une classe Jeu.
Le problème s'est que j'ai l'impression que lorsque je rapelle les faire_partie ca ne modifie pas mon applet
Marsh Posté le 06-12-2005 à 11:12:15
bonjour a tous
j'ai une erreur de type
Exception in thread "main" java.lang.NullPointerException
at Partie.distribuer(Partie.java:54)
at Jeu_31.faire_une(Jeu_31.java:29)
at Jeu_31.le_jeu(Jeu_31.java:53)
at Jeu_31.main(Jeu_31.java:73)
je vais donc a Partie.java:54
joueur[i].get_main().set_carte1( une_carte )
je ne sais pas si je vais etre clair, mais set_carte1 est une méthode qui prends en entrée une Carte est initialise la première carte de ma main a sa valeur.
un joueur a comme attribut une main, dans mon cas c'est la fonction get_main() qui me la donne.
Est ce que quelqu'un a une idée, je suppose que je ne suis aps très claire, si vous voulez des détails je reste la
Merci