Transcription jeu de carte (Shindra) en Java
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Transcription jeu de carte (Shindra) en Java



  1. #1
    Chalael

    Transcription jeu de carte (Shindra) en Java


    ------

    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 ...)

    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;
    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.
    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.
    Code:
    public static ArrayList remplissagemain(int valeur){
    ArrayList <Integer> main=new ArrayList <Integer>();
    main.add(valeur);
    return 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.
    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.

    -----

  2. #2
    Chanur

    Re : Transcription jeu de carte (Shindra) en Java

    Je ne crois pas que tu aies le droit d'appeler une variable "main" : il y aurait confusion avec le point d'entrée du programme : la méthode statique main()
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  3. #3
    Dlzlogic

    Re : Transcription jeu de carte (Shindra) en Java

    Bonjour,
    Si j'étais vous, je commencerais par écrire ce que le programme doit faire avant de vous poser la question "comment le faire".

  4. #4
    Chalael

    Re : Transcription jeu de carte (Shindra) en Java

    En effet, j'ai changé le nom de main à mainjoueur. Merci de la remarque ! J'y avais pensé mais après avoir tester ça ne poser pas de problème, mais par précaution je préfère changer.

  5. A voir en vidéo sur Futura
  6. #5
    Arzhur

    Re : Transcription jeu de carte (Shindra) en Java

    Bonjour,


    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.
    Si tu n'y arrives pas avec une ArrayList, fait le avec un tableau ( puisque tu les as vu en cours). Sinon il y a les piles ( Stack par exemple).


    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'arrête lorsque la main du joueur est pleine, c'est à dire quand elle contient 9 cartes.
    C'est très étonnant parce que c'est presque ce que fait ta méthode "choix" .

    J'ai également beaucoup de mal à voir comment bien appeler ces méthodes dans mon main ... Bref, c'est très laborieux.
    Qu'est ce que tu n'arrives pas a faire ? Appeler une méthode dans le main ?

    J'ai l'impression que t'as bien compris la mécanique du jeu, et ton découpage en méthode est pas mal : tirages des cartes de départ , choix de la carte par le joueur et prise en main de la carte ( si je me fie uniquement à la description, parce que le code fait autre chose)
    ...du coup qu'est-ce qui coince ?

  7. #6
    bdom001

    Re : Transcription jeu de carte (Shindra) en Java

    Bonjour,
    Citation Envoyé par Chalael Voir le message
    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.
    Ces règles ne sont-elles pas un peu trop succinctes ? En général, qui dit « jeu » sous-entend aussi « conditions de victoire ».
    Ce qui motive cette question, c'est de savoir si un joueur peut effectuer plusieurs tirages dans la liste, ou bien s'il possède seulement deux cartes du début à la fin d'une partie.
    Et s'il effectue plusieurs tirages ou cours d'une partie, la liste est-elle rafraichie à chaque tirage, ou bien l'unicité des cartes tirées (à un doublon près) doit-elle être préservée tout au long d'une partie ?

    Selon la réponse à ces questions, l'approche que j'ai peut éventuellement être différente de ce qui a déjà été proposé.

    Cordialement

  8. #7
    pm42

    Re : Transcription jeu de carte (Shindra) en Java

    Le while (valeur>=2 && valeur<=10); ne me semble pas correct. Ca fait la boucle tant qu'on a rentré une valeur correcte non ?

Discussions similaires

  1. java qui fait la java
    Par vanos dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/10/2014, 16h31
  2. [Java] Installation Java
    Par AdelineJ dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 05/06/2014, 20h00
  3. transcription
    Par Keusss dans le forum Biologie
    Réponses: 9
    Dernier message: 19/09/2011, 09h31
  4. Transcription
    Par invite7591132b dans le forum Chimie
    Réponses: 2
    Dernier message: 27/12/2008, 12h57
  5. Java, java, java, where are you, there's a mission for you !
    Par invite1237a629 dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 16/03/2008, 22h10