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

VB 6 et antérieur Discussion :

Probleme de simulation VB6


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Septembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 98
    Par défaut Probleme de simulation VB6
    Bonjour a tous,

    Je suis un débutant en VB, et je travaille sur un projet de simulation d'une segregation d'un damier,que je rend mardi soir, et comme je bloque je demande votre precieuse aide.

    Pour eviter de remplir la page par le sujet, je l'ai mis sur un ftp sur l'adresse suivant: http://rohban.free.fr/vb6/vb6.rtf

    Pour le moment j'ai reussi a initialiser le DAMIER, et a fair apparaitre les agents d'une facons aléatoire, et j'ai resussi a définir les nombre de voisins de la meme couleur ou pas. Pour savoir la satisfaction d'un agent (agent satisfait = au moins 4 voisins du meme couleur)

    Mais j'ai un problème, c'est que le Damier est fait de 18 Agents en ligne et 18 en colone, et j'arrive pas a definir que les voisins d'un agent situer dans la première ligne ou colone et dans la dernière ligne ou colone. c'est a dire, pour les angles on aura comme une cylindre c.a.d que les voisins sont a l'opposer.

    Et aussi pour eviter de taper tout le code, je l'ai mis sur le lien suivant : http://rohban.free.fr/vb6/code.rtf

    La fonction dont je verifie les voisins est la suivante :
    Citation Envoyé par fonction
    Private Function LesVoisins(ByVal Ind As Integer) As Integer
    Dim col As Integer
    Dim lig As Integer
    Dim CouleurInd As Long
    col = colonne(Ind)
    lig = ligne(Ind)
    CouleurInd = agent(Ind).BackColor
    'MsgBox "INDICE: " & Ind & " COONNE: " & Col & " LIGNE:" & Lig
    If MemeCouleur(lig + 1, col + 1, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig + 1, col, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig + 1, col - 1, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig - 1, col + 1, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig - 1, col, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig - 1, col - 1, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig, col + 1, CouleurInd) Then LesVoisins = LesVoisins + 1
    If MemeCouleur(lig, col - 1, CouleurInd) Then LesVoisins = LesVoisins + 1

    End Function
    merci d'avance pour votre aide...

    Souska

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Si on appelle x et y les coordonnées de la case que tu veux tester, tu peux faire comme ça :

    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
     Dim CheckX As Byte, CheckY As Byte
    Dim i As Byte, j As Byte
     
    For i = x - 1 To x + 1
      For j = y - 1 To y + 1
        CheckX = i
        CheckY = j
        If CheckX = 0 Then CheckX = 18
        If CheckX = 19 Then CheckX = 1
        If CheckY = 0 Then CheckY = 18
        If CheckY = 19 Then CheckY = 1
        If CheckX <> x Or CheckY <> y Then
          'On ne teste pas si on compare à la case centrale évidemment
          If MemeCouleur(CheckX, CheckY, CouleurInd) Then LesVoisins = LesVoisins + 1
        End If
      Next j
    Next i

  3. #3
    Membre confirmé

    Inscrit en
    Septembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 98
    Par défaut
    merci pour ta reponse mais j'esseye de tourner ta solution de toute les facon et l'adapter a mon code et ca marche pas

    en fait on travail sur des agents qui sont definit chacun par un indice qui correspondant à la position (lig, col)

    on voi ca dans le code suivant ( que j'ai mis sur le lien dans la parti du module) :
    Option Explicit
    'le nbre de cases du damier, en largeur et hauteur
    Public Const dimterrain = 19
    'informations sur chaque agent du terrain
    Public damier(1 To dimterrain, 1 To dimterrain) As Integer


    Public Function ligne(ByVal indice As Integer) As Integer
    'retourne la ligne correspondant à ind
    ligne = ((indice - 1) Mod dimterrain) + 1
    End Function

    Public Function colonne(ByVal indice As Integer) As Integer
    'reourne la colonne correspondant à indice
    colonne = ((indice - 1) \ dimterrain) + 1
    End Function

    Public Function indice(ByVal lig As Integer, ByVal col As Integer) As Integer
    'retourne l'indice correspondant à la position (lig, col)
    indice = lig + (col - 1) * dimterrain
    End Function

Discussions similaires

  1. Probleme d'installation VB6
    Par jeanmy dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 10/07/2008, 08h38
  2. probleme de listeView (vb6)
    Par josémaria dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/03/2007, 14h02
  3. Probleme deploiement appli vb6 sur serveur 2003
    Par rivierem dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/04/2006, 16h02
  4. PROBLEM D'INSTALLATION vb6
    Par hani dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 10/12/2005, 11h40
  5. Probleme migration VB5 -> VB6
    Par irhemix dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2005, 09h20

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