begin process at 2012 02 17 05:18:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Besoin d'aide pour un algo


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin d'aide pour un algo

lundi 22 août 2005 à 16:55:17 | Besoin d'aide pour un algo

ben01n

Salut à tous,
je suis en train de développer un logiciel permettant d'automatiser l'appariement des joueurs dans un tournoi. Pour cela, il faut que j'utilise le système de la ronde suisse. C'est à dire qu'au 1er tours, on distribut les joueurs au hasard en 1 contre 1 sur une table de jeu. De plus il faut pouvoir gerer le fait qu'il n'est pas toujours possible d'éviter que 2 joueurs se rencontrent 2 fois ou qu'un joueur joue 2 fois sur la même table.
Ensuite dans les tours suivant, on fait de même sauf que les joueurs ne doivent avoir déjà joué l'un contre l'autre et ne doivent pas avoir joué sur la table de jeu attribué.

Pour cela j'utilise une base de donnée dans laquelle j'ai fais une table "Match" comportant les champs suivant :
numMatch, numTours, numJoueur1, numJoueur2, numTable

Quelqu'un peut il m'aider car j'arrive pas à faire un algo potable ?
lundi 22 août 2005 à 17:37:53 | Re : Besoin d'aide pour un algo

Stan62970

Salut
je penssse, si je comprend bien, qu'une table ds ta base n'est pas sufisante pour gérer tt ca !
il en faudrait au moins quatres:

    -  JOUEUR(NumJ,Nom)
    - MATCH(NumMatch, NumJ1#,NumJ2#,NumT#,numTour#)
    - TABLE(NumT)
    - TOUR(NumTour)

J'avou ne pas trés bien comprendre cette phrase : "De plus il faut pouvoir gerer le fait qu'il n'est pas toujours possible d'éviter que 2 joueurs se rencontrent 2 fois ou qu'un joueur joue 2 fois sur la même table." (un peut chian pour l'algo ! ) pour moi : un joueur peut jour 2 fois sur la mm table ms évidament pas contre un mm joueur.

pour l'algo(enfin je vais peu etre pas tt faire nn plus....) du premier tour pas tres compliqué:

    -créer un tableau type joueur:
       public type Joueur
          dim NumJ as Integer
          dim nom as string
          dim Jou as boolean
       end type

    - remplir le tableau "joueur"  grace a une requete "select * from joueuer"et n mettant "Jou"  a faux pour t les joueurs,

    - ensuite tu parcour ton tableau du debut à la fin pour remplir la table match pour le premier tou uniquement, ca vait un truc du style :
        Randomize
       For i=1 to nombre_de_joueur_ds_le_tableau
          if joueur(i).jou=false
            index=joueur(int(rnd*nombre_de_joueur_ds_le_tableau))
                 while joueur(index).jou=true or index=i
                     index=joueur(int(rnd*nombre_de_joueur_ds_le_tableau))
                  wend
   
                   'la tu fait une pti commande sql pour remplir la table match  avec numj1#-->joueur(i).NumJ et numj2#-->joueur(index).NumJ (pour la table je sait pas ca fait parti des chose que g pas bin captés) et NumT#=1 ( faut pas oublier de remplir ava,t la table "Table" sinon ca risque de chier)
          end if
    next i

Bon voila pour l premier tour c pas dit que ca va marcher mais ca peut t'aider quand mm !!   
            
         
   
   








[ Lien ]
lundi 22 août 2005 à 17:51:12 | Re : Besoin d'aide pour un algo

Mekhanik

Voici mon algo, j'utilise ici des structures en mémoire car je n'utilise pas de base de donnée mais des fichiers cepedant la structure de mes données ressembles à celles de ta base de donnée. L'algo fonctionne, il n'est surement pas optimisé à fond vu le nombre de boucle imbriquée mais le temps d'éxécution pour un nombre d'équipe inférieure à 200 est très raisonnable. Si tu as des questions n'hésites pas voilà bon courage :-) :

'Declaration des structures et variables globales
'Contient les informations des equipes
Type StructTeam
    numTeam As Integer
    NumPlace As Integer
    NomPlayer1 As String * 30
    PrenomPlayer1 As String * 30
    NomPlayer2 As String * 30
    PrenomPlayer2 As String * 30
    Score As Integer
End Type


'Contient les scores de chaque équipes pour chaque partie
Type StructPartie
    numTeam As Integer
    NumPartie As Integer
    NumScore As Integer
End Type

'Contient tous les parties alétoires déjà tirées
Type StructAleatoireTirer
    NumTable As Integer
    NumTeam1 As Integer
    NumTeam2 As Integer
End Type

Public NBteam As Integer 'Nombre d'équipe'
Public NbPartie As Integer 'Nombre de partie'
'Tableau des équipes
Public TabTeam() As StructTeam
Public TabPartieGenere() As StructAleatoireTirer


'Début des procédures et fonctions
Function ValAle() As Integer
'Retourne un nombre aléatoire compris entre 0 et le nombre d'équipe
    Dim Temp As Integer
    Randomize
    Temp = 0
    While Temp = 0
        Temp = Rnd * NBteam
    Wend
    ValAle = Temp
End Function
Private Sub GenerationAleatoire()
    'Génére les parties de façon aléatoire en fonction du nombre d'équipe
    Dim Taille, parcour, putil, i, col, num1, num2, j As Integer
    Dim TabVal() As Integer
    Dim bool, atom As Boolean
    atom = False
   
    While atom = False
        Taille = 1
        bool = True
        ReDim TabVal(1)
        'Cette première partie de l'algo crée un tableau tabval contenant
        'tous les numéros d'équipes de façon aléatoire

        For i = 1 To NBteam
            While bool = True
            'ValAle retourne un nombre aléatoire entre 0 et le nombre équipe
                putil = ValAle()
                bool = False
                'On regarde si le numéro d'équipe putil n'est pas déjà dans le tableau
                'TabVal contenant toutes les équipes déjà sélectionnées

                For parcour = 1 To Taille - 1
                    If TabVal(parcour) = putil Then
                        bool = True
                    End If
                Next parcour
            Wend
            'Lorsque que l'on obtient une équipe non tirée on l'ajoute dans le tableau
            'des équipes sélectionnées et on continu

            ReDim Preserve TabVal(i)
            Taille = Taille + 1
            TabVal(i) = putil
            bool = True
        Next i
       
        atom = True
        col = 0
        'Lorsque toutes les équipes sont dans le tableau de façon aléatoire
        'il faut s'assurer si ce n'est pas la première partie que les équipes ne
        'se sont pas déjà rencontrées.
        'Dans le tableau tabval on considère que les équipes qui se recontrent sont
        'TabVal(i) et TabVal(i + (NBteam / 2)
        'Pour la comparaison on utilise une matrice de partie généré ici variable globale.
        'Cette matrice contient en colonne les parties générées et en ligne une structure contenant
        'le numéro de la table et les deux numéros des équipes qui se sont déjà rencontrées

        While col < NbPartie
            For j = 0 To NBteam / 2
                num1 = TabPartieGenere(col, j).NumTeam1
                num2 = TabPartieGenere(col, j).NumTeam2
                For i = 1 To NBteam
                    If (TabVal(i) = num1) Then
                        If (i < (NBteam / 2)) Then
                            If (TabVal(i + (NBteam / 2)) = num2) Then
                                atom = False
                            End If
                        Else
                            If (TabVal(i - (NBteam / 2)) = num2) Then
                                atom = False
                            End If
                        End If
                    End If
                    If (TabVal(i) = num2) Then
                        If (i < (NBteam / 2)) Then
                            If (TabVal(i + (NBteam / 2)) = num1) Then
                                atom = False
                            End If
                        Else
                            If (TabVal(i - (NBteam / 2)) = num1) Then
                                atom = False
                            End If
                        End If
                    End If
                Next i
            Next j
        col = col + 1
        Wend
    Wend
   
    'On ajoute ensuite dans le tableau de partie générée le numéro des équipes
    'de la prochaine partie
   
    'Pour vérifier toutes les solutions ont été générées il suffit de vérifier :
    'que le nombre de partie générée est inférieur aux nombres d'équipes - 1 ex :
    '2 équipes ==> 1 partie possible
    '4 équipes ==> 3 parties possibles
    '6 équipes ==> 5 parties possibles
    '...

   
    NbPartie = NbPartie + 1
    ReDim Preserve TabPartieGenere(NbPartie, NBteam)
    'On ajoute la nouvelle partie générée
    For i = 0 To (NBteam / 2)
        TabPartieGenere(col, i).NumTable = i
        TabPartieGenere(col, i).NumTeam1 = TabVal(i)
        TabPartieGenere(col, i).NumTeam2 = TabVal(i * 2)
    Next i
   
End Sub

lundi 22 août 2005 à 18:00:46 | Re : Besoin d'aide pour un algo

CanisLupus

Membre Club Administrateur CodeS-SourceS
Salut,

Joueur d'échecs non ?

Une description complète du système suisse pour les appariements se trouve A CETTE URL 
A moins que tu veuilles parler du système suisse accéléré ?

Pour l'algo, de l'un ou de l'autre, j'avais fait quelque chose pour mon ancien club il y a quelques années. Je vais essayer de le retrouver mais ce n'est pas garanti.


-------------------------------------------------
Dresseur de puces, .... normal pour un loup  !?
mardi 23 août 2005 à 09:18:45 | Re : Besoin d'aide pour un algo

ben01n

Merci à tous pour ces réponses rapides.
Je vais voir ce que ça donne avec ce que vous m'avez donné et je vous dirai ce qu'il en est.


Cette discussion est classée dans : aide, table, utilise, algo, joueurs


Répondre à ce message

Sujets en rapport avec ce message

J'ai vraiment vraiment besoin d'aide!!!!!!!!!!!!!!!!!!!!!!!!!! [ par Crazyblinkgirl ] Salut!!Pourrait t'on me dire comment faire pour modifier une table dans une base de données?J'ai écris une requête de la forme: sql = " update accesso aide base de donnée &vb6 [ par ar1961 ] faire un programme vb6exemple:table 1 codetable 2 ref + quantitétable 3 désignation + prix .....j'arrive avec une table mais pas avec plusieur recher besoin d'aide comment ouvrir une table automatiquement a l'ouverture d'access a partir de vb [ par yomm ] 1- j'ouvre une base de données access depuis vbpour le moment pas de pb2- je veux ouvrir une table prècise automatiquement à l'ouverture de la basemon besoin d'aide pour lier table access et feuille excel [ par didkill ] salut a tous,c'est mon premier post sur ce forum pour la simple raison que je debute, et comme tout les newbies, j'ai besoin d'un peu d'aide,mon probl pb non résolu, besoin d'aide ! [ par popysan ] Bonjour,Cela fait quelques temps que je dépose des messages car je n'arrive pas à executer une requete sélection dans mon code vba. Plusieurs réponses Table cachée ou system [ par thiosyiasar ] SalutJ'utilise une table de parametres dans une base access permettant de mémoriser certaines valeurs (appli d'exportation)Pour éviter que l'utilisate j'ai besoin d'1 peu d'aide SVP ?? [ par jcconi ] Ce que j'aimerai faire c'est une procedure stockee qui concatene de champs Champ1 et Champ2 de la table TLD_TABLE et mettre ce resultat dans un alias Aide Etat Access à partir de 3 tables [ par thguillon ] Salut à tous, J'ai besoin d'aide pour créer un état sous access. Je vous expose mon problème:J'ai 1 table Ticket Vendu (NumTicket, DateVente, NumPoint Création sous formulaire VB [ par lezardjet ] BonjourJ'ai une table qui prend différent nom en focnction des utilisateur qui l'utilise (soucis de multiutilisateur)Dans un formulaire j'utilise un s DLL et OCX : Création d'aide [ par guiguisi ] Voila, bon je sais que des questions de ce type ont déjà été posées, mais là, comme j'utilise pas l'assistant d'empaquetage.... je voulais être sûr de


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales