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é 25 juin 2012 à 16:27:18

Bon j'ai écouté ton conseil en faisant apparaitre une fenêtre pour inscrire le joueur, son nom et ses 4 habilitations, les fenêtres apparaissent bien, ça correspond au nombre de joueurs entrés précédemment, bref j'ai plutôt l'impression que ça marche :doute:

Sinon pour le BoxLayout, j'ai regardé la doc...j'ai rien capté, c'est affolant...j'ai bien comprit le principe, faire afficher quelque chose à un certain moment à un endroit voulu, mais je pige pas ce qu'on met dans les lignes :pf:

http://pastebin.com/idy4JCz9
http://pastebin.com/eJbzkZYe

J'ai bien tenté quelque chose, mais bon je sais que c'est pas complet et que ça ne marchera pas, si on pouvait m'expliquer la chose, ce serait sympa. J'ai mit mon essai en commentaire en bas de Fenetre.java.

Bunyan
Bunyan
Niveau 17
25 juin 2012 à 17:15:30

Un Layout peut en contenir d'autre :)

Tu rajoute simplement la box obtenue via Box.createVerticalBox() à la place de tes JLabel (en lui donnant une possibilité de s'étendre sur les lignes) en l'ajoutant à cette même place dans ton GridBagLayout :)

Tu n'as pas besoin d'un JPanel supplémentaire.

Pseudo supprimé
Pseudo supprimé 25 juin 2012 à 18:13:36

Bon j'ai essayé, mais j'y arrive pas vraiment à placer ce truc :doute:
Je dois pas le placer au bon endroit sûrement, si tu peux m'éclairer.

http://pastebin.com/iaqAE9hf

Ligne 182 et 257.

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 09:16:43

Bon j'ai encore essayé de trouver une solution, mais rien y fait, ça ne m'affiche même pas la fenêtre :pf:
Si quelqu'un pouvait me dire ce qu'il faut corriger car je dois bien avouer que ce BoxLayout me pose problème :(

http://pastebin.com/T8YV41aG

Lignes 100, 185-192, et 260.

Bunyan
Bunyan
Niveau 17
26 juin 2012 à 09:34:10

http://pastebin.com/9GNjQSCY

Création d'une Box via Box.createVerticalBox();
Mise de celle-ci en attribut.
Rajout de cette Box dans la JFrame principale.
Rajout du joueur (sous forme de JLabel) une fois celui-ci terminé d'être créé.

Tout les endroits où j'ai fait des changements ont été préfixé de "//!\ CHANGEMENT"

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 11:07:44

T'es génial mec !
C'est vraiment hyper sympa de me corriger tout ça !
ça m'aide vraiment, merci du fond du cœur !
Surtout que je suis un peu coincé niveau temps, mais ça devrait être jouable, grâce à toi !

Bunyan
Bunyan
Niveau 17
26 juin 2012 à 11:16:33

On est d'accord, par contre, je ne te fais pas ton taff' (bon, là, si, un peu ...), je fais ceci principalement pour que tu comprennes comment faire. Je pense que c'est simplement plus rapide de te montrer ça une fois, en t'expliquant un peu et répondant aux questions que d'essayer de te le faire deviner (ce que j'essaye de faire quand même).

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 11:37:10

Ah mais tout à fait, t'en fais pas je recopie pas comme un abruti tes lignes, justement j'analyse ce que fait telle et telle ligne à tel endroit etc...
J'essaye de comprendre (et je comprend je te rassure), mais le gros problème que j'ai (et t'as dû le deviner), quand on a aucun cours de java pour s'aider à faire un programme de ce niveau, forcément que c'est plus dur à savoir quoi faire pour réussir à faire ce que l'on souhaite, dans tes explications il y a énormément de choses que je ne connaissais pas il y a pas longtemps encore, alors pour aller chercher des solutions dont on ne connait pas l'existence c'est plutôt hardu...

Enfin sache que je passe le temps qu'il faut à bien relire le code que tu me met à chaque fois, je vais pas m'amuser à recopier des choses que je ne comprend pas.

Sinon, grâce à ça, maintenant j'ai pu commencer à lancer les questions !
Juste un truc qui change par rapport à mon programme sur console que j'avais fait avant : la sélection des joueurs. Avant je mettais j1.method() blabla, j2.method() blabla, or là vu que c'est un tableau "dynamique" si je ne me trompe pas, je vais devoir trouver un moyen de le parcourir, un For devra faire l'affaire, faudra que je regarde...

Bunyan
Bunyan
Niveau 17
26 juin 2012 à 13:35:33

For-each : http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html (un peu imbuvable, quand même).

http://java.developpez.com/faq/java/?page=langage_donnees#GEN_TABLEAU_parcours

tbop2
tbop2
Niveau 10
26 juin 2012 à 14:48:58

Eheh megatotor rassure toi tu apprendras avec le temps qu'un bon programmeur n'est pas quelqu'un qui sait.. mais qui sait comment savoir :)

Apres evidemment connaitre l'architecture de ce que tu as a manipuler fait evidemment gagner du temps (et reste l'objectif a atteindre) mais ce n'est pas ca qui fait de toi un bon programmeur :)

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 15:22:02

Bonne nouvelle les amis !
J'ai preeeeeeeeeeeesque fini !
Quand je dis presque, c'est genre à 95%, il ne me reste qu'un problème, je sais pas si il existe une instruction ou une ligne de code faisant comprendre au programme qu'il faut attendre une nouvelle entrée de la part de l'utilisateur avant de passer à la suite ?

Là mon programme tourne, il balance les questions aux joueurs suivant leurs habilitations précédemment entrées, sauf que ça n'attends pas la réponse et ça passe directement à la suite...

Sur console j'avais une class Lire.java qui permettait de lire les String, int, char...bref le paradis, sauf que bien sûr là ça ne marche pas en dehors de la console (sauf si je me trompe ?).

http://pastebin.com/t8EkaWPk
J'utilise des getText(), vous pouvez les voir lignes 35, 53.
Sauf que ça prend le chiffre que l'utilisateur a entré au tout début pour dire le nombre de joueur malheureusement !
Pour résoudre le problème il faudrait que l'utilisateur lise très vite la question et tape la réponse avant que le get n'agisse :fou: :o))

tbop2
tbop2
Niveau 10
26 juin 2012 à 15:36:38

Comme j'ai pas tout suivi je ne suis pas sur d'avoir compris. Mais pourquoi ne pas tout simplement checker la reponse quand l'utilisateur appuie sur un bouton de validation comme tout bon formulaire ? C'est comme ca qu'est le workflow typique de toute application.

PS 1 : Ton indentation est mega chelou je sais pas pourquoi (et paye tes methodes de 300 lignes avec triples for, if).

PS 2 : La moitie de tes commentaires sont totalement useless (genre guere plus qu'une simple traduction en francais de ce que tu as ecrit en pseudo anglais en Java juste avant). Ca nuit a la comprehension, la lecture et la lisibilite de ton code. On commente que si on a a commente. :ok:

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 15:42:57

Oui par contre là le code est dégueulasse j'en suis désolé j'ai pas prit le temps de bien aligner/ranger mais je vais le faire, ne vous inquiétez pas.

tbop2 :d) Les commentaires je les ai mit pour vous en fait pour pas à chercher ce que fait telle ou telle ligne, je commente pas autant d'habitude sinon.

Sinon pour ta réponse, j'ai peur que ça revienne au tout début de l'instruction en fait en faisant comme ça, mais sinon tu as bien raison je veux bel et bien rentrer la réponse en la validant avec le bouton valider.
Bon je vais tester quelque chose, et je vous tien au courant.

Ah aussi je vais vous en parler avant que j'oublie, j'avais trouvé un moyen pour ralentir l'apparition des lignes de texte grâce à Thread.sleep(), or dans mon cas ça ne marche pas, j'ai l'impression que ça ne marche réellement bien que sous console en fait :(
Il n'y a pas une autre alternative ?

tbop2
tbop2
Niveau 10
26 juin 2012 à 16:01:59

Je pense qu*un peu de cleaning est necessaire ouais, j'ai l'impression que tout ton code "Controller" est detenu dans une seule et meme fonction c'est bien mega moche et tu devrais faire une sous-fonction par objet a l'ecran genre : onTextField1, onButtonOk, onButtonErase comme ca sera beaucoup plus clair.

Pour les commentaires tu devrais passer plus de temps a avoir des noms de variables et de mthodes precises (et je repete que l'anglais est la meilleure langue pour coder) plutot que des trucs du genre
if (rep == true) // Si reponse est vraie
{
...
}
else // sinon
{
...
}

index.setPoints(1);//AJOUTE 1 POINT

Et autres trucs obvious alors que ca par exemple :
int lancé = Joueurs.lancer();//Lance le dé
C'est combo "commentaire useless" (merci on sait liare ! ;) ) + choix de variable inapproprie. Un truc genre int latestDieRollResult; aurait ete plus approprie ici.

MDA-Hack
MDA-Hack
Niveau 9
26 juin 2012 à 16:09:06

Avant de poser la question au joueur suivant tu pourrais faire un JOptionPane pour demander à l'utilisateur si il est prêt ?

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

MDA :d) Non pas la peine :)

Sinon j'ai prit une image du problème :
https://image.noelshack.com/fichiers/2012/26/1340720273-Sanstitre.png

