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]
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]