remstart
Asset Management example
by Steve Vink
This example illustrates how to manage game assets.
It utilises Types, and Arrays.
It demonstrates how assets based on the same Type can have
significantly different characteristics
It also demonstrates how assets can be processed efficiently
when managed in Arrays
remend
` Firstly, describe the attributes of an alien in a TYPE.
` These are the attributes that will determine what you can build later...
type tAlien
name as string
legs as integer
arms as integer
mass as float
strength as float
health as float
endtype
` Basic Setup
`******************************************************
set display mode 800,600,16
sync on: sync rate 20
` Set up some data for the text display...
LeftColX = 10
RightColX = 410
VertSpace = 50
load image "backdrop.jpg",1,1
` Next, create 2 arrays to hold 2 alien tribes...
`******************************************************
Dim Gahulu(10) as tAlien
Dim Fragnog(10) as tAlien
` In a loop, the Gahulus are assigned the characteristics of their race...
`******************************************************
Randomize Timer()
For n = 1 to 10
Gahulu(n).name$ = "Gahulu " + str$(n)
Gahulu(n).legs = 4
Gahulu(n).arms = 2
` Each Gahulu will have a different mass, strength and health.
Gahulu(n).mass# = 120 + rnd(20)
Gahulu(n).strength# = 120 + rnd(60)
Gahulu(n).health# = 120 - rnd(10)
next n
` In a loop, the Fragnogs are assigned the characteristics of their race...
` They are very different to Gahulus, but can be described in terms of
` the same attributes...
`******************************************************
For n = 1 to 10
Fragnog(n).name$ = "Fragnog " + str$(n)
Fragnog(n).legs = 2
Fragnog(n).arms = 3
` Each Fragnog will have a different mass, strength and health.
Fragnog(n).mass# = 60 + rnd(20)
Fragnog(n).strength# = 50 + rnd(70)
Fragnog(n).health# = 150 - rnd(30)
next n
`******************************************************
`******************************************************
` Let the battle commence!
`******************************************************
do
`******************************************************
` Pick a random alien from each tribe, and belt each other...
`******************************************************
do
Alien1 = rnd(9) + 1
Alien2 = rnd(9) + 1
if Gahulu(Alien1).health# > 0 and Fragnog(alien2).health# > 0
exit
endif
loop
` Calculation based on strength, arms, and mass
Alien2Hit# = (((Fragnog(alien2).mass# / 200.00) + (Fragnog(alien2).strength# / 200.00)) * Fragnog(alien2).arms )
Alien1Hit# = (((Gahulu(alien1).mass# / 200.00) + (Gahulu(alien1).strength# / 200.00)) * Gahulu(alien1).arms )
dec Gahulu(Alien1).health#, Alien2Hit# : if Gahulu(Alien1).health# < 0 then Gahulu(Alien1).health# = 0
dec Fragnog(Alien2).health#, Alien1Hit# : if Fragnog(Alien2).health# < 0 then Fragnog(Alien2).health# = 0
` Print the details to screen...
`******************************************************
cls
paste image 1,1,1,0
` Display each alien and current health.
for n = 1 to 10
ink rgb(150 - Gahulu(n).health#, (Gahulu(n).health# * 1.6),0),0
text LeftColX, (VertSpace * (n-1) + 100), Gahulu(n).name$
box leftColX, (VertSpace * (n-1) + 120), leftColX + (Gahulu(n).health# * 2), (VertSpace * (n-1) + 140)
ink rgb(150 - Fragnog(n).health#, (Fragnog(n).health# * 1.6),0),0
text RightColX, (VertSpace * (n-1) + 100), Fragnog(n).name$
box RightColX, (VertSpace * (n-1) + 120), RightColX + (Fragnog(n).health# * 2), (VertSpace * (n-1) + 140)
next n
ink rgb(255,255,255),0
` Check if either side has been defeated...
`******************************************************
FragnogCount = 0
GahuluCount = 0
for n = 1 to 10
if Fragnog(n).health# > 0 then inc FragnogCount
if Gahulu(n).health# > 0 then inc GahuluCount
next n
if FragnogCount = 0
center text 400,80, "***** Gahulus Win with " + str$(GahuluCount) + " Warriors still standing! *****"
sync
wait key
end
endif
if GahuluCount = 0
center text 400,80, "***** Fragnogs Win with " + str$(FragnogCount) + " Warriors still standing! *****"
sync
wait key
end
endif
sync
loop
As I said before, this is NOT my code, I am merely trying to learn how to use arrays and types, because they confuse me
.
E.D.