Comme vous pouvez le constater il reprend à chaque fois le "2" que j'ai rentré précédemment pour indiquer le nombre de joueur...
De plus, je viens de remarquer, je sais pas si c'est mon netbook qui manque de puissance ou quoi, mais toutes les lignes que vous voyez là, elles apparaissent toutes d'un seul coups ! C'est à dire une fois que j'ai inscrit la dernière habilitation du joueur n°2, le programme fait rien pendant 5 secondes puis PAF tout apparait :(

tbop2
tbop2
Niveau 10
26 juin 2012 à 16:57:07

Ton interface est trop pensee console-like. Je remplacerais le nombre de joueurs par une dialog box qui s'ouvre a chaque nouvelle partie et qui demande de choisir le nombre de joueur dans un jspinner restreint de 2 a 6 et un bouton Nouvelle Partie. Comme ca meme pas besoin de faire des if sur le nombre de joueurs (qui sont tres moches aussi par ailleurs car un peu chelou en logique) et ca fait ca de moins a gerer dans ton code.

Je suis pas sur que le pauvre utilisateur ait besoin de se taper toute la pile de ses anciennes reponses et questions quand il est en train de jouer (peut etre a la fin en guise de feedback).

Je te propose le remaniement suivant :

- Dans ta fenetre principale tu n'affiches qu'un JLabel qui est la question en cours
- En fonction du type de la question tu n'affiches QUE les elements necessaires. Si c'est une question qui necessite une string tu affiches un JTextField, si ca necessite de repondre Vrai ou Faux tu affiches deux boutons Vrai et Faux, si ca necessite des nombres entiers tu fais un JSpinner
- L'utilisateur "parametrise" sa question
- L'utilisateur clique sur un bouton Confirmer
- Un autre JLabel apparait ou un JDialogBox et dit si la reponse est correcte ou non. L'utilisateur doit cliquer sur un bouton Question Suivante pour aller a la question suivante
- Revenir a la premiere etape

Pseudo supprimé
Pseudo supprimé 26 juin 2012 à 21:55:45

Heu, ouais ta solution peut être efficace, or là il ne me reste que 2 jours pour terminer...
J'ai pas envie de tenter le diable en changeant tout...
J'ai bien cru ne pas pouvoir finir ce programme, et là il ne me reste qu'un ou deux trucs à régler et ça tourne. Pas besoin qu'il soit bien optimisé non plus, mais du moment qu'il tourne c'est le minimum.

Donc je te remercie de ta réponse, malheureusement je ne vais pas me risquer de tenter un tel changement en si peu de temps.

tbop2
tbop2
Niveau 10
27 juin 2012 à 09:56:36

Pourtant au final si tu regardes bien c'est pas un changement si risque en fait (car le changement c'est un peu toujours maintenant en programmation de toute facon... et sans langue de bois) mais c'est toi qui juges de toute facon ce que tu veux faire.... Je pense juste que dans ton interface un peu bordelique tu vas faire face a plein de cas auquel tu n'as pas pense et que le dummy user va tres rapidemment faire et qu'une fois passe tout ca dans le code tu vas avoir de jolis bugs partout.... D'ou l'interet de restreindre l'interface pour restreindre les lignes de code et les intrications conditionnelles ici et la qui ne servent fondalement pas a grand chose ni pour toi ni pour l'utilisateur.

Pseudo supprimé
Pseudo supprimé 27 juin 2012 à 14:32:53

T'as tout à fait raison quand tu dis que mon interface est bordélique, j'avais dessiné un truc sur papier et j'ai essayé de respecter au mieux, et j'ai voulu reprendre le style de la console eclipse, grosse erreur c'est hyper chiant, m'enfin c'était ma première interface et je connaissais pas les composants, je partais dans l'optique de la console d'eclipse était simple à reproduire...bah crois moi je ferrai plus jamais ça :mort:

Bon sinon, mon programme est à 97% fini !
J'ai dû me résoudre à changer l'apparition des questions, comme me l'a conseillé tbop2 (mais j'ai pas fait autant de changements comme tu le voulais, désolé), maintenant mes questions apparaissent à la fois dans le JTextArea, mais maintenant il y a aussi une fenêtre qui apparait avec l'énoncé de la question et un JComboBox pour répondre, en gros les JComboBox dans la fenêtre principale et le JTextArea servent plus à grand chose, surtout les JComboBox...le JTextArea sert à lister toutes les questions qui sont passées en gros.

Or j'ai un problème que je ne comprend vraiment pas, c'est WTF si je puis dire...
En fait, le programme ne rentre JAMAIS dans le if si le joueur donne une bonne réponse, en gros les joueurs ont toujours faux malgré une bonne réponse...
Pourtant l'égalité est bonne dans le if...
Je vous laisse regarder :

http://pastebin.com/vtr7RBat

Par exemple pour la ligne 14, lorsque dans la fenêtre je sélectionne "Oui", ça envoie "Oui" dans la JTextField (TextRep) qui l'envoie directement dans le JTextArea (TextProg), et rep prend donc bien la valeur "Oui" vu que c'est bien ce qui est envoyé...et bien normalement if(rep == "Oui") doit marcher...mais non ! ça passe au else, c'est à rien y comprendre...

De même pour les question avec choix, j'ai remplacé les n° 1,2,3,4 par des lettres A,B,C,D comme ça je m'embête pas convertir, enfin bref, là de même la bonne réponse est récupéré dans la Base de Données par la variable ReponseB via la méthode getRep(), et même si le joueur rentre une bonne réponse, if(rep == correct) ça ne marche pas non plus :mort:

Je pige vraiment, mais alors vraiment pas, c'est amazing ce truc :(

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