begin process at 2012 05 27 18:58:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Projet NURMITES

 > NURMITE (ODORAT)

NURMITE (ODORAT)


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Projet NURMITES Classé sous :nurmite Niveau :Débutant Date de création :11/06/2001 Date de mise à jour :17/06/2001 00:00:00 Vu :6 747

Auteur : Johjo

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Mise à jour de ma version de l'odorat du nurm.
Bon, je l'ai fait assez vite, et vu que je peux pas le tester puisque je sais pas comment l'integrer dans le projet, il se peut qu'il ne marche pas du tout, mais bon, ça peut servir de structure de depart pour ce module. J'ai essayé de reprendre toute les fonctions demandées, j'espere que ça marche.

Source

  • 'DetectOdeur(nurmite as nurm).IntensiteOdeur
  • '******Intensité de l'odeur de l'endroit où se trouve le nurmite
  • 'DetectOdeur(nurmite as nurm).GenreOdeur
  • '******Type de l'odeur de l'endroit où se trouve le nurmite
  • 'DetectOdeur(nurmite as nurm).LocationOdeur
  • '******Location de la source qui émet l'odeur de l'endroit où se trouve le nurmite
  • 'La fonction DirectionOdeur renvoie les valeurs suivantes
  • 'DirectionOdeur(Nurmite as nurm).Gauche Si l'odeur vient de cette direction,
  • 'DirectionOdeur(Nurmite as nurm).Droite renvoie true, sinon, renvoie False.
  • 'DirectionOdeur(Nurmite as nurm).Bas Ainsi, on peut diriger le nurmite
  • 'DirectionOdeur(Nurmite as nurm).Haut vers cette odeur
  • 'La fonction OdeurEstConnu renvoie la valeur suivante
  • 'OdeurEstConnu(Nurmite As Nurm, Genre As Integer)
  • '******True si l'odeur est connue, False si non
  • '******A noter que genre est le type d'odeur
  • Public Type Odeur
  • MinOdeur As Integer
  • '******Intensité odeur détectable minimale
  • OdeurConnu(10) As Integer
  • '******Echelle de connaissance des odeurs. O : inconnue, >0 connue
  • End Type
  • Public Type Direction
  • Haut As Boolean
  • Bas As Boolean
  • Droite As Boolean
  • Gauche As Boolean
  • End Type
  • 'Là, c'est la definition de la map des odeurs
  • Public Type Odeurs
  • IntensiteOdeur As Integer
  • '******Intensité de l'odeur à ce point
  • GenreOdeur As Integer
  • '******Type d'odeur
  • End Type
  • Dim MapOdeur(100, 100) As Odeurs
  • ' .: Retourne si une odeur est connue
  • Public Function OdeurEstConnu(ByRef Nurmite As Nurm, ByVal Genre As Integer) As Boolean
  • If Nurmite.Odorat.OdeurConnu(Genre) > 0 Then
  • OdeurEstConnu = True
  • Else
  • OdeurEstConnu = False
  • End If
  • End Function
  • 'Definit la direction de la provenance de l'odeur
  • Public Function DirectionOdeur(Hor As Integer, Ver As Integer)
  • DirectionOdeur = 0
  • 'Le resultat peut être soit horizontale, soit verticale, soit diagonale
  • 'donc, on verifie quelle est la distance la plus grande, horizontale ou verticale
  • 'Si l'écart est faible, alors on renvoie diagonale
  • If Int(Abs(Hor / Ver)) <= 2 Then
  • Select Case Hor
  • Case Is > 0: DirectionOdeur = DirectionOdeur + 1
  • Case Is < 0: DirectionOdeur = DirectionOdeur + 2
  • End Select
  • Select Case Ver
  • Case Is > 0: DirectionOdeur = DirectionOdeur + 4
  • Case Is < 0: DirectionOdeur = DirectionOdeur + 8
  • End Select
  • ElseIf Abs(Hor) > Abs(Ver) Then
  • Select Case Hor
  • Case Is > 0: DirectionOdeur = DirectionOdeur + 1
  • Case Is < 0: DirectionOdeur = DirectionOdeur + 2
  • End Select
  • Else
  • Select Case Ver
  • Case Is > 0: DirectionOdeur = DirectionOdeur + 4
  • Case Is < 0: DirectionOdeur = DirectionOdeur + 8
  • End Select
  • End If
  • End If
  • End Function
  • 'Ajoute une odeur à la carte olfactive
  • Public Sub AddOdeur(PosX As Integer, PosY As Integer, Intensity As Integer, Odeur As Integer)
  • MapOdeur(PosX, PosY).GenreOdeur = Odeur
  • MapOdeur(PosX, PosY).IntensiteOdeur = Intensity
  • End Sub
  • 'Enleve une odeur à la carte olfactive
  • Public Sub RemoveOdeur(PosX As Integer, PosY As Integer)
  • MapOdeur(PosX, PosY).GenreOdeur = Null
  • MapOdeur(PosX, PosY).IntensiteOdeur = Null
  • End Sub
  • 'renvoie la direction de la source d'odeur recherchée la plus proche
  • Public Sub FindNearestOdeur(Nurmite As Nurm, Odeur As Integer)
  • Dim DepHor, DepVer As Integer
  • Dim FinHor, FinVer As Integer
  • Changement = False
  • i = -1
  • Do
  • i = i + 1
  • DepHor = Nurmite.XPos - i
  • DepVer = Nurmite.YPos - i
  • FinHor = Nurmite.XPos + i
  • FinVer = Nurmite.YPos + i
  • If DepVer <= 1 Then DepVer = 1
  • If DepHor <= 1 Then DepHor = 1
  • If FinVer >= Ysize Then DepVer = Ysize
  • If FinHor >= Xsize Then DepHor = Xsize
  • For i = DepVer To FinVer
  • If Changement = True Then Exit For
  • If MapOdeur(DepHor, i).GenreOdeur = Odeur Then
  • Hor = DepHor
  • Ver = i
  • Changement = True
  • End If
  • If MapOdeur(FinHor, i).GenreOdeur = Odeur Then
  • Hor = FinHor
  • Ver = i
  • Changement = True
  • End If
  • For i = DepHor To FinHor
  • If Changement = True Then Exit For
  • If MapOdeur(i, DepVer).GenreOdeur = Odeur Then
  • Hor = i
  • Ver = DepVer
  • Changement = True
  • End If
  • If MapOdeur(i, FinVer).GenreOdeur = Odeur Then
  • Hor = i
  • Ver = FinVer
  • Changement = True
  • End If
  • Next i
  • Loop
  • If Changement = True Then FindNearestOdeur = DirectionOdeur(Hor, Ver) Else FindNearestOdeur = Null
  • End Sub
  • 'renvoie la direction de l'odeur inconnue la plus proche
  • Public Sub DetectNouvelleOdeur(Nurmite As Nurm)
  • Public Sub FindNearestOdeur(Nurmite As Nurm, Odeur As Integer)
  • Dim DepHor, DepVer As Integer
  • Dim FinHor, FinVer As Integer
  • Changement = False
  • i = -1
  • Do
  • i = i + 1
  • DepHor = Nurmite.XPos - i
  • DepVer = Nurmite.YPos - i
  • FinHor = Nurmite.XPos + i
  • FinVer = Nurmite.YPos + i
  • If DepVer <= 1 Then DepVer = 1
  • If DepHor <= 1 Then DepHor = 1
  • If FinVer >= Ysize Then DepVer = Ysize
  • If FinHor >= Xsize Then DepHor = Xsize
  • For i = DepVer To FinVer
  • If Changement = True Then Exit For
  • If OdeurEstConnu(MapOdeur(DepHor, i).GenreOdeur) Then
  • Hor = DepHor
  • Ver = i
  • Changement = True
  • End If
  • If OdeurEstConnu(MapOdeur(FinHor, i).GenreOdeur) Then
  • Hor = FinHor
  • Ver = i
  • Changement = True
  • End If
  • For i = DepHor To FinHor
  • If Changement = True Then Exit For
  • If OdeurEstConnu(MapOdeur(i, DepVer).GenreOdeur) Then
  • Hor = i
  • Ver = DepVer
  • Changement = True
  • End If
  • If OdeurEstConnu(MapOdeur(i, FinVer).GenreOdeur) Then
  • Hor = i
  • Ver = FinVer
  • Changement = True
  • End If
  • Next i
  • Loop
  • If Changement = True Then FindNearestOdeur = DirectionOdeur(Hor, Ver) Else FindNearestOdeur = Null
  • End Sub
  • End Sub
