Kleeblatt Wald [B3D]

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

FreetimeCoder

Betreff: Kleeblatt Wald [B3D]

BeitragMi, Sep 06, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ein Wald ist es noch nicht, aber was nicht ist kann noch werden:

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

Global Kamera=CreateCamera()
PositionEntity Kamera,0,40,-180

Global Licht=CreateLight()

Global Population=0
Global Treerange=40

Type Tree
Field Tr
Field ee
Field Grow#
Field Lifetime
Field Maxlifetime
Field Samenzeit
Field Samenperiode
Field MaxWachstum#
Field Death
End Type

Type Samen
Field Sa
Field men
Field Speed#
Field Survive
End Type

Global Boden=CreatePlane()
EntityColor Boden,100,200,0

While Not KeyHit(1)
   Cls
   If KeyHit(28)
      CreateTree(Rnd(-Treerange,Treerange),Rnd(-Treerange,Treerange))
   EndIf
   UpdateTrees()
   UpdateSamen()
   UpdateWorld
   RenderWorld
   frames=frames+1
   If MilliSecs()-render_time>=1000 Then
      fps=frames
      frames=0
      render_time=MilliSecs()
   EndIf
   Text 0,15, "Fps: "+fps
   If Population=1
      Text 0,0,"Population beträgt "+Population+" Baum"
   Else
      Text 0,0,"Population beträgt "+Population+" Bäume"
   EndIf
   Flip
Wend
End

Function CreateTree(x,z)
   Tr.Tree=New Tree
   Population=Population+1
   Tr\ee=Addtree()
   Tr\Grow#=0.1
   Tr\MaxWachstum#=Rnd(2.0,17.0)
   Tr\Lifetime=0
   Tr\Maxlifetime=Rnd(100,3000)
   Tr\Samenzeit=0
   Tr\Samenperiode=Rnd(100,300)
   Tr\Death=0
   PositionEntity Tr\ee,x,0,z
   ScaleEntity Tr\ee,Tr\Grow,Tr\Grow,Tr\Grow
   If CheckTrees(Tr\ee)
      Tr\Death=1
   EndIf
End Function

Function UpdateTrees()
For Tr.Tree=Each Tree
   Tr\Lifetime=Tr\Lifetime+1
   If Tr\Lifetime<Tr\Maxlifetime And Tr\Death=0
      If Tr\Grow<Tr\MaxWachstum
         Tr\Grow=Tr\Grow+0.01
         PositionEntity Tr\ee,EntityX(Tr\ee),MeshHeight(Tr\ee)/2,EntityZ(Tr\ee)
         ScaleEntity Tr\ee,Tr\Grow,Tr\Grow,Tr\Grow
      EndIf
      If Tr\Grow>1.9 And Tr\Grow<Tr\MaxWachstum
         If Tr\Samenzeit<Tr\Samenperiode
            Tr\Samenzeit=Tr\Samenzeit+1
         Else
            Tr\Samenzeit=0
            For Sam=0 To Rnd(0,1)
               CreateSamen(EntityX(Tr\ee),EntityZ(Tr\ee))
            Next
         EndIf
      EndIf
   Else
      If Tr\Death=0
         Tr\Death=1
      EndIf
   EndIf
   If Tr\Death=1
      If Tr\Grow>0.1
         Tr\Grow=Tr\Grow-0.01
         ScaleEntity Tr\ee,Tr\Grow,Tr\Grow,Tr\Grow
      Else
         DelChilds=CountChildren(Tr\ee)
         For DChild=1 To DelChilds
            FreeEntity GetChild(Tr\ee,DChild)
         Next
         Population=Population-1
         FreeEntity Tr\ee
         Delete TR
      EndIf
   EndIf
Next
End Function

Function CreateSamen(X,Z)
Sa.Samen=New Samen
Sa\men=CreateSphere(2)
ScaleEntity Sa\men,0.1,0.1,0.1
EntityColor Sa\men,255,0,0
PositionEntity Sa\men,X,3,Z
RotateEntity Sa\men,0,Rnd(0,360),0
Sa\Survive=Rnd(0,3)
Sa\Speed#=Rnd(0.1,1)
End Function

Function CheckTrees(Check_Tree)
   For Tr.Tree=Each Tree
      If Tr\ee<>Check_Tree
         If EntityDistance(Tr\ee,Check_Tree)<20
            Grow1#=CheckTreeGrow(Check_Tree)
            If Grow1 < Tr\Grow
               Return 1
            Else
               Tr\Death=1
               Return 0
            EndIf
         EndIf
      EndIf
   Next
End Function

Function CheckTreeGrow(Check_Tree)
   For Tr.Tree=Each Tree
      If Tr\ee<>Check_Tree
         Return Tr\Grow      
      EndIf
   Next
End Function

Function UpdateSamen()
For Sa.Samen=Each Samen
   If EntityY(Sa\men)>0
      MoveEntity Sa\men,0,0,1
      TranslateEntity Sa\men,0,-0.1,0
   Else
      If Sa\Survive<>0
         CreateTree(EntityX(Sa\men),EntityZ(Sa\men))
      EndIf
      FreeEntity Sa\men
      Delete Sa
   EndIf
   Next
End Function

Function Addtree()
TreeC=CreateCone(6)
Leafs=CreatePivot(TreeC)
EntityColor TreeC,100,100,0

BrushLeaf=CreateBrush(0,255,0)
Leaf=CreateMesh()
SurfaceLeaf=CreateSurface(Leaf,BrushLeaf)
V1=AddVertex(SurfaceLeaf,1,0,-1)
V2=AddVertex(SurfaceLeaf,-1,0,-1)
V3=AddVertex(SurfaceLeaf,0,-0.5,0)
AddTriangle(SurfaceLeaf,V1,V2,V3)   
V4=AddVertex(SurfaceLeaf,1,0,-2)
AddTriangle(SurfaceLeaf,V1,V4,V2)
V5=AddVertex(SurfaceLeaf,-1,0,-2)
AddTriangle(SurfaceLeaf,V4,V5,V2)
V6=AddVertex(SurfaceLeaf,0,-0.5,-3)
AddTriangle(SurfaceLeaf,V4,V6,V5)
UpdateNormals Leaf

Leaf2=CopyMesh(Leaf)
Leaf3=CopyMesh(Leaf)

RotateMesh Leaf,12,0,0
RotateEntity Leaf,0,120,0
PositionEntity Leaf,0,1.4,0
;EntityTexture Leaf,Leaftexture
EntityParent Leaf,Leafs
EntityShininess Leaf,0.5

RotateMesh Leaf2,12,0,0
RotateEntity Leaf2,0,240,0
PositionEntity Leaf2,0,1.4,0
;EntityTexture Leaf2,Leaftexture
EntityParent Leaf2,Leafs
EntityShininess Leaf2,0.5

RotateMesh Leaf3,12,0,0
RotateEntity Leaf3,0,0,0
PositionEntity Leaf3,0,1.4,0
;EntityTexture Leaf3,Leaftexture
EntityParent Leaf3,Leafs
EntityShininess Leaf3,0.5

EntityFX TreeC,16
Return TreeC
End Function


OpenSource also ran an den Code.
Viel Spaß noch
MfG
FreetimeCoder
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
  • Zuletzt bearbeitet von FreetimeCoder am Do, Sep 07, 2006 6:38, insgesamt 2-mal bearbeitet

Schranz0r

BeitragMi, Sep 06, 2006 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ich würde es eher "Kleeblätter" nennen Very Happy

EDIT:
Ich such noch das mit vier blättern
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 

Mr Hopp

BeitragMi, Sep 06, 2006 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ein lustiges Programm, mir gefällts! Very Happy

@Schranz0r: Warst du nicht der, der nur Müll postet? DAS war wieder so ein Beitrag. Ein bisschen beleidigend war das auch Confused

FreetimeCoder

BeitragMi, Sep 06, 2006 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich hab ja gesagt, dass das kein Wald ist, und Kleeblätter sind doch auch schön Wink

Wenn jemand etwas ändern will, kann er es ja gerne versuchen.

Wer vierblätterige Bäume (Kleebläter) suchen will ersetzt Addtree() durch:

Code: [AUSKLAPPEN]
Function Addtree()
TreeC=CreateCone(6)
Leafs=CreatePivot(TreeC)
EntityColor TreeC,100,100,0

