Bonsoir,

Alors voilà, je développe un logiciel de gestion de tournoi de pétanque, rien d'exceptionnel, mais voilà, je coince.

Le plus gros est fait, ça tourne, mais il faut fignoler quelques détails, et parmi ces détails, celui-ci : le programme doit générer aléatoirement les matchs pour la première partie, et donc tirer au sort les équipes...

A première vue, je gère, car en sortie de procédure de mélange des équipes (voir ci-dessous) tout est apparemment ok, sauf que plus loin, ça merde mais alors convenable...

J'aurais donc voulu votre avis concernant cette fameuse procédure de mélange, est-ce qu'à votre avis tout est bon ?

La voici :
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
43
44
45
 
procedure MelangeEquipes();
var
  i, j, tmp : Integer;
  TabTmpBool : array of boolean;
  TabEquTmp : array of InfosEquipe;
  fini : boolean;
 
begin
  SetLength(TabTmpBool, NbreEquipes+1);                                                             
  For i := 1 To NbreEquipes Do                                                                      
    TabTmpBool[i] := False;
  SetLength(TabEquRand, NbreEquipes+1);                                                             
  Randomize;                                                                                        
  tmp := random(NbreEquipes)+1;                                                                     
  TabEquRand[1] := tmp;                                                                             
  TabTmpBool[tmp] := true;
  fini := False;                                                                                    
  i := 2;
  Repeat
    tmp := random(NbreEquipes)+1;
    If TabTmpBool[tmp] = False Then
      begin
        TabEquRand[i] := tmp;
        TabTmpBool[tmp] := true;
      end
    Else i -= 1;
    For j := 1 To NbreEquipes Do
      If TabTmpBool[j] = False Then
        break
      Else
        If (TabTmpBool[j] = true) And (j = NbreEquipes) Then
          fini:= true;
    i += 1;
  Until fini = true;
  SetLength(TabEquTmp, NbreEquipes);
  For i := 0 To NbreEquipes - 1 Do
    For j := 1 To NbreEquipes Do
      If TabEquipes[i].Num = TabEquRand[j] Then
         TabEquTmp[j-1] := TabEquipes[i];
  SetLength(TabEquipes, 0);
  SetLength(TabEquipes, NbreEquipes);
  For i := 0 To NbreEquipes - 1 Do
    TabEquipes[i] := TabEquTmp[i];
end;
Bon, allez-y molo avec la critique, je me remets au développement après 25 ans sans avoir écrit une seule ligne de code hein...

J'attends les avis...

Merci.