'DetectOdeur(nurmite as nurm).IntensiteOdeur
'******Intensité de l'odeur de l'endroit où se trouve le nurmite
'DetectOdeur(nurmite as nurm).GenreOdeur
'******Type de l'odeur de l'endroit où se trouve le nurmite
'DetectOdeur(nurmite as nurm).LocationOdeur
'******Location de la source qui émet l'odeur de l'endroit où se trouve le nurmite

'La fonction DirectionOdeur renvoie les valeurs suivantes

'DirectionOdeur(Nurmite as nurm).Gauche     Si l'odeur vient de cette direction,
'DirectionOdeur(Nurmite as nurm).Droite     renvoie true, sinon, renvoie False.
'DirectionOdeur(Nurmite as nurm).Bas        Ainsi, on peut diriger le nurmite
'DirectionOdeur(Nurmite as nurm).Haut       vers cette odeur

'La fonction OdeurEstConnu renvoie la valeur suivante
'OdeurEstConnu(Nurmite As Nurm, Genre As Integer)
'******True si l'odeur est connue, False si non
'******A noter que genre est le type d'odeur

Public Type Odeur
MinOdeur As Integer
'******Intensité odeur détectable minimale
OdeurConnu(10) As Integer
'******Echelle de connaissance des odeurs. O : inconnue, >0 connue
End Type

Public Type Direction
Haut As Boolean
Bas As Boolean
Droite As Boolean
Gauche As Boolean
End Type

'Là, c'est la definition de la map des odeurs
Public Type Odeurs
IntensiteOdeur As Integer
'******Intensité de l'odeur à ce point
GenreOdeur As Integer
'******Type d'odeur
End Type

Dim MapOdeur(100, 100) As Odeurs

' .: Retourne si une odeur est connue
Public Function OdeurEstConnu(ByRef Nurmite As Nurm, ByVal Genre As Integer) As Boolean
If Nurmite.Odorat.OdeurConnu(Genre) > 0 Then
    OdeurEstConnu = True
Else
    OdeurEstConnu = False
End If
End Function


'Definit la direction de la provenance de l'odeur
Public Function DirectionOdeur(Hor As Integer, Ver As Integer)
DirectionOdeur = 0

'Le resultat peut être soit horizontale, soit verticale, soit diagonale
'donc, on verifie quelle est la distance la plus grande, horizontale ou verticale
'Si l'écart est faible, alors on renvoie diagonale
If Int(Abs(Hor / Ver)) <= 2 Then
    Select Case Hor
        Case Is > 0: DirectionOdeur = DirectionOdeur + 1
        Case Is < 0: DirectionOdeur = DirectionOdeur + 2
    End Select
    Select Case Ver
        Case Is > 0: DirectionOdeur = DirectionOdeur + 4
        Case Is < 0: DirectionOdeur = DirectionOdeur + 8
    End Select
