classer des joueurs avec Delphi 6

classer des joueurs avec Delphi 6 - Delphi/Pascal - Programmation

Marsh Posté le 25-04-2008 à 19:17:20    

Bonjour à tous
 
Je suis actuellement en train de coder un programme qui simule le jeu du Nain Jaune. J'ai presque fini, y'a juste un truc, tout bête a priori, que je n'arrive pas à faire. A la fin de la partie, chaque joueur se voit afficher les jetons qu'il a cumulé au cours des manches. Je voudrais que l'affichage se fasse en par ordre décroissant, celui qui en a le plus d'abord ... (3 joueurs au total)
 
J'arrive pas à l'écrire, si vous aviez une méthode à me proposer, ou des conseils, ce serait gentil.
 
Merci :)

Reply

Marsh Posté le 25-04-2008 à 19:17:20   

Reply

Marsh Posté le 25-04-2008 à 20:04:15    

Salut
 
donne un peu plus d'info sur le type de variables utilisée etc et dans quoi ou comment tu affiche le resultat

Reply

Marsh Posté le 25-04-2008 à 20:24:39    

Salut

 

Chaque joueur est "représenté" par un pointeur de type T_joueur, qui est un record avec les champs suivant: pseudo(string), cpt_jeton(integer) et suivant(T_ptr_joueur)

 

J'avais écrit cette procédure, qui affiche les informations de chaque joueur à la fin de la partie:

 


Procedue AFFICH_SCORE(ptr_courant:T_ptr_joueur);
var
   i:integer;

 

begin
   For i:=1 to 3 do
      begin
         Writeln('La partie est finie. Les scores sont les suivants : ');
         With ptr_courant^ do
            writeln(pseudo,', vous avez gagne ',cpt_jeton,'jetons pendant la partie.');
      end;
   ptr_courant:=ptr_courant^.suivant
end;

  


Je voudrais juste que ça s'affiche dans la fenêtre d'exécution comme ça:
joueur X a gagné Z jetons,
joueur Y a gagné W jetons
                .
                .
                .

 

en commençant par celui qui en a gagné le plus.
Seulement ce que j'ai écrit ne se contente que d'afficher les champs de chaque joueur, et ne fait pas le classement.

 

Voilà, j'espère que ça sera suffisant, sinon dis moi ce qu'il te manque

 

Merci:)


Message édité par Profil supprimé le 25-04-2008 à 20:27:21
Reply

Marsh Posté le 25-04-2008 à 20:35:08    

oulala j'voyais ça plus simple que ça  [:barthaliastoxik]
 
le plus simple serait de faire une procédure de classement avec comme paramètres les 3 scores puis de chopper le plus grand, le plus petit et enfin celui qui reste non?
 
edit: vais te faire un ptit code mais attention code flagada  :D


Message édité par Flagad'aware le 25-04-2008 à 20:36:39
Reply

Marsh Posté le 25-04-2008 à 20:56:00    

J'ai essayé de l'écrire cette procédure de classement, mais je m'embrouille complètement. En gros, j'y arrive pas.

 

Alors je me suis dit qu'il y avait peut-être un moyen de classer les joueurs dans la procédure d'affichage, même si ca serait plus propre de faire cette procédure de classement :)

 

Sinon j'avais pensé à tableau ...


Message édité par Profil supprimé le 25-04-2008 à 20:56:26
Reply

Marsh Posté le 25-04-2008 à 21:05:09    

ouais pas facile :( , je continue t'adaptera après
 
bon...
 

procedure tform1.classement(one:integer;two:integer;three:integer);
var
Tjoueurs:array[1..3] of integer;//à déclarer en haut au besoin???
Tentest:array[1..3] of integer;
temp,i:integer;
begin;
Tentest[1]:=one;
Tentest[2]:=two;
Tentest[3]:=three;
 
for i:= 1 to 3 do Tjoueurs[i]:= 0;
 
 
temp:=0;
for i:=1 to 3 do if Tentest[i]>temp then temp:=Tentest[i];
Tjoueurs[1]:=temp;
 
temp:=10000;
for i:=1 to 3 do if Tentest[i]<temp then temp:=Tentest[i];
Tjoueurs[3]:=temp;
 
for i:=1 to 3 do if Tentest[i]<>Tjoueurs[1] then
 if Tentest[i]<>Tjoueurs[3] then Tjoueurs[2]:=Tentest[i];
 
showmessage(inttostr(Tjoueurs[1])+' '+inttostr(Tjoueurs[2])+' '+inttostr(Tjoueurs[3]));
 
 
end;


 
voila comme ça , ça roule :)


Message édité par Flagad'aware le 25-04-2008 à 21:49:54
Reply

Marsh Posté le 25-04-2008 à 21:46:26    

après t'appèle avec  
 
classement (ptr1, ptr2, ptr3); ou un truc comme ça mais c'est pas ça lol
 
pis writeln au lieu de showmessage
 
ouais après tu utilise ce code en modifiant juste les premières attibutions des Tentest[1] et tout rentre facilement dans la procédure d'affichage :)


Message édité par Flagad'aware le 25-04-2008 à 22:02:56
Reply

Marsh Posté le 25-04-2008 à 22:18:40    

C'est vaiment sympa de ta part, je vais me débrouiller avec ca.
 
Merci :jap:

Reply

Marsh Posté le 25-04-2008 à 22:57:30    

Y a pô d'koué  ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed