Schwarm-Simulation

Übersicht BlitzBasic Codearchiv

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen

 

CodeMaster

Betreff: Schwarm-Simulation

BeitragMo, Jan 05, 2004 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreimal dürft ihr raten was ich hier programmiert habe:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
AppTitle "Schwarm-Simulation :)"
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type Organism
 Field x#
 Field y#
 Field dir#
 Field speed#
 Field movement
End Type

CreateSwarm 25

While Not KeyDown(1)
 Cls
 UpdateSwarm
 ShowSwarm
 Flip
Wend
End

Function CreateSwarm(OrganismCount)
 For i = 1 To OrganismCount
  Temp.Organism = New Organism
  Temp\x# = Rand(GraphicsWidth())
  Temp\y# = Rand(GraphicsHeight())
  Temp\speed# = Rand(5)
  Temp\movement = Rnd(360)
 Next
End Function

Function UpdateSwarm()
 For Temp.Organism = Each Organism
  Temp\dir# = (Temp\dir# + Rnd(-5,5) + 360) Mod 360
  Temp\speed# = (Temp\Speed# + (Temp\Speed# + Rand(-1,1))) / 2
  If Temp\speed# < 0 Then Temp\speed# = 0
  If Temp\speed# > 5 Then Temp\speed# = 5
  Temp\x# = Temp\x# + Cos(Temp\dir#) * Temp\Speed#
  Temp\y# = Temp\y# + Sin(Temp\dir#) * Temp\Speed#
  If Temp\x# < 0 Then Temp\x# = Temp\x# + GraphicsWidth()
  If Temp\x# > GraphicsWidth() Then Temp\x# = Temp\x# - GraphicsWidth()
  If Temp\y# < 0 Then Temp\y# = Temp\y# + GraphicsHeight()
  If Temp\y# > GraphicsHeight() Then Temp\y# = Temp\y# - GraphicsHeight()
  Temp\movement = (Temp\movement + Temp\Speed# * 10 + 1) Mod 360
 Next
End Function

Function ShowSwarm()
 For Temp.Organism = Each Organism
  Oval Temp\x#-5,Temp\y#-5,10,10,1
  nx# = Temp\x#
  ny# = Temp\y#
  For i = 1 To 20
   ox# = nx#
   oy# = ny#
   nx# = Temp\x# + Cos(180 + Temp\dir#) * i * 3 + Sin(180 + Temp\Movement - i * 18) * i / 2 * Sin(180 + Temp\Dir#)
   ny# = Temp\y# + Sin(180 + Temp\dir#) * i * 3 + Cos(180 + Temp\Movement - i * 18) * i / 2 * Cos(180 + Temp\Dir#) 
   Line ox#,oy#,nx#,ny#
  Next
 Next
End Function


Wer mich kennt, wird wissen dass ich gerne solche Spielereien programmiere. Und auch wenns dem Titel hier nicht 100%ig gerecht wird, ich fand die Idee trotzdem lustig.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Triton

BeitragMo, Jan 05, 2004 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe, putzig Wink

Mach noch ne Eizelle wo sich einige von den Rackern rumscharen ^^

Shadow of the night

BeitragMo, Jan 05, 2004 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
wirklich putzig...

Die Idee vom hochgeachtetem Triton find ich gut, mach das zwei drei im Kreis um sie rumschwimmen und eine dann drauf los schwimmt.

hät ich glatt vergessen MfG Shadow of the Night
User posted image
  • Zuletzt bearbeitet von Shadow of the night am Mo, Jan 05, 2004 20:39, insgesamt einmal bearbeitet
 

CodeMaster

BeitragMo, Jan 05, 2004 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Na na, an was ihr da wieder denkt... Smile
Also ich hab jetzt noch ne "Bitte Folgen"-Funktion für die Maus geschrieben, sodass mit linker Maustaste alle ... Organismen sich auf den Mauszeiger stürzen:

Code: [AUSKLAPPEN]

Graphics 800,600,0,2
AppTitle "Schwarm-Simulation :)"
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type Organism
 Field x#
 Field y#
 Field dir#
 Field speed#
 Field movement
End Type

Global HotSpotX#=-1,HotSpotY#=-1,FollowHotSpot=0

CreateSwarm 25

While Not KeyDown(1)
 Cls
 FollowHotSpot = MouseDown(1)
 HotSpotX# = MouseX()
 HotSpotY# = MouseY()
 UpdateSwarm
 ShowSwarm
 Flip
Wend
End

Function CreateSwarm(OrganismCount)
 For i = 1 To OrganismCount
  Temp.Organism = New Organism
  Temp\x# = Rand(GraphicsWidth())
  Temp\y# = Rand(GraphicsHeight())
  Temp\speed# = Rand(5)
  Temp\movement = Rnd(360)
 Next
End Function

Function UpdateSwarm()
 For Temp.Organism = Each Organism
  If FollowHotSpot Then
   AngleDif# = (90 - ATan2(HotSpotX#-Temp\x#,HotSpotY#-Temp\y#) - Temp\dir# + 360) Mod 360
   If AngleDif# > 180 Then AngleDif# = AngleDif# - 360
   Temp\dir# = Temp\dir# + Sgn(AngleDif#) * Temp\speed#
  Else
   Temp\dir# = (Temp\dir# + Rnd(-5,5) + 360) Mod 360
  EndIf
  Temp\speed# = (Temp\Speed# + (Temp\Speed# + Rand(-1,1))) / 2
  If Temp\speed# < 0 Then Temp\speed# = 0
  If Temp\speed# > 5 Then Temp\speed# = 5
  Temp\x# = Temp\x# + Cos(Temp\dir#) * Temp\Speed#
  Temp\y# = Temp\y# + Sin(Temp\dir#) * Temp\Speed#
  If Temp\x# < 0 Then Temp\x# = Temp\x# + GraphicsWidth()
  If Temp\x# > GraphicsWidth() Then Temp\x# = Temp\x# - GraphicsWidth()
  If Temp\y# < 0 Then Temp\y# = Temp\y# + GraphicsHeight()
  If Temp\y# > GraphicsHeight() Then Temp\y# = Temp\y# - GraphicsHeight()
  Temp\movement = (Temp\movement + Temp\Speed# * 10 + 1) Mod 360
 Next
End Function

Function ShowSwarm()
 For Temp.Organism = Each Organism
  Oval Temp\x#-5,Temp\y#-5,10,10,1
  nx# = Temp\x#
  ny# = Temp\y#
  For i = 1 To 20
   ox# = nx#
   oy# = ny#
   nx# = Temp\x# + Cos(180 + Temp\dir#) * i * 3 + Sin(180 + Temp\Movement - i * 18) * i / 2 * Sin(180 + Temp\Dir#)
   ny# = Temp\y# + Sin(180 + Temp\dir#) * i * 3 + Cos(180 + Temp\Movement - i * 18) * i / 2 * Cos(180 + Temp\Dir#) 
   Line ox#,oy#,nx#,ny#
  Next
 Next
End Function


Desweiteren hatte ich vor, vom Sinnbild des Spermiums wegzukommen und eine Art echte Schwarmsimulation einfacher Lebewesen zu programmieren: Sollten sich zwei Lebewesen treffen, so soll ein neues entstehen. Die Lebewesen sollen eine maximale Lebensdauer haben und schließlich, nach einer gewissen Lebenszeit, aussterben. Ich will sehen, wie sich der Schwarm verhält wenn er sich "vermehren" kann.
Mal sehen, was draus wird.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

CodeMaster

BeitragMo, Jan 05, 2004 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich hab jetzt ein wenig Leben in die Geschichte gehaucht:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
AppTitle "Schwarm-Simulation :)"
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Type Organism
 Field x#
 Field y#
 Field dir#
 Field speed#
 Field movement
 Field birthtime
 Field lastchild
End Type

Global HotSpotX#=-1,HotSpotY#=-1,FollowHotSpot=0

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lebenszyklusvariablen - BITTE VERÄNDERN <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Global Anfangsbestand# = 30    ; Anfänglich vorhandene Organismen
Global Lebensdauer# = 20       ; Bestimmt die Lebensdauer der Organismen in Sekunden
Global Geschlechtsreife# = 4   ; Bestimmt die Dauer in Sekunden, bis die Organismen zeugungsfähig werden
Global Schonzeit# = 2          ; Bestimmt die Dauer in Sekunden, in denen sich gerade vermehrte Organismen zeugungsunfähig sind

CreateSwarm(Anfangsbestand)

While Not KeyDown(1)
 Cls
 If MouseHit(2) Then createorganism MouseX(),MouseY()
 FollowHotSpot = MouseDown(1)
 HotSpotX# = MouseX()
 HotSpotY# = MouseY()
 UpdateSwarm
 ShowSwarm
 Flip
Wend
End

Function CreateSwarm(OrganismCount)
 For i = 1 To OrganismCount
  Temp.Organism = New Organism
  Temp\x# = Rand(GraphicsWidth())
  Temp\y# = Rand(GraphicsHeight())
  Temp\speed# = Rand(5)
  Temp\movement = Rnd(360)
  Temp\birthtime = MilliSecs()
  Temp\lastchild = MilliSecs()
 Next
End Function

Function CreateOrganism(x#,y#)
 Temp.Organism = New Organism
 Temp\x# = x#
 Temp\y# = y#
 Temp\speed# = 0
 Temp\movement = Rnd(360)
 Temp\birthtime = MilliSecs()
 Temp\lastchild = MilliSecs()
End Function

Function UpdateSwarm()
 For Temp.Organism = Each Organism
  If (MilliSecs() - Temp\birthtime) > Lebensdauer * 1000 Then
   Delete Temp
  Else
   If FollowHotSpot Then
    AngleDif# = (90 - ATan2(HotSpotX#-Temp\x#,HotSpotY#-Temp\y#) - Temp\dir# + 360) Mod 360
    If AngleDif# > 180 Then AngleDif# = AngleDif# - 360
    Temp\dir# = Temp\dir# + Sgn(AngleDif#) * Temp\speed#
   Else
    Temp\dir# = (Temp\dir# + Rnd(-5,5) + 360) Mod 360
   EndIf
   Temp\speed# = (Temp\Speed# + (Temp\Speed# + Rand(-1,1))) / 2
   If Temp\speed# < 0 Then Temp\speed# = 0
   maxspeed# = 8 - (MilliSecs() - Temp\birthtime) * 8 / (Lebensdauer * 1000)
   If Temp\speed# > maxspeed# Then Temp\speed# = maxspeed#
   Temp\x# = Temp\x# + Cos(Temp\dir#) * Temp\Speed#
   Temp\y# = Temp\y# + Sin(Temp\dir#) * Temp\Speed#
   If Temp\x# < 0 Then Temp\x# = Temp\x# + GraphicsWidth()
   If Temp\x# > GraphicsWidth() Then Temp\x# = Temp\x# - GraphicsWidth()
   If Temp\y# < 0 Then Temp\y# = Temp\y# + GraphicsHeight()
   If Temp\y# > GraphicsHeight() Then Temp\y# = Temp\y# - GraphicsHeight()
   For Partner.Organism = Each Organism
    If Not Handle(Temp) = Handle(Partner) Then
     If (MilliSecs() - Temp\birthtime > Geschlechtsreife * 1000) And (MilliSecs() - Partner\birthtime > Geschlechtsreife * 1000) Then
      If (MilliSecs() - Temp\lastchild > Schonzeit * 1000) And (MilliSecs() - Partner\lastchild > Schonzeit * 1000) Then
       If Sqr((Temp\x#-Partner\x#)^2+(Temp\y#-Partner\y#)^2) < 5 Then
        If Rand(0,(MilliSecs() - Temp\birthtime) * 2 / (Lebensdauer * 1000)) = 0 Then
         CreateOrganism(Temp\x#,Temp\y#)
         Temp\lastchild = MilliSecs()
         Partner\lastchild = MilliSecs()
        EndIf
       EndIf
      EndIf
     EndIf
    EndIf
   Next
   Temp\movement = (Temp\movement + Temp\Speed# * 10 + 1) Mod 360
  EndIf
 Next
End Function

Function ShowSwarm()
 For Temp.Organism = Each Organism
  OrganismCount = OrganismCount + 1
  colr = 255 - (MilliSecs() - Temp\birthtime) * 255 / (Lebensdauer * 1000)
  Color colr,colr,colr
  size# = 5 + (MilliSecs() - Temp\birthtime) * 6 / (Lebensdauer * 1000)
  Oval Temp\x#-size#/2,Temp\y#-size#/2,size#,size#,1
  nx# = Temp\x#
  ny# = Temp\y#
  For i = 1 To (MilliSecs() - Temp\birthtime) * 20 / (Lebensdauer * 1000) + 8
   ox# = nx#
   oy# = ny#
   nx# = Temp\x# + Cos(180 + Temp\dir#) * i * 2.5 + Sin(180 + Temp\Movement - i * 18) * i / 2 * Sin(180 + Temp\Dir#)
   ny# = Temp\y# + Sin(180 + Temp\dir#) * i * 2.5 + Cos(180 + Temp\Movement - i * 18) * i / 2 * Cos(180 + Temp\Dir#) 
   Line ox#,oy#,nx#,ny#
  Next
 Next
 Color 255,0,0
 If OrganismCount = 0 Then Cls : Text GraphicsWidth()/2,GraphicsHeight()/2,"Ihr Schwarm ist ausgestorben!!!",1,1 : Flip : Delay 1000 : End
 Text 1,1,"Momentan lebende Organismen: " + OrganismCount
End Function


Was ist daran anders? Folgendes:
- Die Organismen haben eine begrenze Lebensdauer
- Die Organismen können wachsen, werden mit der Zeit jedoch auch langsamer und stetig impotenter (für die Alten stehten die Chancen 1:4 für eine geglückte Geburt)
- Die Organismen können Kinder kriegen

Regeln fürs Kinderkriegen:
- So ziemlich jeder kann mit jedem ***
- Organismen müssen erst in Geschlechtsreife kommen, damit sie zeugungsfähig sind
- Nach einer Geburt gibt's eine kurze Schonzeit, in der die Organismen keine Nachkömmlinge kriegen können

Ist noch nicht perfekt und so, aber es funktioniert. Spielt einfach ein wenig an den Werten rum und schaut, was passiert!!

[EDIT]
Was ich noch vergessen hatte:
- Mit der linken Maustaste könnt ihr wie schon vorher die Organismen am Mauszeiger versammeln.
- Mit der rechten Maustaste könnt ihr künstlich einen Organismus züchten.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

CodeMaster

BeitragDi, Jan 06, 2004 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Und schon wieder eine neue Version. Aber eine komplett von Anfang an neu gecodete Version.
Neu ist, dass die Organismen sich jetzt Partner suchen, einen Hochzeitstanz vollführen und sich schließlich vermehren.

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

AppTitle "Schwar-Simulation 2"

Const Lifetime = 30
Const PotentAge = 6
Const ImpotentPeriod = 6
Const NoPleasurePeriod = 2
Const ShowRelationships = True
Const ShowBirthplaces = True

Type Organism
 Field x#
 Field y#
 Field dir#
 Field speed#
 Field movement
 Field birthtime
 Field partner
 Field lastchild
End Type

Type Birthplace
 Field x#
 Field y#
 Field expiry
End Type

CreateSwarm(20)

While Not KeyDown(1)
 Cls
 UpdateSwarm
 UpdateBirthplaces
 ShowSwarm
 Flip
Wend
End

Function CreateSwarm(OrganismCount)
 For i = 1 To OrganismCount
  CreateOrganism(Rnd(GraphicsWidth()),Rnd(GraphicsHeight()))
 Next
End Function

Function CreateOrganism(x#,y#)
 Temp.Organism = New Organism
 Temp\x# = x#
 Temp\y# = y#
 Temp\dir# = Rand(360)
 Temp\speed = 0
 Temp\movement = Rand(360)
 Temp\birthtime = MilliSecs()
 Temp\partner = 0
 Temp\lastchild = MilliSecs()
 Temp2.Birthplace = New Birthplace
 Temp2\x# = x#
 Temp2\y# = y#
End Function

Function UpdateSwarm()
 For Temp.Organism = Each Organism
  If age(Temp\birthtime) > Lifetime*1000 Then
   Delete Temp
  Else
   Temp\Speed# = Temp\speed# + Rnd(-1,1)
   If Temp\Speed# < 0 Then Temp\speed# = 0
   If Temp\Speed# > 4 Then Temp\speed# = 4
   Temp\movement = (Temp\movement + Temp\speed# * 10) Mod 360
   If Temp\partner Then
    Partner.Organism = Object.Organism(Temp\partner)
    If Partner = Null Then
     Temp\partner = 0
    Else
     If distance#(Temp\x,Temp\y,Partner\x,Partner\y) > 50 Then
      Temp\partner = 0
      Partner\partner = 0
     Else
      If ShowRelationShips Then Line Temp\x#,Temp\y#,Partner\x#,Partner\y#
      Temp\dir# = Temp\dir# + Sgn(turnto(Temp\x#,Temp\y#,Partner\x#,Partner\y#,Temp\dir#)) * Temp\speed# * 2
      If distance#(Temp\x#,Temp\y#,Partner\x#,Partner\y#) < 10 Then
       If (age(Temp\lastchild) > ImpotentPeriod * 1000) And (age(Partner\lastchild) > ImpotentPeriod * 1000) Then
        CreateOrganism(Temp\x#,Temp\y#)
        Temp\lastchild = MilliSecs()
        Partner\lastchild = MilliSecs()
        Temp\partner = 0
        Partner\partner = 0
       EndIf
      EndIf
     EndIf
    EndIf
   Else
    For NewPartner.Organism = Each Organism
     If (Not Handle(NewPartner) = Handle(Temp)) Then
      If distance#(Temp\x#,Temp\y#,NewPartner\x#,NewPartner\y#) < 30 Then
       If NewPartner\partner = 0 Then

        If (age(Temp\birthtime) > PotentAge * 1000) And (age(NewPartner\birthtime) > PotentAge * 1000) Then
         If (age(Temp\lastchild) > NoPleasurePeriod * 1000) And (age(NewPartner\lastchild) > NoPleasurePeriod * 1000) Then
          Temp\partner = Handle(NewPartner)
          NewPartner\partner = Handle(Temp)
         EndIf
        EndIf
       EndIf
      EndIf
     EndIf
    Next
    Temp\dir# = (Temp\dir# + Rnd(-2,2) + 360) Mod 360
   EndIf
   Temp\x# = Temp\x# + Cos(Temp\dir#) * Temp\speed#
   Temp\y# = Temp\y# + Sin(Temp\dir#) * Temp\speed#
   If Temp\x# < 0 Then Temp\x# = Temp\x# + GraphicsWidth()
   If Temp\x# > GraphicsWidth() Then Temp\x# = Temp\x# - GraphicsWidth()
   If Temp\y# < 0 Then Temp\y# = Temp\y# + GraphicsHeight()
   If Temp\y# > GraphicsHeight() Then Temp\y# = Temp\y# - GraphicsHeight()
  EndIf
 Next
End Function

Function ShowSwarm()
 Color 255,255,255
 For Temp.Organism = Each Organism
  LivingOrganisms = LivingOrganisms + 1
  clr = 255 - age(Temp\birthtime) * 255 / (Lifetime * 1000)
  Color clr,clr,clr
  DrawOrganism(Temp\x#,Temp\y#,Temp\dir#,age(Temp\birthtime)*10/(Lifetime*1000)+5,Temp\movement)
 Next
 Color 255,0,0
 Text 1,1,"Lebendige Organismen: " + LivingOrganisms
End Function

Function UpdateBirthplaces()
 For Temp.Birthplace = Each Birthplace
  Temp\expiry = Temp\expiry + 1
  If Temp\expiry > 100 Then
   Delete Temp
  Else
   If ShowBirthplaces Then
    clr = 255 - 255 * Temp\expiry / 100
    size = 100 * Temp\expiry / 100
    Color 0,clr,0
    Oval Temp\x#-size/2,Temp\y#-size/2,size,size,0
   EndIf
  EndIf
 Next
End Function

Function age(birthtime)
 Return MilliSecs() - birthtime
End Function

Function distance#(x1#,y1#,x2#,y2#)
 Return Sqr((x2-x1)^2+(y2-y1)^2)
End Function

Function turnto(x1#,y1#,x2#,y2#,dir#)
 Temp# = (90 - ATan2(x2#-x1#,y2#-y1#) - dir# + 360) Mod 360
 If Temp# > 180 Then Temp# = Temp# - 360
 Return Temp#
End Function

Function DrawOrganism(x#,y#,dir#,size#,anim)
 Oval x#-size#/2,y#-size#/2,size#,size#,1
 nx# = x# + Cos(dir#) * size# / 2
 ny# = y# + Sin(dir#) * size# / 2
 For i = 1 To size#
  ox# = nx#
  oy# = ny#
  nx# = x# + Cos(180 + dir#) * (size# / 2 + i*4) + Cos(180+dir#+90) * Sin(anim - i * (360 / size#)) * i * .75
  ny# = y# + Sin(180 + dir#) * (size# / 2 + i*4) + Sin(180+dir#+90) * Sin(anim - i * (360 / size#)) * i * .75
  Line ox#,oy#,nx#,ny#
 Next
End Function


Bisher hat der Schwarm etwa 2 Minuten überlebt, danach habe ich abgebrochen. Wäre schön wenn ihr ein wenig an den oben stehenden Variablen manipulieren würdet und mir sagen würdet, wie lange der Schwarm bei euch überlebt.
Viel Spaß Very Happy
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

OJay

BeitragDi, Jan 06, 2004 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
mit der vorletzten version mit orginial einstellungen, lief das teil knapp eine minute, dann waren alle tod.
dann hab ich die geschlechtsreife verringert, und die temporäre unfruchtbarkeit verkürtzt. dann lief es unendlich mit fast sinus-gleichem populations-verlauf zwischen 60 und 100 einheiten. Smile

die neuste werd ich heut abend mal testen. SEHR interessant das ganze! *thumbsup*

BladeRunner

Moderator

BeitragDi, Jan 06, 2004 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
...läuft jetzt seit einer ca. 3/4 h sehr stabil..., immer ca. 60-110 Lebensformen...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Mr.Keks

BeitragDi, Jan 06, 2004 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir kam es ab und zu zu zu starken ballungsräumen Smile. soll heißen, einige wesen haben sich an derselben stelle niedergelassen und aufgrund der von mir runtergesetzten unfruchtbarkeitsphase sowie der gesenkten geschlechtsreife kam es dazu, dass dort immer mehr wesen entstanden, die ihrereseits weitere wesen erzeugten... danach war es unmöglich langsam und ich konnte mitverfolgen, wie die populations jedes frame um hunderte anstieg.... bis dann irgendwann garnichts mehr lief.
MrKeks.net
 

CodeMaster

BeitragDi, Jan 06, 2004 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, genau das Gleiche habe ich bei mir zuerst auch beobachtet: exponentielles Wachstum wie es bei Einzellern und simplen Lebewesen der Fall ist. Nur leider zu rechenaufwendig für den PC Smile
Das war übrigens auch der Grund, weshalb ich ein Mindestalter und eine Unfruchtbarkeitsperiode eingebaut habe - und in der letzten Version sogar eine "Unlustperiode", in der die Fiecher einfach keine Lust haben, sich fortzupflanzen.
Jetzt explodiert es nicht mehr so sondern pendelt sich langsam ein - interessant das mitzuverfolgen, wie ich finde.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

newkev

BeitragDi, Jan 06, 2004 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
cooles prog ! Very Happy
bei hat der schwarm ca 20 min durchgehalten
es waren immer so um die 20 lebewesen da
und das bei den original einstellungen
Signatur? Gibts nich^^
 

IonPainter

BeitragDi, Jan 06, 2004 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
bei der letzten version vermehren sich die lebewesen mit den originaleinstellungen immer weiter, bei 500 hab ich abgebrochen...
 

Edlothiol

BeitragMi, Jan 07, 2004 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist lustig Very Happy
Oh, jetzt sinds schon 125 lebende, er wird langsamer...

Julz

BeitragMi, Jan 07, 2004 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab hier:

clr = 255 - age(Temp\birthtime) * 255 / (Lifetime * 500)

hinten 500 statt 1000 dann bleiben es durchgehend ca. 50 lebewesen Very Happy

Shadow of the night

BeitragMi, Jan 07, 2004 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Läuft seit zwei Stunden waren immer zwischen 170 und 200 "Tierchen".

MfG Shadow of the Night
User posted image
 

CodeMaster

BeitragMi, Jan 07, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@Julz: Kein wunder! Was du veränderst, ist die Graufärbung der Tierchen - das bedeut du färbst sie schwarz und siehst sie natürlich dann nicht.

Bei mir sind's nach 10 Minuten bereits 250. Das Komische: Bei nem Kumpel haben die Viecher in insgesamt 5 Neustarts keine 2 Minuten überlebt.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

BladeRunner

Moderator

BeitragMi, Jan 07, 2004 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Zufall eben.... müssen sich ja auch am Anfang (wo die Anzahl an "Würmchen" noch klein ist) genug finden und gaaaaanz dolll liebdrücken.... Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

ChristianH

BeitragMi, Jan 07, 2004 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Cooles Prog! Wenn das mein Bio-Lehrer sieht... Der steht auf solche Spielereien. Im Untericht labert der die ganze Zeit von Computer...
 

CodeMaster

BeitragMi, Jan 07, 2004 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Vor allem ist mir jetzt noch eine ziemlich gute Idee gekommen: Setzt die Variablen auf eure Wunschwerte und kompiliert den Code.
Anschließend die Endung .exe in .scr ändern und mit rechter Maustaste auf das Icon klicken und im Menü dann auf "Installieren". Fertig ist ein lustiger Bildschirmschoner!

Habt ihr noch Ideen für Erweiterungen? Vielleicht könnte man ja sogar ein Spiel draus machen - mir fehlt nur der zündende Gedanke.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

boss@future

Betreff: Wettrennen....

BeitragMi, Jan 07, 2004 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnt doch auch ein Wettrennen draus machen... muss sich als son teil durch enge Gänge usw. schlagen und darf dabei nicht die Wände berühren, die sich natürlich zusammenziehen und ausdehnen Wink
is bestimmt lustig..... Und das ziel ist es hmmm... ratet mal.. .is ja ned sooo schwer Wink
Muss möglichst viele kinder,Enkel, Urenkel usw.... erzeugen... dann gibst ne Highscore wer am meisten zur Evolution beigetragen hat.....
am besten noch mit erbaberrationen... Fehlgeburt usw.....

Nur so'n gedanke....

Cya FLO

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group