Ignore:
Timestamp:
2017-07-26 12:58:25 (23 months ago)
Author:
sieerinn
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2017/utsjoki/TorstiK/GreatMonsters/GreatMonsters/GreatMonsters/GreatMonsters.cs

    r9089 r9121  
    1313    const int RUUDUN_KOKO = 40; 
    1414 
     15    int kenttaNro = 1; 
     16 
    1517    PlatformCharacter pelaaja1; 
    1618 
    17     Image pelaajanKuva = LoadImage("Monster3"); 
     19    Image pelaajanKuva = LoadImage("Monster2"); 
    1820    Image tahtiKuva = LoadImage("Star"); 
    1921    Image piikkikuva = LoadImage("Piikki"); 
     
    2123    Image pikkuarkkukuva = LoadImage("Pikkuarkku"); 
    2224    Image voittoarkkukuva = LoadImage("Voittoarkku"); 
     25    Image sydanpydanKuva = LoadImage("Sydanpydan"); 
     26 
     27    IntMeter pistelaskuri = new IntMeter(0); 
     28    IntMeter elämälaskuri = new IntMeter(3); 
     29 
     30    Inventory tähdet; 
     31    Inventory sydämet; 
    2332 
    2433    SoundEffect maaliAani = LoadSoundEffect("maali"); 
     
    2635    public override void Begin() 
    2736    { 
     37        ClearAll(); 
    2838        Gravity = new Vector(0, -1000); 
    2939 
    3040        LuoKentta(); 
    3141        LisaaNappaimet(); 
     42        LuoPistelaskuri(); 
     43        LuoElämälaskuri(); 
    3244 
    3345        Camera.Follow(pelaaja1); 
     
    3648    } 
    3749 
     50 
     51    void LuoPistelaskuri() 
     52    { 
     53        pistelaskuri = new IntMeter(0); 
     54        //Label pisteNaytto = new Label(); 
     55        //pisteNaytto.X = Screen.Right + 100; 
     56        //pisteNaytto.Y = Screen.Top - 100; 
     57        ////pisteNaytto.SetImage = tahtiKuva; 
     58 
     59        //pisteNaytto.BindTo(pistelaskuri); 
     60        //Add(pisteNaytto); 
     61 
     62        tähdet = new Inventory(); 
     63        tähdet.Top = Screen.Top - 50; 
     64        Add(tähdet); 
     65    } 
     66    void LuoElämälaskuri() 
     67    { 
     68        //elämälaskuri = new IntMeter(3); 
     69        sydämet = new Inventory(); 
     70        sydämet.Top = Screen.Top - 150; 
     71        Add(sydämet); 
     72 
     73        for (int i = 0; i < elämälaskuri.Value; i++) 
     74        { 
     75            sydämet.AddItem(null, sydanpydanKuva); 
     76        } 
     77    } 
    3878    void LuoKentta() 
    3979    { 
    40         TileMap kentta = TileMap.FromLevelAsset("kentta1"); 
     80 
     81        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNro); 
    4182        kentta.SetTileMethod('#', LisaaTaso); 
    4283        kentta.SetTileMethod('*', LisaaTahti); 
     
    68109        Add(tahti); 
    69110    } 
    70     void LisaaPiikki (Vector paikka, double leveys, double korkeus) 
     111    void LisaaPiikki(Vector paikka, double leveys, double korkeus) 
    71112    { 
    72113        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    73         Piikki.IgnoresCollisionResponse = true; 
    74114        Piikki.Position = paikka; 
    75115        Piikki.Image = piikkikuva; 
    76         Piikki.Tag = " Piikki"; 
     116        Piikki.Tag = "Piikki"; 
    77117        Add(Piikki); 
    78118    } 
     
    83123        Kallo.Position = paikka; 
    84124        Kallo.Image = kallokuva; 
    85         Kallo.Tag = " Kallo"; 
     125        Kallo.Tag = "Kallo"; 
    86126        Add(Kallo); 
    87127    } 
     
    92132        Pikkuarkku.Position = paikka; 
    93133        Pikkuarkku.Image = pikkuarkkukuva; 
    94         Pikkuarkku.Tag = " Pikkuarkku"; 
     134        Pikkuarkku.Tag = "Pikkuarkku"; 
    95135        Add(Pikkuarkku); 
    96136    } 
    97     void LisaaVoittoarkku (Vector paikka, double leveys, double korkeus) 
     137    void LisaaVoittoarkku(Vector paikka, double leveys, double korkeus) 
    98138    { 
    99139        PhysicsObject Voittoarkku = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     
    111151        pelaaja1.Image = pelaajanKuva; 
    112152        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen); 
     153        AddCollisionHandler(pelaaja1, "Piikki", TormaaPiikkiin); 
     154        AddCollisionHandler(pelaaja1, "Kallo", TormaaKalloon); 
     155        AddCollisionHandler(pelaaja1, "Pikkuarkku", TormaaPikkuarkkuun); 
     156        AddCollisionHandler(pelaaja1, "Voittoarkku", TormaaPikkuarkkuun); 
    113157        Add(pelaaja1); 
    114158    } 
     
    147191        MessageDisplay.Add("Keräsit tähden!"); 
    148192        tahti.Destroy(); 
     193 
     194        tähdet.AddItem(null, tahtiKuva); 
     195    } 
     196    void Kuole() 
     197    { 
     198        elämälaskuri.Value -= 1; 
     199        if (sydämet.ObjectCount > 0) 
     200            sydämet.Objects[0].Destroy(); 
     201 
     202        Timer.SingleShot(2, delegate 
     203        { 
     204            ClearAll(); 
     205            Begin(); 
     206        }); 
     207    } 
     208    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki) 
     209    { 
     210        if (Math.Abs(pelaaja1.Bottom - piikki.Top) < 5) 
     211        { 
     212            MessageDisplay.Add("Menetit elämän!"); 
     213            pelaaja1.Destroy(); 
     214            Kuole(); 
     215        } 
     216 
     217    } 
     218    void TormaaKalloon(PhysicsObject hahmo, PhysicsObject kallo) 
     219    { 
     220        MessageDisplay.Add("Menetit elämän!"); 
     221        pelaaja1.Destroy(); 
     222        kallo.Destroy(); 
     223        Kuole(); 
     224    } 
     225    void TormaaPikkuarkkuun(PhysicsObject hahmo, PhysicsObject pikkuarkku) 
     226    { 
     227        if (elämälaskuri.Value < 3) 
     228        { 
     229            MessageDisplay.Add("Sait elämän!"); 
     230            pikkuarkku.Destroy(); 
     231            sydämet.AddItem(null, sydanpydanKuva); 
     232            elämälaskuri.Value += 1; 
     233        } 
     234 
     235 
     236    } 
     237    void TormaaVoittoarkkuun(PhysicsObject hahmo, PhysicsObject voittoarkku) 
     238    { 
     239        MessageDisplay.Add("Voitit!"); 
     240 
     241        if(pistelaskuri.Value >= 10) 
     242        { 
     243            kenttaNro += 1; 
     244            Begin(); 
     245        } 
    149246    } 
    150247} 
     248 
     249 
     250class Inventory : Widget 
     251{ 
     252    /// <summary> 
     253    /// Tapahtuma, kun esine on valittu. 
     254    /// </summary> 
     255    public event Action<PhysicsObject> ItemSelected; 
     256 
     257    /// <summary> 
     258    /// Luo uuden esinevalikon. 
     259    /// </summary> 
     260    public Inventory() 
     261        : base(new HorizontalLayout()) 
     262    { 
     263    } 
     264 
     265    /// <summary> 
     266    /// Lisää esineen. 
     267    /// </summary> 
     268    /// <param name="item">Lisättävä esine.</param> 
     269    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param> 
     270    public void AddItem(PhysicsObject item, Image kuva) 
     271    { 
     272        PushButton icon = new PushButton(60, 60); 
     273        icon.Image = kuva; 
     274        Add(icon); 
     275        icon.Clicked += delegate () { SelectItem(item); }; 
     276    } 
     277 
     278    void SelectItem(PhysicsObject item) 
     279    { 
     280        if (ItemSelected != null) 
     281        { 
     282            ItemSelected(item); 
     283        } 
     284    } 
     285} 
Note: See TracChangeset for help on using the changeset viewer.