IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Jeu de l'escargot


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut Jeu de l'escargot
    Bonjour,

    Je débute en JAVA. Je dois réaliser un exercice dont l'énoncé est le suivant : Le but de l'exercice est de programmer le parcours d'un escargot qui doit avancer en ligne droite sur un parcours. En fait, il s'agit plutôt d'un pion sur un plateau de jeu que d'un escargot réel : il doit avancer de 50 cases en faisant des déplacements successifs. A chaque tour de jeu, l'escargot avance d'un certain nombre de cases selon le tirage d'un dé. Autrement dit, il peut avancer de 1 à 6 cases par tour. Le jeu s'arrête quand il a parcouru plus de 50 cases.
    Il faut utiliser une boucle, chaque boucle représentant un tour de jeu. Comme on ne sait pas combien de tours il faudra faire pour parcourir les 50 cases, c'est une boucle while qu'il faut utiliser.
    Pour représenter le tirage du dé dans le programme, il faut utiliser l'instruction MOOC.auSort(1,6) qui renvoie un nombre au hasard compris entre 1 et 6.
    En ce qui concerne la fin du jeu, il faut que l'escargot ait atteint ou dépassé la cinquantième case. Par exemple, s'il est sur la case 49, il n'a pas terminé, il doit jouer un tour de plus. Si alors, le dé donne un 3, l'escargot est sur la case 52 et il a terminé.

    Cependant, je suis bloqué. En fait, je n'arrive pas à relier une ancienne position à la nouvelle pour qu'elles s'additionnent. Et je pense qu'il y a pas mal d'autres souci dans mon programme. Pourriez-vous m'éclairer svp ?

    Je vous met mon travail ci-joint.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Citation Envoyé par L.una Voir le message
    Cependant, je suis bloqué. En fait, je n'arrive pas à relier une ancienne position à la nouvelle pour qu'elles s'additionnent. Et je pense qu'il y a pas mal d'autres souci dans mon programme. Pourriez-vous m'éclairer svp ?
    Bonjour,

    Ceci devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class esc {
     
        public static void main(String[] args) {
            int position = 0;
            int tirage = 0;
            while (position < 50) {
                tirage = MOOC.auSort(1,6);
                position = tirage + position;
                System.out.println(position);
            }
            System.out.print("Vous êtes arrivé");
        }
    }
    1. L'appel "tirage = MOOC.auSort(1,6);" avant la boucle while n'est pas utile, puisqu'il est à nouveau effectué avant lecture du résultat.
    2. La boucle for semble inutile au vu de la demande.
    3. Un println permet de séparer les résultats, le print affiche les différentes valeurs à la suite sans séparation.
    4. Évidemment, le message de fin ne doit être affiché qu'après la fin du while.


    Quel est le problème avec les différentes positions ? L'addition est effectuée par "position = tirage + position;" tout simplement.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut re
    Merci beaucoup Cincinnatus ! Effectivement, ça marche.
    Au début j'étais bien partie sur une boucle While sans for, mais j'ai vu que certaines personnes ont utilisé une boucle for pour exprimer le nombre de tours donc je suis partie là dessus et ça m'as embrouillé.

    J'ai 2 questions :
    - Pourquoi on initialise le tirage à 0 ? Si je ne le fais pas, que se passe-t-il ?
    - Si j'ai bien compris, la boucle while reprend toujours le résultat obtenu lors du tour précédent ? Donc avec "position = position + tirage", la nouvelle position que j'aurais obtenue sera automatiquement additionné à l'ancienne position ?

  4. #4
    Membre expérimenté Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Par défaut
    Pour le point 2 c'est une question de portée de ta variable.
    Tu l'as déclarée en début de ta procédure, avant le while. Elle existe donc depuis sa déclaration (ligne 5) jusqu'à la fin de ta procédure (ligne 13), ce qui inclue la boucle while. Donc dans cet intervalle c'est la même variable que tu manipule, et elle vit sa vie séquentiellement. D’abord initialisée à zéro, elle subit dans le while un nombre certain nombre (15 en moyenne) d'incréments, jusqu"à dépasser 50.

    Pour le point 1 en java les types primitifs comme les entiers sont initialisés à 0, donc ça marcherait parce que java initialiserait position à 0. Mais c'est une bonne habitude à prendre que de toujours initialiser ces variables, pour les cas un peu plus complexes ou java ne le fera pas.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Par défaut re
    Merci Gaillac, c'est très clair

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Citation Envoyé par L.una
    il s'agit plutôt d'un pion sur un plateau de jeu que d'un escargot réel
    J'ai voulu faire des tests avec des escargots réels et ils ont malheureusement réussi à échapper à ma vigilance. Dommage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 00h47
  2. Réponses: 7
    Dernier message: 18/06/2003, 15h20
  3. [socket][tcp] jeu en reseau
    Par souris_sonic dans le forum Développement
    Réponses: 2
    Dernier message: 30/05/2003, 07h31
  4. [C réseau débutant] jeu
    Par Heimdall dans le forum Développement
    Réponses: 6
    Dernier message: 22/05/2003, 13h58
  5. Une déclaration pour la survie du jeu vidéo en France
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 30/10/2002, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo