Ignore:
Timestamp:
2011-06-10 11:35:45 (10 years ago)
Author:
joaamaka
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2011/23/mikmatla/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Peli.cs

    r1830 r1879  
    77using Jypeli.Widgets; 
    88 
     9class Nappi : PhysicsObject 
     10{ 
     11    public char Merkki; 
     12 
     13    public Nappi(double leveys, double korkeus) 
     14        : base(leveys, korkeus) 
     15    { 
     16        MakeStatic(); 
     17    } 
     18} 
     19 
     20 
    921public class Peli : PhysicsGame 
    1022{ 
     
    1426 
    1527    IntMeter pisteLaskuri; 
     28    Timer pisteAikaLaskuri; 
    1629 
    1730    List<Label> ValikonKohdat; 
     
    2942        MediaPlayer.Play("Musiikki"); 
    3043        MediaPlayer.IsRepeating = true; 
     44    } 
     45 
     46    void AikaLoppui(Timer ajastin) 
     47    { 
     48        ValikonKohdat = new List<Label>(); 
     49  
     50            if (pisteLaskuri.Value > 30) 
     51            { 
     52                ajastin.Stop(); 
     53                return; 
     54            } 
     55 
     56        Label kohta4 = new Label("Rahnaa tuli justiin sopivasti!"); 
     57        kohta4.Position = new Vector(0, 0); 
     58        kohta4.TextColor = RandomGen.NextColor(); 
     59        ValikonKohdat.Add(kohta4); 
     60        ajastin.Stop(); 
     61 
     62        Timer.SingleShot(3, Valikko); 
     63 
     64        foreach (Label Valikonkohta in ValikonKohdat) 
     65            Add(Valikonkohta); 
    3166    } 
    3267 
     
    5893        Timer.SingleShot(1.5, Jee.Destroy); 
    5994        Timer.SingleShot(2.0, Aloota); 
     95        nappejaVastaavatAjastimet.Clear(); 
    6096    } 
    6197 
     
    124160        LuoLaskuri(); 
    125161 
    126         pisteLaskuri.MaxValue = 2265; 
     162        pisteLaskuri.MaxValue = 700; 
    127163        pisteLaskuri.UpperLimit += laskuriYlarajassa; 
    128164 
     
    188224    { 
    189225        ClearAll(); 
     226        nappejaVastaavatAjastimet.Clear(); 
    190227        Level.Background.CreateGradient (Color.DarkGreen, Color.Black); 
    191228        ValikonKohdat = new List<Label>(); 
     
    265302        kentta2['q'] = lisaaNappi_q; 
    266303        kentta2['Q'] = lisaaOviQ; 
     304        kentta2['e'] = lisaaNappi_e; 
     305        kentta2['E'] = lisaaOviE; 
     306        kentta2['r'] = lisaaNappi_r; 
     307        kentta2['R'] = lisaaOviR; 
     308        kentta2['t'] = lisaaNappi_t; 
     309        kentta2['T'] = lisaaOviT; 
     310        kentta2['^'] = lisaaIlkea; 
    267311        kentta2.Insert(RUUDUN_KOKO, RUUDUN_KOKO); 
    268312        Level.CreateBorders(); 
     
    275319        { 
    276320            nappejaVastaavatOvet.Add(c, new List<PhysicsObject>()); 
     321        } 
     322 
     323        for (char c = 'a'; c < 'z'; c++) 
     324        { 
     325            Timer sulkemisAjastin = new Timer(); 
     326            sulkemisAjastin.Interval = 3; 
     327            nappejaVastaavatAjastimet.Add(c, sulkemisAjastin); 
    277328        } 
    278329    } 
     
    324375        return lisaaNappi('q', RandomGen.NextColor(), RUUDUN_KOKO, RUUDUN_KOKO + 20); 
    325376    } 
     377    PhysicsObject lisaaNappi_e() 
     378    { 
     379        return lisaaNappi('e', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO); 
     380    } 
     381    PhysicsObject lisaaNappi_r() 
     382    { 
     383        return lisaaNappi('r', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO); 
     384    } 
     385    PhysicsObject lisaaNappi_t() 
     386    { 
     387        return lisaaNappi('t', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO); 
     388    } 
    326389     
    327390    PhysicsObject lisaaNappi(char merkki, Color c, double x, double y) 
    328391    { 
    329         PhysicsObject nappi = PhysicsObject.CreateStaticObject(x, y); 
     392        Nappi nappi = new Nappi(x, y); 
    330393        nappi.Color = c; 
    331         nappi.Tag = merkki; 
     394        nappi.Merkki = merkki; 
     395        //ovetSaaAvata.Add(nappi, true); 
    332396        return nappi; 
    333397    } 
    334398 
    335399    Dictionary<char, List<PhysicsObject>> nappejaVastaavatOvet = new Dictionary<char, List<PhysicsObject>>(); 
     400    Dictionary<char, Timer> nappejaVastaavatAjastimet = new Dictionary<char, Timer>(); 
    336401 
    337402    PhysicsObject lisaaOviK() 
     
    350415    { 
    351416        return lisaaOvi('Q', RandomGen.NextColor(), RUUDUN_KOKO, RUUDUN_KOKO + 20); 
     417    } 
     418    PhysicsObject lisaaOviE() 
     419    { 
     420        return lisaaOvi('E', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO / 2 + 5); 
     421    } 
     422    PhysicsObject lisaaOviR() 
     423    { 
     424        return lisaaOvi('R', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO / 2 + 5); 
     425    } 
     426    PhysicsObject lisaaOviT() 
     427    { 
     428        return lisaaOvi('T', Color.Brown, RUUDUN_KOKO, RUUDUN_KOKO / 2 + 5); 
    352429    } 
    353430 
     
    409486            pisteLaskuri.Value += 5; 
    410487            kohde.Destroy(); 
     488 
     489            pisteAikaLaskuri = new Timer(); 
     490 
     491            if (pisteLaskuri.Value == 30) 
     492            { 
     493                pisteAikaLaskuri.Interval = 1; 
     494                pisteAikaLaskuri.Trigger += AikaLoppui; 
     495                pisteAikaLaskuri.Start(); 
     496            } 
    411497        } 
    412498 
     
    416502        } 
    417503 
    418         else if (kohde.Tag.ToString().Length == 1 && char.IsLower(kohde.Tag.ToString()[0])) 
    419         { 
    420             char napinMerkki = kohde.Tag.ToString()[0]; 
    421             List<PhysicsObject> ovet = nappejaVastaavatOvet[napinMerkki]; 
    422             foreach (var ovi in ovet) 
     504        else if (kohde is Nappi) 
     505        { 
     506            Nappi nappi = (Nappi)kohde; 
     507 
     508            AvaaOvet(nappi); 
     509 
     510            Timer sulkemisAjastin = nappejaVastaavatAjastimet[nappi.Merkki]; 
     511 
     512            if (! sulkemisAjastin.Enabled) 
    423513            { 
    424                 TuhoaOvi(ovi); 
    425                 Timer.SingleShot(2, delegate() { PalautaOvet(ovet); }); 
     514                sulkemisAjastin.Tag = nappi; 
     515                sulkemisAjastin.Trigger += PalautaOvet; 
     516                sulkemisAjastin.Start(1); 
    426517            } 
    427518        } 
    428519    } 
     520 
     521    void PalautaOvet(Timer ajastin) 
     522    { 
     523        ajastin.Trigger -= PalautaOvet; 
     524        Nappi nappi = (Nappi)ajastin.Tag; 
     525        PalautaOvet(nappi); 
     526    } 
     527 
     528    void AvaaOvet(Nappi nappi) 
     529    { 
     530        List<PhysicsObject> ovet = nappejaVastaavatOvet[nappi.Merkki]; 
     531        foreach (var ovi in ovet) 
     532        { 
     533            TuhoaOvi(ovi); 
     534        } 
     535    } 
    429536    void TuhoaOvi(PhysicsObject ovi) 
    430537    { 
    431538        ovi.IsVisible = false; 
    432         ovi.IgnoresCollisionResponse = true; 
    433     } 
    434     void PalautaOvet(List<PhysicsObject> ovet) 
     539        Remove(ovi); 
     540    } 
     541 
     542    void PalautaOvet(Nappi nappi) 
     543    { 
     544        List<PhysicsObject> ovet = nappejaVastaavatOvet[nappi.Merkki]; 
     545        PalautaOvet(nappi, ovet); 
     546    } 
     547 
     548    void PalautaOvet(PhysicsObject nappi, List<PhysicsObject> ovet) 
    435549    { 
    436550        foreach (PhysicsObject ovi in ovet) 
    437551        { 
    438552            ovi.IsVisible = true; 
    439             ovi.IgnoresCollisionResponse = false; 
     553            Add(ovi); 
    440554        } 
    441555    } 
Note: See TracChangeset for help on using the changeset viewer.