Changeset 9154 for 2017/30


Ignore:
Timestamp:
2017-07-27 11:40:55 (2 years ago)
Author:
npo17_56
Message:
 
Location:
2017/30/OlliL/Bomb helicopter/Bomb helicopter/Bomb_helicopter
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 2017/30/OlliL/Bomb helicopter/Bomb helicopter/Bomb_helicopter/Bomb_helicopter.cs

    r9148 r9154  
    2323    Image Ohjus = LoadImage("ohjuspieni"); 
    2424    IntMeter pisteLaskuri; 
     25    bool saakoHeittaaKranaatin = true; 
     26    DoubleMeter ampumislaskuri; 
     27    IntMeter laukaisijoitaTuhottuLaskuri; 
    2528 
    2629 
     
    3841    { 
    3942        ClearAll(); 
     43        LuoHelikopteri(-2500, 0.0); 
    4044        LuoPistelaskuri(); 
     45        LuoAmpumisLaskuri(); 
    4146        Level.Width = Window.Width * 3; 
    4247        Level.Height = Window.Height; 
     
    4449        Camera.ZoomToLevel(); 
    4550        Camera.StayInLevel = true; 
    46         LuoHelikopteri(-2500, 0.0); 
     51        LaukaisijoitaTuhottuLaskuri(); 
    4752        AsetaOhjaimet(); 
    4853        Camera.Follow(helikopteri); 
     
    7479    } 
    7580 
     81    void LuoAmpumisLaskuri() 
     82    { 
     83        ampumislaskuri = new DoubleMeter(2); 
     84        ampumislaskuri.MaxValue = ampumislaskuri.Value; 
     85        ampumislaskuri.AddOverTime(-2.0, 2.0); 
     86        ampumislaskuri.LowerLimit += delegate { saakoHeittaaKranaatin = true; }; 
     87 
     88        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
     89        elamaPalkki.X = 0.0; 
     90        elamaPalkki.Y = helikopteri.Height *0.7; 
     91        elamaPalkki.BindTo(ampumislaskuri); 
     92        elamaPalkki.BarColor = Color.DarkGreen; 
     93 
     94        helikopteri.Add(elamaPalkki); 
     95    } 
     96 
     97    void LaukaisijoitaTuhottuLaskuri() 
     98    { 
     99        laukaisijoitaTuhottuLaskuri = new IntMeter(0); 
     100        laukaisijoitaTuhottuLaskuri.MaxValue = 0; 
     101 
     102        Label pisteNaytto = new Label(); 
     103        pisteNaytto.X = Screen.Left + 100; 
     104        pisteNaytto.Y = Screen.Top - 150; 
     105        pisteNaytto.TextColor = Color.Black; 
     106        pisteNaytto.Color = Color.White; 
     107 
     108        pisteNaytto.BindTo(laukaisijoitaTuhottuLaskuri); 
     109        Add(pisteNaytto); 
     110        laukaisijoitaTuhottuLaskuri.UpperLimit += KaikkiLaukaisijatTuhottu; 
     111    } 
     112 
     113    void KaikkiLaukaisijatTuhottu() 
     114    { 
     115        MessageDisplay.Add("Voit nyt mennä kentän oikeaan päähän!"); 
     116    } 
    76117    void AsetaOhjaimet() 
    77118    { 
     
    122163    void HeitaKranaatti(PhysicsObject helikopteri) 
    123164    { 
     165 
     166        if (saakoHeittaaKranaatin == false) 
     167        { 
     168            return; 
     169        } 
    124170        Grenade kranu = new Grenade(3.0); 
    125171        kranu.Position = new Vector (helikopteri.X, helikopteri.Y -20); 
     
    127173        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui); 
    128174        Add(kranu); 
     175        saakoHeittaaKranaatin = false; 
     176 
     177        //Timer.SingleShot(2.0, delegate { saakoHeittaaKranaatin = true; }); 
     178        ampumislaskuri.Value = ampumislaskuri.MaxValue; 
     179        ampumislaskuri.AddOverTime(-ampumislaskuri.Value, ampumislaskuri.MaxValue); 
    129180    } 
    130181 
     
    148199        laukaisija.LaukaisuAjastin.Start(); 
    149200 
    150          
     201        laukaisijoitaTuhottuLaskuri.MaxValue++; 
    151202    } 
    152203 
     
    166217        if (laukaisija.Tag == "vihollinen") 
    167218        { 
     219            // Vaihtaa laukaisijan tilalle rikkinäisen ja pysäyttää, ettei se enään ammu. 
    168220            laukaisija.Image = laukaisinrikki; 
    169             (laukaisija as Vihu).LaukaisuAjastin.Stop(); 
     221            if ((laukaisija as Vihu).Rikkinainen == false) 
     222            { 
     223                laukaisijoitaTuhottuLaskuri.Value++; 
     224            } 
     225            (laukaisija as Vihu).Riko(); 
     226             
     227             
     228             
    170229        } 
    171230    } 
     
    201260    } 
    202261} 
    203 class Vihu : PhysicsObject 
     262public class Vihu : PhysicsObject 
    204263{ 
    205264    public Timer LaukaisuAjastin; 
    206  
     265    public bool Rikkinainen = false; 
    207266    public Vihu(double leveys, double korkeus) 
    208267        : base(leveys, korkeus) 
     
    210269         
    211270    } 
     271 
     272    public void Riko() 
     273    { 
     274        LaukaisuAjastin.Stop(); 
     275        Rikkinainen = true; 
     276    } 
     277 
    212278} 
Note: See TracChangeset for help on using the changeset viewer.