CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Une fois son code fini...

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 15:36:53

Ah mince j'avais pas vu que tu avais modifié mon code Bunyan, ta façon de procéder est bizarre car tu mets le contenu de ma méthode Nombre() directement dans l'action du bouton Valider...
J'y avais pas pensé, mais pourquoi pas après tout...

tbop2 :d) Ah bon ? :snif:
C'est comme ça que je l'avais comprit dans mon cours :-(

Bon je vais regarder le code modifier, et essayer de bien comprendre comment tu as procédé Bunyan, encore merci pour votre aide tout les deux :)

tbop2
tbop2
Niveau 10
21 juin 2012 à 15:42:17

Non ce que tu decris s'appelle final, et de toute facon ni static ni final ne devraient etre utilises ici ca n'a rien a faire la. Il est etrange par ailleurs de stocker le nombre de joueurs presents dans ton jeu par une variable statique. Je serais toi je ferais juste une autre classe qui s'appelerait JoueurManager et qui serait ni plus ni moins qu'un ArrayList de joueurs auquel tu mettrais toi-meme tes propres restrictions dans les methodes ajouterJoueur par exemple.

Je te conseille de bien verifier que tu as compris ce que le keyword static implique cela dit.

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 15:43:07

T'as mit des erreurs volontairement non ? :o))
if (joueurs == null) :d) if (nbJoueurs == 0)

Ah moins que t'ai voulu faire autre chose :(

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 15:48:30

Il est etrange par ailleurs de stocker le nombre de joueurs presents dans ton jeu par une variable statique. Je serais toi je ferais juste une autre classe qui s'appelerait JoueurManager et qui serait ni plus ni moins qu'un ArrayList de joueurs auquel tu mettrais toi-meme tes propres restrictions dans les methodes ajouterJoueur par exemple.

:d) Ouais j'avoue qu'un tableau aurait été bien, mais j'ai fait le code Joueurs.java il y a 4 semaines, lorsque je débutais mon stage, et j'utilisais que ce que j'avais vu en cours car j'avais pas internet (comme maintenant) pour m'aider...
Donc là si je dois tout modifier, je vais jamais finir à temps...

Bunyan
Bunyan
Niveau 17
21 juin 2012 à 16:03:50

Pour ceci : "if (joueurs == null) :d) if (nbJoueurs == 0) "

Je suis parti du principe que l'objet Joueurs n'existait pas TANT QUE la personne n'avait pas rentré un nombre de joueur acceptable.
Ainsi, si le nombre de joueur est bon, l'objet Joueurs est créé ensuite, et le bouton "valider" ne passera plus jamais ici (il n'a pas à le faire).

tbop2
tbop2
Niveau 10
21 juin 2012 à 16:46:13

"Donc là si je dois tout modifier, je vais jamais finir à temps..."

Oui en meme temps c'est vraiment pas un probleme esthetique la mais vraiment un design chelou... Je ne veux pas etre pessimiste mais ton stage se termine demain de toute facon non ? Et si j'ai bien compris c'est pas le dernier probleme que tu as non ? Ca sera de toute facon tendu de boucler tout ca en un jour.

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 16:51:32

J'ai cherché des explications pour le static, apparemment il y aurait une histoire avec les variables d'instances, enfin je vais pas vous cacher que j'ai pas bien comprit...
Ma prof m'avait expliqué le fait qu'une variable static c'était comme une constante, ça bougeait plus une fois que c'était défini...si elle m'a raconté des conneries ~_~

Le fait est que je trouve pas la solution, j'ai envie de récupérer ce qui est rentré dans mon JTextField via la methode getTextRep() si c'est du type String, ou getIntRep() si c'est des Integer, or à cause de ce problème de static, ça ne veut pas me les récupéré :(

Vous êtes sûr qu'on parle bien des mêmes static ? Parce que bon je veux vous croire, mais que ma prof me dise de la merde, ça me mettrai mal pour mon BTS :(

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 16:52:14

non il me reste une semaine :o))

tbop2
tbop2
Niveau 10
21 juin 2012 à 17:10:58

Dans ce cas :

- Debarasse toi de ce static
- Fais une classe JoueurManager
- Vire ta prof si elle reconfirme cette explication de static (qui est celle pour final)

Une variable statique (methode ou attribut) appartient a ta classe, elle est accessible sans instantiation (objet). Une variable d'instance (donc non statique) appartient aux objets instanties d'une classe, autrement dit leur porte depend du cycle de vie d'un objet.

Dans ton cas precis tu es dans une fonction statique et tu veux faire appel a une fonction d'instance..... ben oui mais ta fonction d'instance elle appartient a un objet... comment pourrait-on de toute facon savoir quel objet est-ce sachant que l'on est dans un contexte static et non d'instance ?

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 18:09:34

Merci pour tes explications clairs et précises :ok:

Pseudo supprimé
Pseudo supprimé 22 juin 2012 à 09:33:06