ElseIf Abs(Hor) > Abs(Ver) Then
                                    
         Select Case Hor
            Case Is > 0: DirectionOdeur = DirectionOdeur + 1
            Case Is < 0: DirectionOdeur = DirectionOdeur + 2
        End Select
    Else
        Select Case Ver
            Case Is > 0: DirectionOdeur = DirectionOdeur + 4
            Case Is < 0: DirectionOdeur = DirectionOdeur + 8
        End Select
    End If
End If
End Function
'Ajoute une odeur à la carte olfactive
Public Sub AddOdeur(PosX As Integer, PosY As Integer, Intensity As Integer, Odeur As Integer)
MapOdeur(PosX, PosY).GenreOdeur = Odeur
MapOdeur(PosX, PosY).IntensiteOdeur = Intensity
End Sub
'Enleve une odeur à la carte olfactive
Public Sub RemoveOdeur(PosX As Integer, PosY As Integer)
MapOdeur(PosX, PosY).GenreOdeur = Null
MapOdeur(PosX, PosY).IntensiteOdeur = Null
End Sub
'renvoie la direction de la source d'odeur recherchée la plus proche
Public Sub FindNearestOdeur(Nurmite As Nurm, Odeur As Integer)
Dim DepHor, DepVer As Integer
Dim FinHor, FinVer As Integer
Changement = False
i = -1
Do
 i = i + 1
 DepHor = Nurmite.XPos - i
 DepVer = Nurmite.YPos - i
 FinHor = Nurmite.XPos + i
 FinVer = Nurmite.YPos + i
 If DepVer <= 1 Then DepVer = 1
 If DepHor <= 1 Then DepHor = 1
 If FinVer >= Ysize Then DepVer = Ysize
 If FinHor >= Xsize Then DepHor = Xsize
 For i = DepVer To FinVer
  If Changement = True Then Exit For
  If MapOdeur(DepHor, i).GenreOdeur = Odeur Then
   Hor = DepHor
   Ver = i
   Changement = True
  End If
  If MapOdeur(FinHor, i).GenreOdeur = Odeur Then
   Hor = FinHor
   Ver = i
   Changement = True
  End If

 For i = DepHor To FinHor
  If Changement = True Then Exit For
  If MapOdeur(i, DepVer).GenreOdeur = Odeur Then
   Hor = i
   Ver = DepVer
   Changement = True
  End If
  If MapOdeur(i, FinVer).GenreOdeur = Odeur Then
   Hor = i
   Ver = FinVer
   Changement = True
  End If
 Next i
Loop
  If Changement = True Then FindNearestOdeur = DirectionOdeur(Hor, Ver) Else FindNearestOdeur = Null
End Sub
'renvoie la direction de l'odeur inconnue la plus proche
Public Sub DetectNouvelleOdeur(Nurmite As Nurm)
Public Sub FindNearestOdeur(Nurmite As Nurm, Odeur As Integer)
Dim DepHor, DepVer As Integer
Dim FinHor, FinVer As Integer
Changement = False
i = -1
Do
 i = i + 1
 DepHor = Nurmite.XPos - i
 DepVer = Nurmite.YPos - i
 FinHor = Nurmite.XPos + i
 FinVer = Nurmite.YPos + i
 If DepVer <= 1 Then DepVer = 1
 If DepHor <= 1 Then DepHor = 1
 If FinVer >= Ysize Then DepVer = Ysize
 If FinHor >= Xsize Then DepHor = Xsize
 For i = DepVer To FinVer
  If Changement = True Then Exit For
  If OdeurEstConnu(MapOdeur(DepHor, i).GenreOdeur) Then
   Hor = DepHor
   Ver = i
   Changement = True
  End If
  If OdeurEstConnu(MapOdeur(FinHor, i).GenreOdeur) Then
   Hor = FinHor
   Ver = i
   Changement = True
  End If

 For i = DepHor To FinHor
  If Changement = True Then Exit For
  If OdeurEstConnu(MapOdeur(i, DepVer).GenreOdeur) Then
   Hor = i
   Ver = DepVer
   Changement = True
  End If
  If OdeurEstConnu(MapOdeur(i, FinVer).GenreOdeur) Then
   Hor = i
   Ver = FinVer
   Changement = True
  End If
 Next i
