Naputtelijan koodi tuottaa saman tien MAVia. Oikea vastaus on käyttää tyyppejä:
Code: Select all
//Modattu MoveObject-komennon esimerkki
FrameLimit 40
soldier=LoadObject("Media\soldier.bmp",72)
AddText "Arrows to move"
//Objekti jota kopioidaan esiapupaketiksi
tattimaster = LoadObject("Media\tatti.bmp")
ShowObject tattimaster, OFF
//EA-paketin tyyppikokoelma
Type ENSIAPULAUKKU
Field obj //Objekt
Field parannus As Integer //Parannuskyky
EndType
//Spawnattavien laukkujen määrä
laukkuja = 5
//Luodaan laukut
For i = 1 To laukkuja
//Luodaan uusi ENSIAPULAUKKU-tyyppi-instanssi
l.ENSIAPULAUKKU = New(ENSIAPULAUKKU)
//Kloonataan laukulle objekti
l\obj = CloneObject(tattimaster)
//Asetetaan sijainti satunnaisesti
PositionObject l\obj, Rand(-ScreenWidth()/2, ScreenWidth()/2), Rand(-ScreenHeight()/2, ScreenHeight()/2)
l\parannus = Rand(50, 100)
Next i
//Elämäpisteet alussa
elkut = 100
Repeat
//Elämäpisteiden päivitys
If elkut <= 0 Then MakeError "Sie sind gestorben!"
elkut = elkut - 1
paketteja = 0
//Käydään kaikki laukut läpi
For l.ENSIAPULAUKKU = Each ENSIAPULAUKKU
//Tutkitaant apahtuuko törmäys
If ObjectsOverlap(l\obj, soldier, 3) Then
//Parannetaan laukun parannuskyvyn verran
elkut = elkut + l\parannus
//Poistetaan laukun objekti; tämän jälkeen l\obj:n käyttäminen tuottaa MAVin
DeleteObject l\obj
//Poistetaan laukun tyyppi-instanssi; tämän jälkeen l:n osoittaman instanssin käytäminen tuottaa MAVin
Delete l
EndIf
paketteja = paketteja + 1
Next l
'Update controls
If LeftKey() Then TurnObject soldier,5
If RightKey() Then TurnObject soldier, -5
If UpKey() Then MoveObject soldier, 2
If DownKey() Then MoveObject soldier, -2
Text 1, 15, "Elämää jäljellä: " + elkut
Text 1, 30, "EA-paketteja jäljellä: " + paketteja
DrawScreen
Until EscapeKey()
Lisätty iso kasa kommentteja