Hi everyone!
This is my contribution to the 50 line competition.
It's a space conquest game. You are player RED and you have to conquer planets which are producing ships for your fleet depending on each planets size.
You can send your fleets to enemy planets to fight them or to your own planets to support them. Click the mouse to select your planets. You can select more then one planet. At the moment you only can send the half of the planets fleet.
Try to conquer the all planets as fast as possible.
OK.. here's the Code:
compressed:
set display mode 1024, 768, 32 : Sync on : Sync rate 0 : Sync : Disable escapekey : Color backdrop 0x252525 : Set text font "Tahoma"
Type tship px As Float : py As Float : pz As Float : tx As Float : ty As Float : tz As Float : dx As Float : dy As Float : dz As Float : aim As Integer : from As Integer : size As Integer : troops As Integer Endtype
Type tplanet size As Integer : fleet As Integer : owner As integer Endtype
Cls : Input "How many opponents? (1 - 5) default 5 :", players : Input "How many planets? (min. " + str$( players + 2 ) + ") default 20 : ", maxplanets : Input "Difficulty? (easy: 30 hard: 300) default 100 : ", difficulty
If players = 0 : players = 5 : Endif : If difficulty = 0 : difficulty = 100 : Endif : If maxplanets = 0 : maxplanets = 20 : Endif : Inc players : If players > 6 : players = 6 : Endif : If players <= 1 : players = 2 : Endif : If maxplanets <= players : maxplanets = players + 1 : Endif : If maxplanets > 100 : maxplanets = 100 : Endif : If difficulty < 30 : difficulty = 30 : Endif : If difficulty > 300 : difficulty = 300 : Endif
Dim Planets( 100 ) As tplanet : Dim selplanets( -1 ) As Integer : Dim ships( -1 ) As tship : Dim player( 6 ) As Dword : null = Make matrix4( 1 ) : null = Make matrix4( 2 ) : null = Make matrix4( 3 ) : null = Make vector3( 4 ) : For i = 1 To 6 : Read player( i ) : Next : Make light 1 : Set light range 1, 100000 : Ink 0x252525, 0x252525 : Box 0, 0, Screen width(), 30 : Ink 0xffffff, 0xffffff : set text size 20 : Center text 500, 1, "ships v1.0" : Line 0, 29, Screen width(), 29 : get image 1, 0, 0, Screen width(), 30, 3 : Set text size 12 : CreatePlanets( maxplanets, players ) : d = 800 : troops = 0 : KItime = Timer() : gametime = timer() : game = 0
Do : Set cursor 0, 35 : mmx = Mousemovex() : mmy = Mousemovey() : mmz = Mousemovez() : mx = Mousex() : my = Mousey() : po = Pick object( mx, my, 1, maxplanets ) : If Timer() - lt > 1000 : For i = 1 To maxplanets : If Planets( i ).owner > 0 : Inc Planets( i ).fleet, Planets( i ).size*.1 : Endif : Next : lt = timer() : Endif : If timer() - KItime > 330 - difficulty
For i = 1 To maxplanets : If Planets( i ).owner > 0 And Planets( i ).owner <> player( 1 ) : c = Planets( i ).owner : For j = 1 To maxplanets : If Rnd( 300 ) = 1 And i <> j : If Planets( j ).owner = c : If Planets(j).fleet > Planets(i).fleet : SendShips( i, j, Planets( i ).fleet/2 ) : Planets( i ).fleet = Planets( i ).fleet/2 : Endif : Else : If Rnd( 10 ) = 1 : SendShips( i, j, Planets( i ).fleet/2 ) : Planets( i ).fleet = Planets( i ).fleet/2 : Endif : Endif : Endif : If Planets( j ).owner = 0 And Rnd( 20 ) > 2 : If Rnd( 10 ) > 1
If Planets( i ).fleet > 40 And Planets( j ).fleet > 0 : If Planets( i ).fleet/Planets( j ).fleet > 1.5 And Rnd( 5000 ) > Planets( j ).size : SendShips( i, j, Planets( i ).fleet/2 ) : Planets( i ).fleet = Planets( i ).fleet/2 : Endif : Endif : Endif
Else : If c <> Planets( j ).owner : If Planets( i ).fleet > 40 And Planets( j ).fleet > 0 : If Planets( i ).fleet/Planets( j ).fleet > 1.5 And Rnd( 5000 ) > Planets( j ).size : SendShips( i, j, Planets( i ).fleet/2 ) : Planets( i ).fleet = Planets( i ).fleet/2 : Endif : Endif : Endif : Endif : Next : Endif : Next : KItime = timer() : Endif : Projection matrix4 1 : View matrix4 2 : World matrix4 3
Lock pixels : Array index to top ships( 0 ) : While Array index valid( ships( 0 )) : Set vector3 4, ships().px, ships().py, ships().pz : Project vector3 4, 4, 1, 2, 3 : If Z vector3( 4 ) > 0 And Z vector3( 4 ) < 1.0 : If Point( X vector3( 4 ), Y vector3( 4 )) = 0x252525
For x = 0 To ships().size : For y = 0 To ships().size : Dot X vector3( 4 ) + x, Y vector3( 4 ) + y, ships().from : Next : Next : Endif : Endif : Inc ships().px, ships().dx : Inc ships().py, ships().dy : Inc ships().pz, ships().dz : If Abs( ships().px - ships().tx ) < 10 : If Abs( ships().py - ships().ty ) < 10 : If Abs( ships().pz - ships().tz ) < 10 : If Planets( ships().aim ).owner = ships().from : Inc Planets( ships().aim ).fleet, ships().troops : Else : Dec Planets( ships().aim ).fleet, ships().troops
If Planets( ships().aim ).fleet <= 0 : Planets( ships().aim ).owner = ships().from : Color object ships().aim, ships().from : Planets( ships().aim ).fleet = -Planets( ships().aim ).fleet : Endif : Endif : Array delete element ships() : Endif
Endif : Endif : Next array index ships( 0 ) : Endwhile : Unlock pixels : For i = 1 To maxplanets : dist# = Sqrt( ( camera position x() - Object position x( i ))^2 + ( camera position y() - Object position y( i ))^2 + ( camera position z() - Object position z( i ))^2 ) : osx = Object screen x( i ) : osy = Object screen y( i ) : os = Object size( i )/dist#*1000
Line osx -os/2, osy + os/2, osx - os, osy + os : Line osx - os, osy + os, osx - os - 10, osy + os : Text osx - os - 10, osy + os - 10, str$( Planets( i ).fleet) : Next : If Mouseclick() = 1 : If selb = 0 And po = 0 : sfx = mx : sfy = my : selb = 1 : Endif : If selb = 1 : stx = mx : sty = my : Line sfx, sfy, stx, sfy : Line sfx, sfy, sfx, sty
Line sfx, sty, stx, sty : Line stx, sfy, stx, sty : Empty array selplanets(0) : If sfx > stx : ntx = sfx : nfx = stx : Else : ntx = stx : nfx = sfx : Endif : If sfy > sty : nty = sfy : nfy = sty : Else : nty = sty : nfy = sfy : Endif : For i = 1 To maxplanets : If Planets( i ).owner = player( 1 ) And Object screen x( i ) > nfx And Object screen y( i ) > nfy And Object screen x( i ) < ntx And Object screen y( i ) < nty : Array index to stack selplanets(0) : Add to stack selplanets(0) : selplanets() = i : Endif : Next : Endif
If selb = 0 And Array count( selplanets( 0 )) > -1 : For i = 0 To Array count( selplanets( 0 )) : Array index to queue ships( 0 ) : SendShips( selplanets( i ), po, Planets( selplanets( i )).fleet/2 ) : Planets( selplanets( i ) ).fleet = Planets( selplanets( i ) ).fleet/2 : Next : Empty array selplanets(0) : Endif : Else : selb = 0 : Endif : If Array count( selplanets( 0 )) > -1 : For i = 0 To Array count( selplanets( 0 )) : dist# = Sqrt( ( camera position x() - Object position x( selplanets(i) ))^2 + ( camera position y() - Object position y( selplanets(i) ))^2 + ( camera position z() - Object position z( selplanets(i) ))^2 )
Circle Object screen x( selplanets(i) ), Object screen y( selplanets(i) ), 1.0/dist#*1000*Object size( selplanets(i) ) : If po : Set vector3 4, Object screen x( po ) - Object screen x( selplanets( i ) ), Object screen y( po ) - Object screen y( selplanets( i ) ), 0 : Normalize vector3 4, 4 : Scale vector3 4, 4, 1.0/dist#*1000*Object size( selplanets(i) ) : fx = Object screen x( selplanets( i )) + X vector3( 4 ) : fy = Object screen y( selplanets( i )) + Y vector3( 4 )
dist# = Sqrt( ( camera position x( ) - Object position x( po ))^2 + ( camera position y( ) - Object position y( po ))^2 + ( camera position z( ) - Object position z( po ))^2 ) : Normalize vector3 4, 4 : Scale vector3 4, 4, 1.0/dist#*1000*Object size( po ) : tx = Object screen x( po ) - X vector3( 4 )
ty = Object screen y( po ) - Y vector3( 4 ) : Line fx, fy, tx, ty : Ink 0xff0000, 0xff0000 : Circle Object screen x( po ), Object screen y( po ), 1.0/dist#*1000*Object size( po ) : Ink 0xffffff, 0xffffff : Endif : Next : Endif : If Timer() - controletime > 500 : controletime = timer() : i = 0 : Repeat : Inc i : Until Planets( i ).owner > 0 : o = Planets( i ).owner : Repeat : Inc i : Until o <> Planets( i ).owner Or i = maxplanets : If i = maxplanets And winner = 0 : For j = 1 To 6 : If player( j ) = Planets( i ).owner : winner = j : Endif : Next : winnertime = timer() - gametime
Endif : Endif : Paste image 1, 0, 0 : Text 1, 5, "FPS: " + str$( Screen fps( )) : Text 100, 5, "Time: " + str$( Int(( Timer() - gametime )*.001 )) + " s" : Text 200, 5, "Ships: " + str$( Array count( ships( 0 )) + 1 ) : Text 800, 5, "[N]ew game [Q]uit" : Text Screen width() - 120, Screen height() - 20, "Copyright by Azrael 2007" : If Inkey$() = "n" : CreatePlanets( maxplanets, players ) : Empty array ships(0) : Empty array selplanets(0) : d = 800 : troops = 0 : KItime = Timer() : gametime = timer() : winner = 0 : Sleep 500 : Endif : If Inkey$() = "q" : End : Endif : If winner : Lock pixels : Box Screen width()/2 - 101, Screen height()/2 - 51, Screen width()/2 + 101, Screen height()/2 + 51 : Ink 0x252525, 0x252525
Box Screen width()/2 - 100, Screen height()/2 - 50, Screen width()/2 + 100, Screen height()/2 + 50 : Unlock pixels : Ink player( winner ), player( winner ) : Center text Screen width()/2, Screen height()/2 - 30, "The Winner is player " + str$( winner ) : Ink 0xffffff, 0xffffff : Center text Screen width()/2, Screen height()/2, "He needed " + str$( winnertime*0.001 ) + " s" : Center text Screen width()/2, Screen height()/2 + 30, "Press 'N' for new round or 'Q' to quit"
If Escapekey() : End : Endif : Endif : Position camera 0, 0, 0 : Inc d, mmz : Move camera - d : If Mouseclick() = 2 : Position camera 0, 0, 0 : Turn camera left mmx : Pitch camera up mmy : Move camera - d : Endif : Position light 1, Camera position x(), Camera position y(), Camera position z() : Sync : Loop
Function CreatePlanets(maxplanets, players)
For i = 1 To 100
If Object exist( i ) Then Delete object i
Next blah
For i = 1 To maxplanets
If players > 0
Planets( i ).Size = 100
Planets( i ).fleet = 100
Planets( i ).owner = player( i )
Else
Planets( i ).Size = Rnd( 80 ) + 20
Planets( i ).fleet = Rnd( 100 ) + 1
Planets( i ).owner = 0
Endif
Make object sphere i, Planets( i ).Size, 20, 20
If players > 0
Color object i, player( i )
Dec players
Endif
Repeat : Position object i, Rnd( 1000 ) - 500, Rnd( 1000 ) - 500, Rnd( 1000 ) - 500 : Until Object collision( i, 0) = 0
Next
Endfunction
Function SendShips( source As Integer, destination As Integer, amount As Integer )
If amount > 50 : Repeat : Add to queue ships( 0 ) : ships().px = Object position x( source ) + Rnd(200) - 100 : ships().py = Object position y( source ) + Rnd(200) - 100 : ships().pz = Object position z( source ) + Rnd(200) - 100 : ships().tx = Object position x( destination ) : ships().ty = Object position y( destination ) : ships().tz = Object position z( destination ) : Set vector3 4, ships().tx - ships().px, ships().ty - ships().py, ships().tz - ships().pz : Normalize vector3 4, 4 : ships().dx = X vector3( 4 ) : ships().dy = Y vector3( 4 ) : ships().dz = Z vector3( 4 ) : ships().aim = destination : ships().from = Planets( source ).owner : ships().size = 3 : ships().troops = 10 : Dec amount, 10 : Until amount <= 10 : Endif
Repeat : Add to queue ships( 0 ) : ships().px = Object position x( source ) + Rnd(200) - 100 : ships().py = Object position y( source ) + Rnd(200) - 100 : ships().pz = Object position z( source ) + Rnd(200) - 100 : ships().tx = Object position x( destination ) : ships().ty = Object position y( destination ) : ships().tz = Object position z( destination ) : Set vector3 4, ships().tx - ships().px, ships().ty - ships().py, ships().tz - ships().pz : Normalize vector3 4, 4 : ships().dx = X vector3( 4 ) : ships().dy = Y vector3( 4 ) : ships().dz = Z vector3( 4 ) : ships().aim = destination : ships().from = Planets( source ).owner : ships().size = 1 : ships().troops = 1 : Dec amount, 1 : Until amount =< 0
Endfunction
Data 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff
original:
Sync on : Sync rate 0 : Sync : Set display mode 1024, 768, 32
Disable escapekey
Color backdrop 0x252525
Set text font "Tahoma"
Type tship
px As Float
py As Float
pz As Float
tx As Float
ty As Float
tz As Float
dx As Float
dy As Float
dz As Float
aim As Integer
from As Integer
size As Integer
troops As Integer
Endtype
Type tplanet
size As Integer
fleet As Integer
owner As integer
Endtype
rem Abfragen für Spiel
Cls
Input "How many opponents? (1 - 5) default 5 :", players
Input "How many planets? (min. " + str$( players + 2 ) + ") default 20 : ", maxplanets
Input "Difficulty? (easy: 30 hard: 300) default 100 : ", difficulty
If players = 0 Then players = 5
If difficulty = 0 Then difficulty = 100
If maxplanets = 0 Then maxplanets = 20
Inc players
If players > 6 Then players = 6
If players <= 1 Then players = 2
If maxplanets <= players Then maxplanets = players + 1
If maxplanets > 100 Then maxplanets = 100
If difficulty < 30 Then difficulty = 30
If difficulty > 300 Then difficulty = 300
rem Daten & Variablen
Dim Planets( 100 ) As tplanet
Dim selplanets( -1 ) As Integer
Dim ships( -1 ) As tship
Dim player( 6 ) As Dword
null = Make matrix4( 1 )
null = Make matrix4( 2 )
null = Make matrix4( 3 )
null = Make vector3( 4 )
For i = 1 To 6
Read player( i )
Next
Rem Sonstiges
Make light 1
Set light range 1, 100000
Ink 0x252525, 0x252525
Box 0, 0, Screen width(), 30
Ink 0xffffff, 0xffffff
Set text size 20
Center text 500, 1, "ships v1.0"
Line 0, 29, Screen width(), 29
Get image 1, 0, 0, Screen width(), 30, 3
Set text size 12
rem create planets
CreatePlanets( maxplanets, players )
d = 800 : troops = 0 : KItime = Timer() : gametime = timer()
game = 0
rem MainLoop
Do
Set cursor 0, 35
mmx = Mousemovex()
mmy = Mousemovey()
mmz = Mousemovez()
mx = Mousex()
my = Mousey()
po = Pick object( mx, my, 1, maxplanets )
rem Planetenhandling
If Timer() - lt > 1000
For i = 1 To maxplanets
If Planets( i ).owner > 0
Inc Planets( i ).fleet, Planets( i ).size*.1
Endif
Next
lt = timer()
Endif
rem KI
If timer() - KItime > 330 - difficulty
For i = 1 To maxplanets
If Planets( i ).owner > 0 And Planets( i ).owner <> player( 1 )
c = Planets( i ).owner
For j = 1 To maxplanets
If Rnd( 300 ) = 1 And i <> j
If Planets( j ).owner = c
If Planets(j).fleet > Planets(i).fleet
SendShips( i, j, Planets( i ).fleet/2 )
Planets( i ).fleet = Planets( i ).fleet/2
Endif
Else
If Rnd( 10 ) = 1
SendShips( i, j, Planets( i ).fleet/2 )
Planets( i ).fleet = Planets( i ).fleet/2
Endif
Endif
Endif
If Planets( j ).owner = 0 And Rnd( 20 ) > 2
If Rnd( 10 ) > 1
If Planets( i ).fleet > 40 And Planets( j ).fleet > 0
If Planets( i ).fleet/Planets( j ).fleet > 1.5 And Rnd( 5000 ) > Planets( j ).size
SendShips( i, j, Planets( i ).fleet/2 )
Planets( i ).fleet = Planets( i ).fleet/2
Endif
Endif
Endif
Else
If c <> Planets( j ).owner
If Planets( i ).fleet > 40 And Planets( j ).fleet > 0
If Planets( i ).fleet/Planets( j ).fleet > 1.5 And Rnd( 5000 ) > Planets( j ).size
SendShips( i, j, Planets( i ).fleet/2 )
Planets( i ).fleet = Planets( i ).fleet/2
Endif
Endif
Endif
Endif
Next
Endif
Next
KItime = timer()
Endif
rem Zeichne Schiffe
Projection matrix4 1
View matrix4 2
World matrix4 3
Lock pixels
Array index to top ships( 0 )
While Array index valid( ships( 0 ))
Set vector3 4, ships().px, ships().py, ships().pz
Project vector3 4, 4, 1, 2, 3
If Z vector3( 4 ) > 0 And Z vector3( 4 ) < 1.0
If Point( X vector3( 4 ), Y vector3( 4 )) = 0x252525
For x = 0 To ships().size
For y = 0 To ships().size
Dot X vector3( 4 ) + x, Y vector3( 4 ) + y, ships().from
Next
Next
Endif
Endif
Inc ships().px, ships().dx
Inc ships().py, ships().dy
Inc ships().pz, ships().dz
If Abs( ships().px - ships().tx ) < 10
If Abs( ships().py - ships().ty ) < 10
If Abs( ships().pz - ships().tz ) < 10
If Planets( ships().aim ).owner = ships().from
Inc Planets( ships().aim ).fleet, ships().troops
Else
Dec Planets( ships().aim ).fleet, ships().troops
If Planets( ships().aim ).fleet <= 0
Planets( ships().aim ).owner = ships().from
Color object ships().aim, ships().from
Planets( ships().aim ).fleet = -Planets( ships().aim ).fleet
Endif
Endif
Array delete element ships()
Endif
Endif
Endif
Next array index ships( 0 )
Endwhile
Unlock pixels
rem GUI
For i = 1 To maxplanets
dist# = Sqrt( ( camera position x() - Object position x( i ))^2 + ( camera position y() - Object position y( i ))^2 + ( camera position z() - Object position z( i ))^2 )
osx = Object screen x( i )
osy = Object screen y( i )
os = Object size( i )/dist#*1000
Line osx -os/2, osy + os/2, osx - os, osy + os
Line osx - os, osy + os, osx - os - 10, osy + os
Text osx - os - 10, osy + os - 10, str$( Planets( i ).fleet)
Next
If Mouseclick() = 1
If selb = 0 And po = 0
sfx = mx
sfy = my
selb = 1
Endif
If selb = 1
stx = mx
sty = my
Line sfx, sfy, stx, sfy : Line sfx, sfy, sfx, sty : Line sfx, sty, stx, sty : Line stx, sfy, stx, sty
Empty array selplanets(0)
If sfx > stx
ntx = sfx : nfx = stx
Else
ntx = stx : nfx = sfx
Endif
If sfy > sty
nty = sfy : nfy = sty
Else
nty = sty : nfy = sfy
Endif
For i = 1 To maxplanets
If Planets( i ).owner = player( 1 ) And Object screen x( i ) > nfx And Object screen y( i ) > nfy And Object screen x( i ) < ntx And Object screen y( i ) < nty
Array index to stack selplanets(0)
Add to stack selplanets(0)
selplanets() = i
Endif
Next
Endif
If selb = 0 And Array count( selplanets( 0 )) > -1
For i = 0 To Array count( selplanets( 0 ))
Array index to queue ships( 0 )
SendShips( selplanets( i ), po, Planets( selplanets( i )).fleet/2 )
Planets( selplanets( i ) ).fleet = Planets( selplanets( i ) ).fleet/2
Next
Empty array selplanets(0)
Endif
Else
selb = 0
Endif
If Array count( selplanets( 0 )) > -1
For i = 0 To Array count( selplanets( 0 ))
dist# = Sqrt( ( camera position x() - Object position x( selplanets(i) ))^2 + ( camera position y() - Object position y( selplanets(i) ))^2 + ( camera position z() - Object position z( selplanets(i) ))^2 )
Circle Object screen x( selplanets(i) ), Object screen y( selplanets(i) ), 1.0/dist#*1000*Object size( selplanets(i) )
If po
Set vector3 4, Object screen x( po ) - Object screen x( selplanets( i ) ), Object screen y( po ) - Object screen y( selplanets( i ) ), 0
Normalize vector3 4, 4
Scale vector3 4, 4, 1.0/dist#*1000*Object size( selplanets(i) )
fx = Object screen x( selplanets( i )) + X vector3( 4 )
fy = Object screen y( selplanets( i )) + Y vector3( 4 )
dist# = Sqrt( ( camera position x( ) - Object position x( po ))^2 + ( camera position y( ) - Object position y( po ))^2 + ( camera position z( ) - Object position z( po ))^2 )
Normalize vector3 4, 4
Scale vector3 4, 4, 1.0/dist#*1000*Object size( po )
tx = Object screen x( po ) - X vector3( 4 )
ty = Object screen y( po ) - Y vector3( 4 )
Line fx, fy, tx, ty
Ink 0xff0000, 0xff0000
Circle Object screen x( po ), Object screen y( po ), 1.0/dist#*1000*Object size( po )
Ink 0xffffff, 0xffffff
Endif
Next
Endif
rem Siegkontrolle
If Timer() - controletime > 500
controletime = timer()
i = 0
Repeat
Inc i
Until Planets( i ).owner > 0
o = Planets( i ).owner
Repeat
Inc i
Until o <> Planets( i ).owner Or i = maxplanets
If i = maxplanets And winner = 0
For j = 1 To 6
If player( j ) = Planets( i ).owner Then winner = j
Next
winnertime = timer() - gametime
Endif
Endif
Paste image 1, 0, 0
Text 1, 5, "FPS: " + str$( Screen fps( ))
Text 100, 5, "Time: " + str$( Int(( Timer() - gametime )*.001 )) + " s"
Text 200, 5, "Ships: " + str$( Array count( ships( 0 )) + 1 )
Text 800, 5, "[N]ew game [Q]uit"
Text Screen width() - 120, Screen height() - 20, "Copyright by Azrael 2007"
If Inkey$() = "n"
CreatePlanets( maxplanets, players )
Empty array ships(0)
Empty array selplanets(0)
d = 800 : troops = 0 : KItime = Timer() : gametime = timer()
winner = 0
Sleep 500
Endif
If Inkey$() = "q"
End
Endif
If winner
Lock pixels
Box Screen width()/2 - 101, Screen height()/2 - 51, Screen width()/2 + 101, Screen height()/2 + 51
Ink 0x252525, 0x252525
Box Screen width()/2 - 100, Screen height()/2 - 50, Screen width()/2 + 100, Screen height()/2 + 50
Unlock pixels
Ink player( winner ), player( winner )
Center text Screen width()/2, Screen height()/2 - 30, "The Winner is player " + str$( winner )
Ink 0xffffff, 0xffffff
Center text Screen width()/2, Screen height()/2, "He needed " + str$( winnertime*0.001 ) + " s"
Center text Screen width()/2, Screen height()/2 + 30, "Press 'N' for new round or 'Q' to quit"
If Escapekey() Then End
Endif
rem Kamerakontrolle
Position camera 0, 0, 0 : Inc d, mmz : Move camera - d
If Mouseclick() = 2 : Position camera 0, 0, 0 : Turn camera left mmx : Pitch camera up mmy : Move camera - d : Endif
Position light 1, Camera position x(), Camera position y(), Camera position z()
Sync
Loop
Function CreatePlanets(maxplanets, players)
For i = 1 To 100
If Object exist( i ) Then Delete object i
Next blah
For i = 1 To maxplanets
If players > 0
Planets( i ).Size = 100
Planets( i ).fleet = 100
Planets( i ).owner = player( i )
Else
Planets( i ).Size = Rnd( 80 ) + 20
Planets( i ).fleet = Rnd( 100 ) + 1
Planets( i ).owner = 0
Endif
Make object sphere i, Planets( i ).Size, 20, 20
If players > 0
Color object i, player( i )
Dec players
Endif
Repeat : Position object i, Rnd( 1000 ) - 500, Rnd( 1000 ) - 500, Rnd( 1000 ) - 500 : Until Object collision( i, 0) = 0
Next
Endfunction
Function SendShips( source As Integer, destination As Integer, amount As Integer )
If amount > 50
Repeat
Add to queue ships( 0 )
ships().px = Object position x( source ) + Rnd(200) - 100
ships().py = Object position y( source ) + Rnd(200) - 100
ships().pz = Object position z( source ) + Rnd(200) - 100
ships().tx = Object position x( destination )
ships().ty = Object position y( destination )
ships().tz = Object position z( destination )
Set vector3 4, ships().tx - ships().px, ships().ty - ships().py, ships().tz - ships().pz
Normalize vector3 4, 4
ships().dx = X vector3( 4 )
ships().dy = Y vector3( 4 )
ships().dz = Z vector3( 4 )
ships().aim = destination
ships().from = Planets( source ).owner
ships().size = 3
ships().troops = 10
Dec amount, 10
Until amount <= 10
Endif
Repeat
Add to queue ships( 0 )
ships().px = Object position x( source ) + Rnd(200) - 100
ships().py = Object position y( source ) + Rnd(200) - 100
ships().pz = Object position z( source ) + Rnd(200) - 100
ships().tx = Object position x( destination )
ships().ty = Object position y( destination )
ships().tz = Object position z( destination )
Set vector3 4, ships().tx - ships().px, ships().ty - ships().py, ships().tz - ships().pz
Normalize vector3 4, 4
ships().dx = X vector3( 4 )
ships().dy = Y vector3( 4 )
ships().dz = Z vector3( 4 )
ships().aim = destination
ships().from = Planets( source ).owner
ships().size = 1
ships().troops = 1
Dec amount, 1
Until amount =< 0
Endfunction
Data 0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff
Here is a picture:
Have fun playing it
sry for my english