Bon j'ai regardé des explications pour les ArrayList, mais ça m'a l'air de ne pas correspondre à mon problème en fait, et je pense pas que cela soit adapté pour créer des joueurs :(

Pour créer les joueurs, j'avais au début du stage utilisé une manière vu en cours :

public class Joueurs {
private int numJoueur;
private String nomJoueur;
private String habilitation1Joueur;
private String habilitation2Joueur;
private String habilitation3Joueur;
private String habilitation4Joueur;
private int nbpoints;
private static int i=1;

public Joueurs (int num, String Joueur, String habilitation1 , String habilitation2 , String habilitation3 , String habilitation4, int points){
this.numJoueur = num;
this.nomJoueur = Joueur;
this.habilitation1Joueur = habilitation1;
this.habilitation2Joueur = habilitation2;
this.habilitation3Joueur = habilitation3;
this.habilitation4Joueur = habilitation4;
this.nbpoints = points;
}

public void Candidats(){
this.numJoueur = i;
Fenetre.textProg.append("Le joueur rentre son nom :");
this.nomJoueur = Lire.S();
Fenetre.textProg.append("Le joueur rentre son habilitation n°1 :");
this.habilitation1Joueur= Lire.S();
Fenetre.textProg.append("Le joueur rentre son habilitation n°2 :");
this.habilitation2Joueur= Lire.S();
Fenetre.textProg.append("Le joueur rentre son habilitation n°3 :");
this.habilitation3Joueur= Lire.S();
Fenetre.textProg.append("Le joueur rentre son habilitation n°4 :");
this.habilitation4Joueur= Lire.S();
i++;
}

Puis dans le programme qui s'exécute :

// liste des joueurs, 6 emplacements max
Joueurs j1 = new Joueurs(0, null, null , null , null , null, 0);
Joueurs j2 = new Joueurs(0, null, null , null , null , null, 0);
Joueurs j3 = new Joueurs(0, null, null , null , null , null, 0);
Joueurs j4 = new Joueurs(0, null, null , null , null , null, 0);
Joueurs j5 = new Joueurs(0, null, null , null , null , null, 0);
Joueurs j6 = new Joueurs(0, null, null , null , null , null, 0);

if (a==2){// Si 2 joueurs
j1.Candidats();
j2.Candidats();
...
Et on continu les if jusqu'à 6 joueurs, cela marchait bien...sous la console d'eclipse :mort:

Pffff bon je crois que de tout de façon c'est mort, j'arriverai jamais à régler les problèmes, j'ai pas le niveau pour faire un programme de ce type...c'est bien dommage, car j'aurai apprit pas mal de choses quand même.

tbop2
tbop2
Niveau 10
22 juin 2012 à 10:57:43

Un ArrayList c'est juste un tableau dynamique hein rien de plus tu sais... peut-etre que tu n'en as pas besoin dans tous les mais dans ce cas je t'assure que tu devrais differencier tes donnees (un joueur) de leur logique (JoueurManager).

Et c'est nul de se rabaisser je pense que tu es tres proche de la solution et que tu as tout a fait le niveau pour continuer ton programme.

Bunyan
Bunyan
Niveau 17
22 juin 2012 à 11:20:05

tbop2 : "Et c'est nul de se rabaisser je pense que tu es tres proche de la solution et que tu as tout a fait le niveau pour continuer ton programme. "

De même.
J'ai vu que tu avais utilisé le GridBagLayout. C'est le layout évité par la très grande majorité des débutants commençant les interfaces graphiques, car celui-ci est assez complexes à comprendre et mettre en œuvre les premières fois.
Donc, si tu l'as mis en œuvre, et compris ce que tu as fait (au moins à peu près), j'appuie la phrase de tbop2.

Pose-toi quelques minutes, lâche le Pc, réfléchis bien à ton problème, n'hésite pas à l'écrire sur un papier et penses-y calmement :)
Tu devrais trouver une solution, ou au moins plusieurs pistes à creuser ;)

Pseudo supprimé
Pseudo supprimé 22 juin 2012 à 16:28:24

Merci les gars =')

Pour le GridBagLayout j'en avait chié au début, mais ayant trouvé un tuto qui expliquait bien sur développez.net, j'ai su très bien comprendre comment cela s'utilisait et ça ne m'a pas plus posé problème.

Je vais réfléchir calmement à une solution alors, je vous tiendrai au courant de tout de façon. :oui:

Pseudo supprimé
Pseudo supprimé 25 juin 2012 à 10:57:01

Salutation,

Bon j'ai un petit peu avancé, or j'ai encore un problème, je vois bien de quoi il s'agit, mais je ne trouve pas de solution pour le régler.
http://pastebin.com/Rd5xduQV
http://pastebin.com/DX8MDc4r

Si vous l'exécutez, vous verrez que pour entrer le nombre de joueurs il n'y a pas de problèmes, or pour rentrer les infos des joueurs là ça se corse...car le programme n'attend pas que l'utilisateur rentre les infos dans la zone de texte...
Je comprends bien que le problème vient du fait que ce que j'ai mit dans Candidats() ne suffit pas, car il ne comprend pas qu'il faut attendre que l'utilisateur rentre du texte puis le valide.
Et c'est là la difficulté, car lorsque l'utilisateur valide, l'action du bouton recommence du début (dans Fenetre.java, if(e.getSource == buttonRep)...).

Auriez vous une idée de quoi mettre dans Candidats() pour pas que au clic de Valider la lecture reprenne pas du début, et que l'utilisateur puisse rentrer les infos ?

tbop2
tbop2
Niveau 10
25 juin 2012 à 11:07:58

Ici ou ailleurs personne n'executera jamais ton code :)

J'ai vite fait lu ta description, ton pastebin regorge de la moitie du source code quand j'imagine seule une petite partie est mise en defaut ici. Je te conseille de reposter un nouveau message avec une description un peu plus precise et seulement un pastebin des zones precises ou tu as un probleme.

Bunyan
Bunyan
Niveau 17
25 juin 2012 à 11:36:34

Événementielle, toujours ;)

Personnellement, je te conseillerai de créer un JDialog custom avec un wizard pour créer le joueur.
Premier écran : "Le prénom"
Deuxième écran : "Choisissez l'habilitation"
Ou un seul écran avec les 2 champs.

À la validation, cela met à jour le Joueur correspondant.

Dis-toi bien que toutes tes instructions se dérouleront, que tu le veuilles ou non :)
Pense à tout les logiciels que tu as installé, que tu as utilisé. À chaque fois qu'il fallait entrer des informations, c'était dans des champs prévus pour, et le code derrière se mettait à jour suivant les événements de cet UI.

Lien pour le JDialog custom : http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

Je te conseil aussi de faire un BoxLayout vertical pour afficher les JLabel de tes joueurs, et de n'afficher tes joueurs qu'une fois l'initialisation faite, pas avant.

Joueurs : http://pastebin.com/tdScBMkr
Fenetre : http://pastebin.com/icufsd2Z

Je les ai un peu retravaillé pour que ce soit plus simple (plus de variable j1, j2, ... , j6, mais une List<Joueurs>).
Tu as aussi des commentaires dans le code.

Pour l'indentation, c'est la mienne, et elle ne plaît pas à tout le monde, donc je te conseils vivement de remettre la tienne ensuite ^^"

@tbop2 : ça me change les idées, et le code est très court, mine de rien.
Le problème se situe dans Joueurs#Candidat. Tout est fait en séquence, et l'entrée utilisateur n'est pas attendue.

Pseudo supprimé
Pseudo supprimé 25 juin 2012 à 11:46:40

http://pastebin.com/8seD6aFw
http://pastebin.com/vEiMJTbw

Je vais la refaire : Lorsque le programme demande "Combien il y a de joueurs ?", l'utilisateur rentre un chiffre, si il n'est pas comprit entre 2 et 6, ça va lui demander de recommencer, là pas de problème ça marche.
Une fois le nombre défini, on entre les infos de chaque joueurs, or c'est là que ça coince, ça n'attend pas que l'utilisateur saisie du texte, ça affiche toutes les phrases contenues dans Candidats() à la suite, et donc les Joueurs n'ont pas de nom, ni habilitations...

Pseudo supprimé
Pseudo supprimé 25 juin 2012 à 14:47:40

Bunyan :d) Wow merci pour tes explications, mais comment t'as fais pour modifier aussi vite le code ?! T'es un dieu en java ou bien...?
Et ce que tu me propose a l'air pas mal, or je dois finir le projet d'ici vendredi, au rythme auquel j'avance...j'aurai sûrement pas le temps d'entreprendre des changements de cet envergure :peur:
Je vais quand même voir de quoi il en retourne, et tester si je peux modifier ça.

Bunyan
Bunyan
Niveau 17
25 juin 2012 à 15:34:58

J'ai juste commenté ~50 lignes, retirer 2-3 mots-clés et changer une variable de type. Rien de bien transcendant non plus.

Si tu penses que tu n'auras pas le temps, je te suggère de définir ce que tu pourras faire (de sûr), ce que tu pourrais faire (ça va être plus tendu) et ce que tu ne pourras pas faire. Tu fais en priorité ce que tu penses pouvoir faire, tu t'attaques ensuite à la deadline la plus chaude, et le reste, tu ne t'en occupes pas, tu le gardes pour la soutenance.

Ainsi, tu pourras présenter un travail non-fini, mais que tu sais faire comment faire évoluer pour aller vers la fin. De plus, cela te permet de d'entraîner au chiffrage de ton travail ("en combien de temps je fais ça ?" -> une estimation, on fait, on essaye de tenir, et on compare).

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment