Difference between revisions of "King Bot"
From WikiManual
m (cusomizing king bot selection?) |
(Yep, that's the code) |
||
Line 2: | Line 2: | ||
---- | ---- | ||
− | + | The below code demonstrates how the code determines which bot is the "fittest" | |
− | |||
− | |||
− | |||
<pre> | <pre> | ||
' returns the fittest robot (selected through the score function) | ' returns the fittest robot (selected through the score function) |
Revision as of 16:32, 25 February 2006
Selects the most successful bot for a given value of success. Typically this is the bot with the most offspring.
The below code demonstrates how the code determines which bot is the "fittest"
' returns the fittest robot (selected through the score function) ' altered from the bot with the most generations ' to the bot with the most invested energy in itself and children Function fittest() As Integer Dim t As Integer Dim s As Double Dim Mx As Double Mx = 0 For t = 1 To MaxRobs If rob(t).Exist And Not rob(t).Veg Then s = score(t, 1, 2, 0) If s >= Mx Then Mx = s fittest = t End If End If Next t End Function
or this?
' does various things: with ' tipo=0 returns the number of descendants for maxrec generations ' tipo=1 highlights the descendants ' tipo=2 searches up the tree for eldest ancestor, then down again ' tipo=3 draws the lines showing kinship relations Function score(ByVal r As Integer, ByVal reclev As Integer, maxrec As Integer, tipo As Integer) As Double Dim al As Integer Dim dx As Single Dim dy As Single Dim cr As Long Dim ct As Long Dim t As Integer If tipo = 2 Then plines (r) score = 0 For t = 1 To MaxRobs If rob(t).Exist Then If rob(t).parent = rob(r).AbsNum Then If reclev < maxrec Then score = score + score(t, reclev + 1, maxrec, tipo) score = score + InvestedEnergy(t) If tipo = 1 Then rob(t).highlight = True If tipo = 3 Then dx = (rob(r).pos.x - rob(t).pos.x) / 2 dy = (rob(r).pos.y - rob(t).pos.y) / 2 cr = RGB(128, 128, 128) ct = vbWhite If rob(r).AbsNum > rob(t).AbsNum Then cr = vbWhite ct = RGB(128, 128, 128) End If Line (rob(t).pos.x, rob(t).pos.y)-Step(dx, dy), ct Line -(rob(r).pos.x, rob(r).pos.y), cr End If End If End If Next t If tipo = 1 Then Form1.Cls DrawAllRobs End If End Function