Small Simulator
BlitzPlus Forums/BlitzPlus Programming/Small Simulator
| ||
While messing around trying to create AI, I made this: www.lattyware.com/VWorld.zip Here is the source code, but you'll need to download the above to get the base 'define.txt' [Code] Graphics 800,600 Type Animal Field X Field Y Field Speed Field LnOSt Field Sizer Field Intrude Field TY Field Ident Field Repro Field Life End Type WeekLen% = 50 YearLen% = 5 PassedDay% = 00 PassedWeek% = 00 PassedYear%=00 define=OpenFile("Define.txt") .Reada Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Reada SetNum=Liner$ Dim Key(SetNum) Dim TY(SetNum) Dim Speed(SetNum) Dim LnOSt(SetNum) Dim Sizer(SetNum) For a = 1 To SetNum .Readb Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Readb Liner2 = Liner$ Key(a) = Liner2+1 .Readc Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Readc TY(a) = Liner$ .Readd Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Readd Speed(a) = Liner$ .Reade Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Reade LnOSt(a) = Liner$ .Readf Liner$=ReadLine(define) If Left(Liner$,1) = ";" Then Goto Readf Sizer(a) = Liner$ Next While Not KeyDown(1) Cls SeedRnd MilliSecs() For a = 1 To SetNum If KeyHit(Key(a)) IdentCount=IdentCount+1 Main.Animal = New Animal Main\Ident = IdentCount Main\TY=TY(a) Main\X = Rand(1,799) Main\Y = Rand(1,599) Main\Speed = Speed(a) Main\LnOSt = LnOSt(a) Main\Sizer = Sizer(a) Main\Intrude = 0 Main\Repro = PassedYear% Main\Life = 0 EndIf Next If KeyHit(57) If ShowLnOSt = True Then ShowLnOSt = False Else ShowLnOSt = True EndIf EndIf If KeyHit(56) For Main.Animal = Each Animal Delete main Next EndIf PassedDay%=PassedDay%+1 If PassedDay%=WeekLen% Then PassedWeek%=PassedWeek%+1 : PassedDay%=0 If PassedWeek%=YearLen% Then PassedYear%=PassedYear%+1 PassedWeek%=0 For Main.Animal = Each Animal Main\Life = Main\Life + 1 Next EndIf Color 255,255,255 Text 0,0,"| "+PassedDay%+"\"+PassedWeek%+"\"+PassedYear% Text 0,12,"| Number Keys: Spawn Animal, Space: Toggle Line Of Sight, Alt: Clear" If ShowLnOSt = True Then Text 0,24,"| Green: Freind, Blue: Food, Red: Foe, White: N/A" For Main.Animal = Each Animal If Main\X > 799 Then Main\X = 001 If Main\X < 001 Then Main\X = 799 If Main\Y > 599 Then Main\Y = 001 If Main\Y < 001 Then Main\Y = 599 If Main\Intrude = 1 Then Else If Main\Intrude = 2 Then Else Main\X=Main\X+Rand(-Main\Speed/2,Main\Speed/2) Main\Y=Main\Y+Rand(-Main\Speed/2,Main\Speed/2) EndIf EndIf Main\Intrude = 0 If Main\Life = 3 Then Delete Main : Goto Nexter For Main2.Animal = Each Animal If Not Main\Ident = Main2\Ident If RectsOverlap(Main\X-Main\LnOSt/2,Main\Y-Main\LnOSt/2,Main\LnOSt,Main\LnOSt,Main2\X,Main2\Y,1,1) Then DetectCount = DetectCount + 1 If Main2\TY = Main\TY Then Main\Intrude = 3 If Not Main\Repro = PassedYear% Then If Main\X < Main2\X Then Main\X = Main\X + Main\Speed If Main\X > Main2\X Then Main\X = Main\X - Main\Speed If Main\Y < Main2\Y Then Main\Y = Main\Y + Main\Speed If Main\Y > Main2\Y Then Main\Y = Main\Y - Main\Speed EndIf Else If Main2\TY < Main\TY Then Main\Intrude = 1 If Main\X < Main2\X Then Main\X = Main\X + Main\Speed If Main\X > Main2\X Then Main\X = Main\X - Main\Speed If Main\Y < Main2\Y Then Main\Y = Main\Y + Main\Speed If Main\Y > Main2\Y Then Main\Y = Main\Y - Main\Speed Else If Main2\TY > Main\TY Then Main\Intrude = 2 If Main\X > Main2\X Then Main\X = Main\X + Main\Speed If Main\X < Main2\X Then Main\X = Main\X - Main\Speed If Main\Y > Main2\Y Then Main\Y = Main\Y + Main\Speed If Main\Y < Main2\Y Then Main\Y = Main\Y - Main\Speed EndIf EndIf If DetectCount = 3 Then If Main\X > Main2\X Then Main\X = Main\X + Main\Speed If Main\X < Main2\X Then Main\X = Main\X - Main\Speed If Main\Y > Main2\Y Then Main\Y = Main\Y + Main\Speed If Main\Y < Main2\Y Then Main\Y = Main\Y - Main\Speed EndIf EndIf EndIf If RectsOverlap(Main\X,Main\Y,1,1,Main2\X,Main2\Y,1,1) Then If Main2\TY > Main\TY Then Delete Main Goto Nexter EndIf If Not Main\Repro = PassedYear% Then If Main2\TY = Main\TY Then IdentCount=IdentCount+1 Main3.Animal = New Animal Main3\Ident = IdentCount Main3\TY=Main\TY Main3\X = Main\X + 10 Main3\Y = Main\Y + 10 Main3\Speed = Main\Speed Main3\LnOSt = Main\LnOSt Main3\Sizer = Main\Sizer Main3\Intrude = 0 Main3\Repro = PassedYear% Main\Repro = PassedYear% Main\Life = 0 EndIf EndIf EndIf EndIf Next DetectCount = 0 Select Main\Intrude Case 1 ;Food Color 0,0,255 Case 2 ;Foe Color 255,0,0 Case 3 ;Friend Color 0,255,0 Default ;Nothing Color 100,100,100 End Select If ShowLnOSt = True Then Rect Main\X-Main\LnOSt/2,Main\Y-Main\LnOSt/2,Main\LnOSt,Main\LnOSt,0 EndIf Color 155,155,155 Oval Main\X-Main\Sizer,Main\Y-Main\Sizer,Main\Sizer*2,Main\Sizer*2 .Nexter Next Flip Wend [/Code] |