BrushLeaf=CreateBrush(0,255,0)
Leaf=CreateMesh()
SurfaceLeaf=CreateSurface(Leaf,BrushLeaf)
V1=AddVertex(SurfaceLeaf,1,0,-1)
V2=AddVertex(SurfaceLeaf,-1,0,-1)
V3=AddVertex(SurfaceLeaf,0,-0.5,0)
AddTriangle(SurfaceLeaf,V1,V2,V3)   
V4=AddVertex(SurfaceLeaf,1,0,-2)
AddTriangle(SurfaceLeaf,V1,V4,V2)
V5=AddVertex(SurfaceLeaf,-1,0,-2)
AddTriangle(SurfaceLeaf,V4,V5,V2)
V6=AddVertex(SurfaceLeaf,0,-0.5,-3)
AddTriangle(SurfaceLeaf,V4,V6,V5)
UpdateNormals Leaf

Blaeter=Rnd(0,10)
If Blaeter=0
   Leaf2=CopyMesh(Leaf)
   Leaf3=CopyMesh(Leaf)
   Leaf4=CopyMesh(Leaf)
   
   RotateMesh Leaf,12,0,0
   RotateEntity Leaf,0,0,0
   PositionEntity Leaf,0,1.4,0
   EntityParent Leaf,Leafs
   EntityShininess Leaf,0.5
   
   RotateMesh Leaf2,12,0,0
   RotateEntity Leaf2,0,90,0
   PositionEntity Leaf2,0,1.4,0
   EntityParent Leaf2,Leafs
   EntityShininess Leaf2,0.5
   
   RotateMesh Leaf3,12,0,0
   RotateEntity Leaf3,0,180,0
   PositionEntity Leaf3,0,1.4,0
   EntityParent Leaf3,Leafs
   EntityShininess Leaf3,0.5

   RotateMesh Leaf4,12,0,0
   RotateEntity Leaf4,0,270,0
   PositionEntity Leaf4,0,1.4,0
   EntityParent Leaf4,Leafs
   EntityShininess Leaf3,0.5
   
Else
   Leaf2=CopyMesh(Leaf)
   Leaf3=CopyMesh(Leaf)
   
   RotateMesh Leaf,12,0,0
   RotateEntity Leaf,0,120,0
   PositionEntity Leaf,0,1.4,0
   EntityParent Leaf,Leafs
   EntityShininess Leaf,0.5
   
   RotateMesh Leaf2,12,0,0
   RotateEntity Leaf2,0,240,0
   PositionEntity Leaf2,0,1.4,0
   EntityParent Leaf2,Leafs
   EntityShininess Leaf2,0.5
   
   RotateMesh Leaf3,12,0,0
   RotateEntity Leaf3,0,0,0
   PositionEntity Leaf3,0,1.4,0
   EntityParent Leaf3,Leafs
   EntityShininess Leaf3,0.5
EndIf
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Schranz0r

BeitragMi, Sep 06, 2006 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Mr Hopp hat Folgendes geschrieben:


@Schranz0r: Warst du nicht der, der nur Müll postet? DAS war wieder so ein Beitrag. Ein bisschen beleidigend war das auch Confused


Hmm wenn ich so ein paar von deinen Posts anschaue.....
Da ist genauso Müll dabei, also ----> Wer im Glashaus....
Kennst ja Wink

Was war da bitte beleidigend in meinen ersten Post??
Ich habe damit lediglich ausgedrückt, das ich es lustig finde das Programm,
und das ich es anderes genannt hätte.
Nicht mehr, und nicht weniger
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

FreetimeCoder

BeitragMi, Sep 06, 2006 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs jetzt umbenannt Wink
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Schranz0r

BeitragMi, Sep 06, 2006 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo , hab schon gesehen Very Happy
Aber schaut doch echt so aus , oder?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

FreetimeCoder

BeitragMi, Sep 06, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon gut, ich habs auch nicht als Beleidigung aufgefasst, das ganze war ursprünglich dazu gedacht, den Umgang mit Addvertex und so zu lernen, und dann hab ich einfach weitergemacht.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Cat

BeitragMi, Sep 06, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hilfe, die Invasion der Bäume!!

Ne, Scherz Laughing

Gefällt mir, sieht witzig aus
Intel Core 2 Duo E6300 (2 x 1,86 Ghz)

2 x 1024 MB Arbeitsspeicher

NVidia GeForce 8800 GT

Schranz0r

BeitragMi, Sep 06, 2006 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
FreetimeCoder hat Folgendes geschrieben:
Schon gut, ich habs auch nicht als Beleidigung aufgefasst, das ganze war ursprünglich dazu gedacht, den Umgang mit Addvertex und so zu lernen, und dann hab ich einfach weitergemacht.


Dafür ist es doch super geworden!!

Weiter so Wink
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group