Loop
  If Changement = True Then FindNearestOdeur = DirectionOdeur(Hor, Ver) Else FindNearestOdeur = Null
End Sub

End Sub

 Conclusion

Si il y a des trucs à changer, à modifier, dîtes le moi, et faite moi savoir toutes les erreurs, si c'est trop lent et qu'il faut l'ameliorer pour augmenter les performances, et enfin, si vous comprenez pas ma façon de programmer. Hesitez pas à me donner votre avis.


 Sources du même auteur

ROUTINE DE CALCUL
Source avec Zip SOLITAIRE
Source avec Zip ENREGISTREMENT ET SIMULATION DES CLIQUES DE SOURIS

 Sources de la même categorie

Source avec Zip Source avec une capture NURMITE PROJECT 1.2.21 par Mémère
Source avec Zip NURMITE PROJECT par Mémère
MODULE MÉTÉO (NURMITE) par ceyquem
MODULE FOOD (NURMITE) par ceyquem
Source avec Zip MODULE MEMOIRE (NURMITE) par tartempion

 Sources en rapport avec celle ci

Source avec Zip NURMITE PROJECT par Mémère
MODULE MÉTÉO (NURMITE) par ceyquem
MODULE FOOD (NURMITE) par ceyquem
Source avec Zip MODULE MÉMOIRE V1 par tartempion
Source avec Zip NURMITES : DEBUT DE MODULE DU CERVEAU par ToasTy

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

.: The Nurmite project :: [ par Mémère ] Et voila le premier projet de la communauté VbFrance! Le but qui n'est pas des moindres, réaliser un semblant d'intelligence artificielle. Pour y arri demande infos sur le projet NURMITE [ par seedorf ] salut, je suis nouveau et j'aimerai bien savoir plus sur le projet NURMITE que vous developpez, et comment je peux assister à ca et aider moi aussi à Projet Eboheze,un projet NURMITE avant l'heure... [ par ndj55 ] Salut à tous!voilà,perso,je travaille sur un programme d'IA depuis dejà 2 mois et demi... Ce programme s'appelle le projet Eboheze.Il en est à sa vers NURMITES [ par Ophidian ] tout simplement sublime quoique un peu simple jusqu'a present...juste pour me marrer, on peut remplacer "Log$ = Log$ + Chr$(10) + Chr$(13) + text$"par .: Nurmite Info :: [ par El Manipulator ] Juste pour m'excuser du retard et pour vous informer que malgré tout, ça avance petit à petit! Quasiment tous les modules sont expliqués, par contre i projet nurmite [ par vb6fr.dll ] j'ai un problème avec le projet nurmite, lorsque je l'éxécute avec vb, il met projet ou bibliothèque introuvable, et il sélectionne str$ dans la premi Nurmite: le module ROUTE [ par Sylderon ] Bonjour à tous.J'ai vu récemment ce projet et décidé de vous donner un coup de main.Aussi je vous propose de m'occuper du module ROUTE pour élaborer d bye bye! [ par BlackWizzard ] j'abandonne le projet nurmite...ça fait 2 semaines au moins que VB6 n'a pas été ouvert une seul fois!je suis en train d'apprendre de nouveaux language nourriture pour le nurmite [ par pilotex ] Je vous propose mon idée. Comme vous voulez lui donner de la nourriture pour que le nurmite survive, autant lui la faire chercher. Par exemple autour Nurmite pour quand?? [ par ttMan ] Pour quand les prochaines news nurmites??? Enfin ça repartait, déjà ça freine... Si vous avez besoin de bêta testeurs... je suis candidat!


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,702 sec (3)

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