Toivottavasti tästä on apua edes jollekkin...
Code: Select all
Type AMMUKSET
Field objekti
Field partikkeli
End Type
Type RÄJÄHDYKSET
Field partikkeli
End Type
SCREEN 320,240,0,cbsizable 'zoomaa ikkuna
SetWindow "Ladataan",3 'suurenna ruudulle
'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 11
FrameLimit 40 'rajoita nopeutta
'Lataa ja animoi kenttä
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PlayObject kenttä,0,0,0.5
'lataa pyörivä tykki
tykki=LoadObject("Media\cannon.bmp",180)
PositionObject tykki,-272,-192
'lataa tykin alusta
tykkialusta=LoadObject("Media\turret.bmp")
PositionObject tykkialusta,-272,-192
'Lataa isäntä-luoti, ja piilota se
objLuoti=LoadObject("Media\bigbullet.bmp",16)
ShowObject objLuoti,OFF
'lataa partikkelikuvat
imgSavu=LoadAnimImage("Media\smoke.bmp",16,16,0,12)
imgPoks=LoadAnimImage("Media\bang.bmp",32,32,0,8)
'siirrä kamera kentän kulmaan
PositionCamera -160,-120
ammus = 10 //Määritellään panoksien alkumäärä
Repeat
If ammus > 0 Then // Jos ammuksia on enemmän kuin nolla...
SetWindow "Panokset = " +ammus //...Niin pistetään screenin yläosaan panosten määrä.
Else //Muutoin...
SetWindow "Asetta ladataan..." //Laitetaan teksti: Asetta ladataan...
EndIf //Lopetetaan if
If ammus = 0 Then // Jos ammuksia on nolla sitten...
latinki = latinki+1 // Nostetaan lataus muuttujaa
EndIf //Jos et tiedä mikä tämä on niin käy oppitunti 1 läpi.
If latinki = 100 Then //Jos lataus on sata sitten...
latinki = 0 // Lataus on nolla ja...
ammus = 10 //Ammuksia on 10!
EndIf //En selitä.
If UpKey() Then //Jos painat ylös niin...
kohta = kohta+1 //Tykin kulmaa plussataan.
EndIf
If DownKey() Then
kohta = kohta-1 //Tykin kulmaa miinustetaan.
EndIf
RotateObject tykki,kohta //Pistä tykki käyttäjän määrittelemään kulmaan
If KeyHit(57) And lataus = 0 And ammus > 0 Then
ammus = ammus-1
lataus = 17
pati.AMMUKSET = New (AMMUKSET)
pati\objekti=CloneObject(objLuoti)
'sijoita ammus tykkiin
CloneObjectPosition pati\objekti,tykki
CloneObjectOrientation pati\objekti,tykki
'määrittele törmäys kentän kanssa
SetupCollision pati\objekti,kenttä,2,4,1
'Aluksi on hyvä poistaa jäljet oletussijainnista
'Tämä on mukana vain, koska ammuksilla on määritelty
'törmäys ja koska niitä on sittemmin siirretty
ResetObjectCollision pati\objekti
'tehdään partikkelilähde
pati\partikkeli=MakeEmitter(imgSavu,20)
ParticleMovement pati\partikkeli,0,0 'ei liikettä
'yksinkertainen (mutta nopea) lähde
ParticleEmission pati\partikkeli,1,1,1
'12 animaatio-framea
ParticleAnimation pati\partikkeli,11
EndIf
If lataus > 0 Then //TUTTU KUVIO!!!!!
lataus = lataus-1
EndIf
If lataus = 0 Or lataus < 0 Then //Ja... Toinen tuttu...
lataus = 0
EndIf
UpdateGame 'päivitä törmäykset
'Päivitä KAIKKI ammukset
For pati.AMMUKSET = Each AMMUKSET
MoveObject pati\objekti,5 'liikuta ammusta
'aseta partikkelilähde ammuksen paikkaan
CloneObjectPosition pati\partikkeli,pati\objekti
'JOS törmäsi NIIN luo räjähdys
If CountCollisions(pati\objekti) Then
poks.RÄJÄHDYKSET = New (RÄJÄHDYKSET)
poks\partikkeli = MakeEmitter(imgPoks,10)
CloneObjectPosition poks\partikkeli,pati\objekti
ObjectLife poks\partikkeli,11
'aseta partikkelilähteen ominaisuudet
ParticleMovement poks\partikkeli,0,0
ParticleEmission poks\partikkeli,2,1,1
'8 animaatio-framea
ParticleAnimation poks\partikkeli,7
'poista objekti, partikkelilähde ja koko ammus
DeleteObject pati\objekti
DeleteObject pati\partikkeli
Delete pati
EndIf
Next pati
DrawScreen
Forever
End
//------------------------------------------------//
// ANALYYSI:
// Tämä siis oli paranneltu versio oppitunnista 20.
// Tämä on muuten samanlainen mutta tykkiä voi nyt
// itse käännellä nuolinäppäimistä. Panoksetkin on
// nyt lisätty. Ne komeilevat screenin yläosassa.
// Kun siis panokset ovat loppuneet tykki latautuu
// itsestään.
// Muilta osilta tämä onkin selvä.
//Tehtävät (Helppo):
// (1): Muuta panosten määrää.
// (2): Muuta aseen latausta.
//Tehtävät (Keskivaikea):
// (1): Poista savu-efekti
// (2): Poista räjähdykset
//Tehtävät (Vaikea):
// (1): Tee panoskauppa.
// (2): Laita savu tulemaan kolmesta kohdasta, panoksesta.
//Tehtävät (Expert):
// (1): Laita tykki ja sen alusta liikkumaan nappuloista ja pomppaamaan z näppäimestä. Laita myös tasoon panos-paketteja.
// (2): Sama kuin Expertin tehtävä 1 mutta laita kentälle vihollisia joita voit tappaa ja ne voivat tappaa sinut.