13
fév
12

Jeux « Vache Taureau »: Programme pascal

Programmation en pascal

Vache Taureau est un jeux ou on doit trouver un nombre formée par quatre chiffre par l’ordinateur le PLUS VITE possible et, pour ca, on se base sur les réponses qu’on reçoit:

  • Si le nombre proposé contient un chiffre juste mais qui n’est pas a ca place, l’ordinateur affiche 1 Vache
  • Et si le nombre proposé contient un chiffre juste et a sa place, l’ordinateur nous affiche 1 Taureau.

Enoncé:

Dans cet article, on va se proposé de crée un programme pascal qui permet de crée ce jeux!

Exemple:

Nombre choisis par l’ordinateur = 5478;
Votre proposition = 5182;
5 est a sa place et 8 est juste mais pas a ca place, donc l’ordinateur nous dira qu’il y a un taureau et une vache!

Solution:
program vache_taureau;
uses wincrt;
var n,nbp:integer;
	Nc:string;
function verifp (p:string):boolean;
var i:integer;
begin
 verifp:=false;
 i:=0;
 repeat
  i:=i+1;
 until (not(p[i] in ['1'..'9']) or (i>=4) or (i=length(p)));
 if i=4 then
  verifp:=true;
end;
procedure verif (p,Nc:string);
var i,j:integer;
    t,v:integer;
begin
t:=0;
v:=0;
 for i:=1 to length(Nc) do
 begin
 j:=0;
  repeat
   j:=j+1;
  until (Nc[i]=p[j]) OR (j>=length(Nc));
  if (Nc[i]=p[i]) then
  t:=t+1
  else if ((ji) AND (Nc[i]=p[j])) then
  v:=v+1;
 end;
 if (T<4) then
 begin
 writeln('#####################@@@@@@@####################');
 write('###  ');
 case v of
  0: write('aucune vache');
  1: write('une vache');
  2: write('deux vaches');
  3: write('trois vaches');
  4: write('quatres vaches');
 end;
 write (' et ');
 case t of
  0: write('aucun taureau');
  1: write('un taureau. Vous avancez!');
  2: write('deux taureaux. C''est bien!');
  3: write('trois taureaux. Encore un peu et vous y étes!');
  4: write('quatre taureaux!')
 end;
 writeln;
 writeln('#####################@@@@@@@####################');

 end;
end;
procedure essai(Nc:string;nbp:integer);
var p:string;
begin
 repeat
  repeat
   writeln;
   write('Donnez moi votre préposition composé de 4 chiffres : ');
   readln(p);
  until (length(p)=4);
  verif(p,Nc);
  nbp:=nbp+1;
 until (p=Nc);
 writeln('Bien jouer! C''était bel et bien le numéro ',p,' !');
 writeln('et vous avez trouver mon numéro en ',nbp,' essais!');
 if (nbp<=5) then writeln('Et c''est EXCELLENT!');
end;
begin
 randomize;
 n:=random(9000)+1000;
 str(n,Nc);
 writeln('J''ai choisis mon nombre!');
 nbp:=0;
 essai(Nc,nbp);
end.

Programme complet!

Veuillez m’informer par commentaire si vous trouvez une erreur… Merci!

Quelques explication:
  • J’ai utiliser exprès le case . of car ca fait longtemps que je ne l’ai pas fait!
  • la variable nbp est un compteur des essais de l’utilisateur…
  • Comme vous l’avez surement remarqué, le random(9000)+1000 affecte a la variable n un un nombre entre 1000 et 9999.
Vous recherchez un compilateur pascal? Télécharger Turbo Pascal Compiler 1.5 pour Windows en français:

  Turbo Pascal 1.5 fr (4,1 MiB, 303 hits)

Cet article vous a plu?
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!
12 Comments:
  1. kissa 14 fév, 2010

    aaaaaaaaaaa vrmt a7ssen 7aja mdrrr

  2. jozzy-online 1 mar, 2010

    Merci d’avoir un blog interessant

  3. TuniLame 4 mar, 2010

    @kissa @jozzy-online:
    Ce n’est qu’un plaisir de le partager avec vous :)

  4. awax_tunisien 23 avr, 2010

    chers ami ;) j’apprécie votre travail , mais juste une remarque qui sert à rien , (mais pardonnez ma débilité :D )

    le random(8999)+100 retourne un nombre dans[1000..9998]
    pas [1000.9999] mais ça sert à rien puisque le nombre ne doit contenir que des chiffres uniques ;)

  5. TuniLame 27 avr, 2010

    @awax_tunisien:
    j’utilise le random(9000)+1000 (merci pour l’info du 8999) pour avoir une valeur entre 1000 et 9999, vu que le nombre choisi doit etre composé de 4 chiffres (préférablement different de 0).

  6. Steve 29 mai, 2010

    Merci d’avoir un blog interessant

  7. sifou 19 jan, 2011

    merci

  8. Raed 4 fév, 2011

    c joli

  9. magid 18 fév, 2011

    Good job .. thnks !

  10. médy 12 avr, 2011

    fama une erreur

    if (Nc[i]=p[i]) then
    t:=t+1
    else if ((ji) AND (Nc[i]=p[j])) then
    v:=v+1;

    j=i mouch ji :p

  11. hassouna 27 juin, 2011

    j’ai trouver un erreur sur l’instruction
    uses wincrt
    et
    else if ((ji) and (Nc[i]=p[j])) then
    v:=v+1;

  12. Imen 23 oct, 2011

    salut tnajmou ta3mlou el pascal mta3 el jeu par el condition Si.. alors.. Sinon

Post your comment




Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Celadon theme by the Themes Boutique