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

Pascal Discussion :

Petit simulateur d'un petit jeu


Sujet :

Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut Petit simulateur d'un petit jeu
    Voilà : deux joueur lancent un dé. Le joueur qui obtient le nombre le plus grand gagne un point.
    Le vainqueur est le premier arrivé à 10.
    J'ai écrit mon code mais, comme d'habitude, il ne marche pa comme je veux !
    Voilà la bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    program jeu;
    uses wincrt;
    var ch1:string;
        c1,c2:integer;
     
    procedure pointage(var j1,j2:integer);
    var p1,p2:integer;
    begin
    j1:=0;
    j2:=0;
    repeat
           repeat
             p1:=random(7);   
           until (p1<>0) ;
             writeln ('joueur1: ',p1);
            repeat         
               p2:=random(7);
            until  (p2<>0); 
               writeln('joueur2: ',p2) ;
      if p1>p2 then
         j1:=j1+1
      else if  p1<p2 then
         j2:=j2+1;
         p1:=0;
         p2:=0;
    until (j1=10) or (j2=10);
    end;
     
    function gagnant(j1,j2:integer;var ch:string):string;
     
    begin
    if j1=10 then
     ch:='joueur 1'
      else if j2=10 then
      ch:='joueur 2 ';
    gagnant:=ch;
    end;
     
    begin
     pointage(c1,c2);
    writeln('le gagnant est: ',gagnant(c1,c2,ch1));
    end.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Oip,

    Il serait bon pour toi de prendre tout de suite l'habitude de mettre correctement ton code en forme : indentation régulière et cohérente, lignes vides pour aérer, et pas de ligne vide si ça ne sert à rien, comme ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function gagnant(j1,j2:integer;var ch:string):string;
     
    begin
    A propos de cette fonction justement, pourquoi lui passer une chaîne, qui ne sert qu'à être renvoyée ?
    C'est typiquement le moment d'utiliser d'une variable locale.

    Dans pointage, la mise à zéro de p1 est p2 est inutile, et si tu tiens à le faire, prends l'habitude d'initialiser les variables utilisées par une boucle au début de cette boucle, c'est là qu'on va voir d'abord, par habitude.

    Ici, édité, j'avais oublié cette phrase.
    A part cela, je n'ai pas essayé, mais ça devrait marcher, sauf qu'il manque
    randomize; au début du programme principal, pour initialiser le générateur aléatoire.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    Ce programme est en fait un simulateur,donc il faut qu'il m'affiche ce qu'a obtenu le premier joueur et le deuxieme pour chaque "lancer".
    Et mon probleme,c'est que le gagnant,si je compte manuellement les point,n'a que 7point alors qu'il faut qu'il en ait 10.Je ne vois pas ou est le probleme parceque j'ai bien mis la condition d'arret pour j1 et j2 a 10!
    Et pour l'edentation du code,je vous jure que j'essaye,mais comme j'en ai pa l'habitude,ca se vois difficilement...

  4. #4
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    bonjour

    Citation Envoyé par mah00
    si je compte manuellement les point,n'a que 7point alors qu'il faut qu'il en ait 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          
     repeat
          p1:=random(7);   
     until (p1<>0) ;
     writeln ('joueur1: ',p1);
     repeat         
          p2:=random(7);
     until  (p2<>0);
    t'a la reponse que tu veux?
    sinon j'ai pas trop regarder le code à fond
    les remarques ont été deja fait
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Nio,
    Citation Envoyé par mah00
    Ce programme est en fait un simulateur,donc il faut qu'il m'affiche ce qu'a obtenu le premier joueur et le deuxieme pour chaque "lancer".
    Et mon probleme,c'est que le gagnant,si je compte manuellement les point,n'a que 7point alors qu'il faut qu'il en ait 10.Je ne vois pas ou est le probleme parceque j'ai bien mis la condition d'arret pour j1 et j2 a 10!
    Et pour l'edentation du code,je vous jure que j'essaye,mais comme j'en ai pa l'habitude,ca se vois difficilement...
    Je vois d'où vient ton problème :

    - Tu as toujours le même résultat, car il manque randomize au début du programme principal.

    - Tu comptes les valeurs affichées dans ta fenêtre, mais tu oublies que cette fenêtre a une taille limitée, et que toute ligne "remontée" au début de la fenêtre est perdue.

    Si tu veux vérifier "manuellement", il faut bloquer ta boucle de tirages à chaque tour, avec un readln ou un readkey, ou change la manière d'afficher.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    je crois que cela ne résoud pas le probleme.Je ne sais pas si tu m'as bien compris!
    Normalement pour gagner il faut accumuler 10 points,alors qu'avec ce code le gagnant n'a que 7 point!
    De plus,je ne sais pas si c'est de la chance mais c'est toujours le joueur 2 qui gagne!!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 20
    Points
    20
    Par défaut
    ah ok,je ne savais pas que la fenetre avait un taille limitée,donc c'est normal que je ne vois pas le reste!
    Et sinon j'ai ajouté randomize et ca marche!!
    Merci vraiment!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/05/2015, 20h34
  2. Petits conseils pour un premier jeu
    Par delta07 dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 04/03/2015, 15h35
  3. Réponses: 11
    Dernier message: 02/11/2010, 05h28
  4. Un petit problème dans un petit algo!
    Par Pierre-Hakim dans le forum Général Python
    Réponses: 3
    Dernier message: 29/10/2008, 23h29
  5. Réponses: 15
    Dernier message: 10/04/2008, 17h19

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