Nurmites : debut de module du cerveau

Description

Bon ben voici le debut du module de cerveau que je suis en train de faire...Il est pas tres complet mais je preferai que vous me donniez votre avis avant que je le continue ! J'ai encore pas mal d'idees, genre les maladies infectieuses et autres mais pour ca il faudrai creer d'autres fonctions genre detecter si un autre nurmite est visible par le nurmite, pouvoir detecter l'odeur en + de la direction...bon voila, donnez-moi votre avis avant que je continue !!!

Source / Exemple :


'Voici le module de cerveau tout frais que je viens de faire
'Comme je sais pas la fonction pr se deplacer, j'utilise : Bouge(Nurmite as nurm, Direction as direction)

Const NURM_Free = True
Const NURM_Action = False

Type Nurm
    XPos As Integer
    YPos As Integer
    Age As Integer
    Generation As Integer
    Memory As NurmMemoryMatrix
    State As NurmState
    WorldVue As Vision
    Trajectoire As Route
    Props As Bio
End Type

Type NurmMemoryMatrix
End Type

Type NurmState
    Action As Boolean
    Action_Type As String
    Vie As Integer
    Sommeil As Integer
    Faim As Integer
    Soif As Integer
    Maladie As Integer
End Type

Type Bio
    Vie_Max As Integer
    Intelligence As Integer
    Resistance As Integer
    Vue As Integer
    Odorat As Integer
    Ouie As Integer
End Type

Type Vision
End Type

Type Route
End Type

'Cette fonction doit être appelee a chaque changement de cycle absolument !!!
Public Function NurmNewCycle(Nurmite As Nurm)
    Dim tmp As Integer
    Dim malus As Integer

    'Augmente la faim du Nurm
    tmp = Int(Rnd * 100) + 1
    Nurmite.State.Faim = Nurmite.State.Faim + tmp

    'Augmente la soif du Nurm
    tmp = Int(Rnd * 100) + 1
    Nurmite.State.Soif = Nurmite.State.Soif + tmp

    'Augmente le sommeil du Nurm
    tmp = Int(Rnd * 100) + 1
    Nurmite.State.Sommeil = Nurmite.State.Sommeil + tmp

    'Teste la faim, la soif et le sommeil du Nurmite
    If Nurmite.State.Faim > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "FAIM"
    If Nurmite.State.Sommeil > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "SOMMEIL"
    If Nurmite.State.Soif > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "SOIF"

    'Teste la maladie qui est due au vent
    malus = (((Int(Rnd * windspeed) + 3) * 8) - Nurmite.State.Props.Resistance)
    'Puis c'est la pluie qui afaiblit le nurmite
    If IsRaining = True Then
        malus = malus + (((Int(Rnd * 6) + 3) * 8) - Nurmite.State.Props.Resistance)
    End If
    'S'il n'y a aucun malus, le nurmite reprend des forces
    If malus <= 0 Then malus = -((Int(Rnd * 5) + 1) * Nurmite.Props.Resistance)

    'Ajoute le malus a la valeur de maladie du nurm
    Nurmite.State.Maladie = Nurmite.State.Maladie + malus

    'Execute l'action du Nurm
    Select Case Nurmite.State.Action_Type
        Case "FAIM"
            NurmChercheManger Nurmite, ODEUR_VIANDE
        Case "SOIF"
            NurmChercheManger Nurmite, ODEUR_EAU
        Case "SOMMEIL"
            NurmDort (Nurmite)
    End Select
End Function

'Fonction appelée quand le Nurm mange
'Je m'occupe pas des fonctions de NurmFood.bas
Public Function NurmMange(Nurmite As Nurm)
    Nurmite.State.Faim = Nurmite.State.Faim - 1500
    If Nurmite.State.Faim > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "FAIM"
End Function

'Quand le Nurm boit...
'Teste aussi s'il a encore soif
Public Function NurmBoit(Nurmite As Nurm)
    Nurmite.State.Soif = Nurmite.State.Soif - 1500
    If Nurmite.State.Soif > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "SOIF"
End Function

'Et là quand il dort
Public Function NurmDort(Nurmite As Nurm)
    Nurmite.State.Sommeil = Nurmite.State.Sommeil - 1500
    If Nurmite.State.Sommeil > (Nurmite.Props.Resistance * 100) Then Nurmite.State.Action_Type = "SOMMEIL"
End Function

'Recherche de nourriture quand il a faim ou soif
'Retourne Vrai si le nurmite a trouve a mange
'Retourne Faux si le nurmite n'a rien trouve...
Public Function NurmChercheManger(Nurmite As Nurm, Odeur As Odeur) As Boolean
    'Cherche une odeur quelconque
    Direction = FindNearestOdeur(Nurmite, Odeur)
    'S'il trouve l'odeur de la viande
    If Direction <> "" Then
        Bouge Nurmite, Direction
    Else
    'S'il ne trouve pas l'odeur de la viande, on va voir s'il est assez intelligent pour en chercher...
    'Comme ca ca renforce l'idee de la selection naturelle
    'Un nurmite peut mourir de faim s'il est pas assez intelligent pour chercher a manger
        If Nurmite.Props.Intelligence >= (Int(Rnd * 20) + 1) Then
            Direction = DetectNouvelleOdeur(Nurmite)
        End If
    End If
End Function

Public Function NurmDort(Nurmite As Nurm)
    Dim malus As Integer
    If DuBruit(Nurmite) = True Then malus = Int(Rnd * 100) + 1
    Nurmite.State.Sommeil = Nurmite.State.Sommeil - (Int(Rnd * 200) + 100)
End Function

Conclusion :


J'ai cree des caracteristiques pour les nurmites telles que leur intelligence, leur resistance, etc...ces donnees vont de 1 à 20 et pour le codage genetique ca sera bien facile, suffira de mettre les chiffres les uns apres les autres(en les formattant à 2 chiffres) pour donner la chaine "d'ADN"...(ex: 160811 -> 16 en intelligence, 8 en resistance et 11 en je sais pas quoi). Ces caracteristiques sont toutes aussi importantes les unes que les autres et le cerveau commence montre bien la selection naturelle qui se produit...Allez hop, depechez-vous de juger pour que je puisse continuer parce que je suis bourre d'idees !!!!!
@+,
le Toaster eleveur de nurm(je recommande Pedigree Nurm, la nourriture des champions)

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.