Oppitunti 21 (Panokset3)

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
Execute
Active Member
Posts: 110
Joined: Fri Feb 11, 2011 6:41 pm

Oppitunti 21 (Panokset3)

Post by Execute »

Tässä siis huvikseni väsäämä oppitunti. Se on sama kuin 20 mutta tässä voi ampua itse ja muuta pientä lisätty. Tehtäviä löytyy jokaiselle. Vaikeustasot: Helppo, keskivaikea, vaikea ja expert. Siinä siis jotain.


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.
SpaceCraft on kokopitkä peli! Nyt ladattavissa! Tsekkaa!
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Oppitunti 21 (Panokset3)

Post by TheDuck »

Aika huonoa koodia tuo lisäämäsi pätkä. Ei sisennystä ja muuttujanimet mahdollisimman epäselvät.. Latinki?
^^
Post Reply