Bonjour !
Je me permet de poster un message sur ce forum car je suis quelque peu coincer.
En effet, dans le cadre d'un projet que nous avons à faire en L1, pour le cours de programmation (Java), nous devons créer les méthodes et le code permettant de faire une partie.
J'en suis à la partie permettant de demander à l'utilisateur de choisir la carte qu'il veut, et de l'ajouter à sa main, avant de commencer sa partie.
Nous n'avons vu pour l'instant que les boucles, les tableaux et les méthodes.
Néanmoins, pour faire cela j'ai fait des recherches et je suis tomber sur les ArrayList, qui ici me semble approprier puisque cela permettrait d'enlever la carte une fois choisit, pour ne pas choisir celle ci autant de fois*qu'on le souhaite. Mais j'ai du mal à prendre en main cette ArrayList.
Voici les règles (très rapidement) en ce qui concerne le choix des cartes :
1) C'est un jeu qui se joue à deux, mais nous n'avons que joueur vs ordinateur à mettre en place.
2) Chaque joueur choisit 9 carte parmi une liste contenant 18 cartes : 2,2,3,3,4,4,5,5,6,6,7,7,8,8,9, 9,10,10.
3) Chaque joueur choisit dans sa propre liste de carte, c'est à dire qu'on ne se retrouve pas dans le cas où si je choisit les deux 4, l'autre ne peut pas les choisir, chaque liste dans laquelle on choisit ses cartes sont indépendantes.
Voici ce que j'ai fait :
1) une méthode permettant de créer la liste de départ, celle parmi laquelle les cartes vont être choisit :
Celle ci est assez mal faite je pense, car trop "lourde", mais c'est la manière la plus simple que je connaisse (il y en a surement d'autre pour alléger un peu, je crois qu'on peut les mettre sur la même ligne, mais je n'en suis pas sur)
Je ne sais pas si je peux m'y prendre autrement, puisque même si le fonctionnement est un peu le même que pour un tableau, de ce que j'ai comprit, je ne vois pas vraiment comment faire pour la remplir (je pense qu'avec une boucle for c'est possible, mais en faisant comme ça, ça marche, donc bon ...)
2) Une méthode demandant au joueur de choisir une carte parmi la liste que l'on vient de créer, et qui renvoie la valeur de celle ci.Code:public static ArrayList remplir(){ ArrayList <Integer> liste = new ArrayList <Integer> (); liste.add(2); liste.add(2); liste.add(3); liste.add(3); liste.add(4); liste.add(4); liste.add(5); liste.add(5); liste.add(6); liste.add(6); liste.add(7); liste.add(7); liste.add(8); liste.add(8); liste.add(9); liste.add(9); liste.add(10); liste.add(10); return liste;
Celle ci marche, néanmoins elle ne fait que demander une valeur entre 2 et 10, mais les cas défavorables ne font que "reset" le programme qui reprend au début.
*Code:public static int choix(ArrayList liste* ){ Scanner sc=new Scanner(System.in); int valeur; do{ System.out.println("Veuillez choisir une carte de valeur comprise entre 2 et 10 (inclus) :"); valeur =sc.nextInt(); }while (valeur>=2 && valeur<=10); return valeur;
3) Une méthode permettant de récupérer la valeur choisit par l'utilisateur, et de l'ajouter à une ArrayList, correspondant à la main de la personne :
Je ne sais pas comment l'appeler dans ma méthode main, car il me dit que celle ci n'est pas définit, mais je ne vois pas pourquoi (Elle n'apparait pas dans ma méthode main mais devrait être récupérer en faisant appel à la méthode précédente puisque l'on return la valeur.)
Et je ne sais pas si c'est le plus intelligent à faire ! Mais je ne vois comment faire autrement, même si j'ai essayé de réfléchir à une méthode permettant d'ajouter chaque carte choisit à la main directement, tout en un, sans avoir à passer plusieurs fois par le main.
La question auquel je n'arrive pas à répondre, c'est comment faire en sorte que le programme demande à l'utilisateur de choisir une carte entre 2 et 10, lui redemande si jamais la valeur ne remplit pas la condition, et s'arrete lorsque la main du joueur est pleine, c'est à dire quand elle contient 9 cartes.Code:public static ArrayList remplissagemain(int valeur){ ArrayList <Integer> main=new ArrayList <Integer>(); main.add(valeur); return main;
Egalement, si j'utilise les ArrayList, c'est pour faire en sorte que lorsqu'une carte est choisit parmi la liste de départ, elle soit enlever, cela me permettrait de simplifier le fait que l'on ne puisse pas choisir plus de deux fois la même carte. J'ai réfléchit à comment faire autrement, et je serai partit pour vérifier dans le meme temps que dans la main du joueur, il n'y ai pas deux fois la même carte, mais ça me semble plus simple d'enlever la carte une fois choisit. Seulement je ne sais pas comment faire ça car l'utilisation du liste.remove(x) correspond à enlever l'élément à l'indice x, et non pas la première occurrence de la valeur x dans la liste.
J'ai également beaucoup de mal à voir comment bien appeler ces méthodes dans mon main ... Bref, c'est très laborieux.
Voilà, j'espère avoir été suffisamment clair et ne pas avoir fait trop de faute !
Merci d'avance pour vos réponses.
-----