As for algorithms, it's really quite easy.... here's the basic pseudocode:
Type TransportType
QTYShips as integer
Sender as integer
Skill as integer
Destination as integer
DistanceToGo as single
end type
dim mTransportArray(1000) as TransportType
dim mNumTransports as integer
dim mStillPlayingFlag
dim mTurn
mNumTransports = 0
sub AddTransport (.....)
mNumTransports = mNumTransports+1
mTransports(mNumTransports).QTY = Qty
mTransports(mNumTransports).Sender = Sender
mTransports(mNumTransports).Skill = Skill
mTransports(mNumTransports).Destination = Destination
mTransports(mNumTransports).DistanceToGo = SQRT((X1-X2)^2 +(Y1-Y2)^2)
end sub
sub ProcessMoves (...)
AskPlayersForMoves (...)
RandomlyDoRevolts(..)
RandomlyDoProductionIncreasesOrDecreases(..)
dim i
i=0
do while i < mNumTransports
mTransports(i).DistanceToGo = mTransports(i).DistanceToGo - 2 'Two light years closer per turn
if mTransports(i).DistanceToGo < 0 then
processArrival(...)
end if
i=i+1
loop
RemoveTransportFromArray(....)
end sub
sub PlayGame()
GetGamePreferences
SelectGalaxy
mStillPlayingFlag = true
mTurn = 0
do until mStillPlayingFlag = false or mTurn > mTurnLimit
ProcessMoves
mTurn = mTurn + 1
loop
end sub
|