Changeset 2101 for 2011


Ignore:
Timestamp:
2011-06-17 12:44:00 (8 years ago)
Author:
veilhalo
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/VeikkaH/Pallopeli/Pallopeli/Pallopeli/Peli.cs

    r2054 r2101  
    66using Jypeli.Effects; 
    77using Jypeli.Widgets; 
    8  
    98// 
    109// 
    11 //lifetime event 
     10// 
     11//  0.333333333333333   to 0.333 !!!!!!!!!!!! 
     12//  VAALIKKKOOOO pelitilasta 
     13// 
    1214// 
    1315// 
     
    1820     */ 
    1921    #region esittelyt 
     22 
    2023    SoundEffect tahtiAani = LoadSoundEffect("maali"); 
    2124    SoundEffect keraaAani = LoadSoundEffect("keraa"); 
    2225    SoundEffect syoAani = LoadSoundEffect("syo"); 
    23  
     26     
    2427    Image hahmoKuva = LoadImage("hahmo"); 
    2528    Image hahmo2Kuva = LoadImage("hahmo2"); 
     
    2932    Image eriKuutioKuva = LoadImage("erikuutio"); 
    3033    Image eriStopKuva = LoadImage("eristop"); 
    31  
    32     double alkuLiike = 1; 
     34     
     35    double alkuLiike = 1000; 
    3336    int palloLaskuri = 1; 
    3437    bool onKuutioita = false; 
    35  
     38    double aika = 0; 
     39    int pahikset = 100; 
     40 
     41    ScoreList topLista = new ScoreList(10, true, -0); 
     42     
    3643    Timer kuutioAika = new Timer(); 
     44    Timer aikaTimer = new Timer(); 
    3745 
    3846    PhysicsObject hahmo; 
     47    PhysicsObject hahmo2; 
    3948    PhysicsObject taulu; 
    4049    PhysicsObject kuutio; 
    41  
    42     IntMeter pisteLaskuri; 
     50     
     51    IntMeter pisteLaskuri1; 
     52    IntMeter pisteLaskuri2; 
    4353 
    4454    FollowerBrain kuutionAivot = new FollowerBrain(); 
     
    4656    List<PhysicsObject> pallot = new List<PhysicsObject>(); 
    4757    List<PhysicsObject> kaikki = new List<PhysicsObject>(); 
     58    List<PhysicsObject> ihanKaikki = new List<PhysicsObject>(); 
    4859    List<Label> valikonKohdat; 
    4960    #endregion 
     
    5263    { 
    5364        IsFullScreen = true; 
     65        if (DataStorage.Exists("parhaat_pisteet.xml")) 
     66            topLista = DataStorage.Load<ScoreList>(topLista, "parhaat_pisteet.xml"); 
     67        Level.Height -= 60; 
     68        Valikko(); 
     69    } 
     70    void AloitaPeli(int pelaajat) 
     71    { 
     72        ClearAll(); 
     73        onKuutioita = false; 
    5474        Level.CreateBorders(1, true); 
    55         Level.Height -= 60; 
    5675        Camera.ZoomToLevel(); 
    5776        Level.BackgroundColor = Color.Black; 
    5877        MessageDisplay.TextColor = Color.White; 
    5978        luoTaulu(); 
    60         luoHahmo(); 
    61         luoLaskuri(); 
    62         for (int i = 0; i < 100; i++) 
     79        luoHahmo(pelaajat); 
     80        if (pelaajat == 2) 
     81        { 
     82            luoHahmo2(); 
     83        } 
     84        luoLaskurit(pelaajat); 
     85        for (int i = 0; i < pahikset; i++) 
    6386        { 
    6487            luoPallo(); 
     
    7093            luoErikoisuus("stop"); 
    7194        } 
    72         pisteLaskuri.Reset(); 
    73         Valikko(); 
    74     } 
    75     void luoLaskuri() 
    76     { 
    77         pisteLaskuri = new IntMeter(0); 
    78         pisteLaskuri.MaxValue = 100; 
    79         pisteLaskuri.UpperLimit += tahdetKeratty; 
     95        pisteLaskuri1.Reset(); 
     96        aikaTimer.Interval = 1; 
     97        aikaTimer.Trigger += lisaaAikaa; 
     98        aikaTimer.Start(); 
     99        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon"); 
     100    } 
     101    void luoLaskurit(int pelaajat) 
     102    { 
     103        pisteLaskuri1 = new IntMeter(0); 
     104        pisteLaskuri1.MaxValue = pahikset; 
     105        pisteLaskuri1.UpperLimit += tahdetKeratty; 
    80106 
    81107        Label pisteNaytto = new Label(); 
     
    84110        pisteNaytto.TextColor = Color.Red; 
    85111        pisteNaytto.HorizontalAlignment = HorizontalAlignment.Left; 
    86         pisteNaytto.Title = "Pisteet"; 
    87         pisteNaytto.BindTo(pisteLaskuri); 
     112        pisteNaytto.Title = "Tähtiä kerätty"; 
     113        pisteNaytto.BindTo(pisteLaskuri1); 
    88114        Add(pisteNaytto); 
     115        if (pelaajat == 2) 
     116        { 
     117            pisteLaskuri2 = new IntMeter(0); 
     118            pisteLaskuri2.MaxValue = pahikset; 
     119            pisteLaskuri2.UpperLimit += tahdetKeratty; 
     120 
     121            Label pisteNaytto2 = new Label(); 
     122            pisteNaytto2.X = 100; 
     123            pisteNaytto.X = -100; 
     124            pisteNaytto2.Y = Screen.Bottom + 20; 
     125            pisteNaytto2.TextColor = Color.Red; 
     126            pisteNaytto2.HorizontalAlignment = HorizontalAlignment.Left; 
     127            pisteNaytto2.Title = "Pelaaja 2"; 
     128            pisteNaytto.Title = "Pelaaja 1"; 
     129            pisteNaytto2.BindTo(pisteLaskuri1); 
     130            Add(pisteNaytto2); 
     131        } 
    89132    } 
    90133    void tahdetKeratty(int arvo) 
    91134    { 
    92         Widget voitto = new Widget(100, 100, Shape.Circle); 
    93         Add (voitto); 
    94         Label voitit = new Label("Voitit!"); 
    95         Add(voitit); 
     135        foreach (PhysicsObject kaikkiOb in ihanKaikki) 
     136        { 
     137            kaikkiOb.Destroy(); 
     138        } 
     139        aikaTimer.Stop(); 
     140        HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", 
     141                     "Tähteä minuutissa", 
     142                     "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:", 
     143                     topLista, aika); 
     144        topIkkuna.Closed += TallennaPisteet; 
     145        Add(topIkkuna); 
    96146    } 
    97147    void luoPallo() 
     
    107157        pallo.Tag = "pallo" + palloLaskuri; 
    108158        Add(pallo); 
    109         pallo.Hit((new Vector(RandomGen.NextDouble(-1, 1), RandomGen.NextDouble(-1, 1)).Normalize()) * RandomGen.NextDouble(0, alkuLiike * 1000)); 
     159        pallo.Hit((new Vector(RandomGen.NextDouble(-1, 1), RandomGen.NextDouble(-1, 1)).Normalize()) * RandomGen.NextDouble(0, alkuLiike)); 
    110160        palloLaskuri++; 
    111161        pallot.Add(pallo); 
    112162        kaikki.Add(pallo); 
     163        ihanKaikki.Add(pallo); 
    113164    } 
    114165    void luoTahti() 
     
    126177        Add(tahti); 
    127178        kaikki.Add(tahti); 
    128     } 
    129     void luoHahmo() 
     179        ihanKaikki.Add(tahti); 
     180    } 
     181    void luoHahmo(int pelaajat) 
    130182    { 
    131183        hahmo = new PhysicsObject(50, 50, Shape.Circle, CollisionShapeQuality.Best); 
    132184        hahmo.X = 0; 
     185        if (pelaajat == 2) 
     186        { 
     187            hahmo.X -= 100; 
     188        } 
    133189        hahmo.Y = 0; 
    134190        hahmo.Restitution = 1; 
     
    140196        AddCollisionHandler(hahmo, osu); 
    141197        Add(hahmo); 
     198        ihanKaikki.Add(hahmo); 
    142199 
    143200        Vector ylos = new Vector(0, 1000); 
     
    156213 
    157214        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohje"); 
    158         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    159  
    160         Keyboard.Listen(Key.D1, ButtonState.Pressed, aseta, "Liiku vasemmalle", hahmo, vasemmalle); 
    161         } 
     215        } 
     216    void luoHahmo2() 
     217    { 
     218        hahmo2 = new PhysicsObject(50, 50, Shape.Circle, CollisionShapeQuality.Best); 
     219        hahmo2.X = 100; 
     220        hahmo2.Y = 0; 
     221        hahmo2.Restitution = 1; 
     222        hahmo2.KineticFriction = 0; 
     223        hahmo2.Color = Color.Green; 
     224        hahmo2.Image = hahmo2Kuva; 
     225        hahmo2.Mass = 1; 
     226        hahmo2.LinearDamping = 0.9; 
     227        AddCollisionHandler(hahmo2, osu); 
     228        Add(hahmo2); 
     229        ihanKaikki.Add(hahmo2); 
     230 
     231        Vector ylos = new Vector(0, 1000); 
     232        Vector alas = new Vector(0, -1000); 
     233        Vector oikealle = new Vector(1000, 0); 
     234        Vector vasemmalle = new Vector(-1000, 0); 
     235 
     236        Keyboard.Listen(Key.W, ButtonState.Down, aseta, "Liiku ylös", hahmo2, ylos); 
     237        Keyboard.Listen(Key.W, ButtonState.Released, aseta, null, hahmo2, Vector.Zero); 
     238        Keyboard.Listen(Key.S, ButtonState.Down, aseta, "Liiku alas", hahmo2, alas); 
     239        Keyboard.Listen(Key.S, ButtonState.Released, aseta, null, hahmo2, Vector.Zero); 
     240        Keyboard.Listen(Key.D, ButtonState.Down, aseta, "Liiku oikealle", hahmo2, oikealle); 
     241        Keyboard.Listen(Key.D, ButtonState.Released, aseta, null, hahmo2, Vector.Zero); 
     242        Keyboard.Listen(Key.A, ButtonState.Down, aseta, "Liiku vasemmalle", hahmo2, vasemmalle); 
     243        Keyboard.Listen(Key.A, ButtonState.Released, aseta, null, hahmo2, Vector.Zero); 
     244    } 
    162245    void luoErikoisuus(string tyyppi) 
    163246    { 
     
    165248        { 
    166249            PhysicsObject eriKuutio; 
    167             eriKuutio = new PhysicsObject(50, 50); 
     250            eriKuutio = new PhysicsObject(50, 50, Shape.Circle); 
    168251            eriKuutio.X = RandomGen.NextDouble(Level.Left + eriKuutio.Width, Level.Right - eriKuutio.Width); 
    169252            eriKuutio.Y = RandomGen.NextDouble(Level.Bottom + eriKuutio.Height, Level.Top - eriKuutio.Height); 
     
    176259            Add(eriKuutio); 
    177260            kaikki.Add(eriKuutio); 
     261            ihanKaikki.Add(eriKuutio); 
    178262        } 
    179263        else if (tyyppi == "stop") 
    180264        { 
    181265            PhysicsObject eriStop; 
    182             eriStop = new PhysicsObject(50, 50); 
     266            eriStop = new PhysicsObject(50, 50, Shape.Circle); 
    183267            eriStop.X = RandomGen.NextDouble(Level.Left + eriStop.Width, Level.Right - eriStop.Width); 
    184268            eriStop.Y = RandomGen.NextDouble(Level.Bottom + eriStop.Height, Level.Top - eriStop.Height); 
     
    191275            Add(eriStop); 
    192276            kaikki.Add(eriStop); 
     277            ihanKaikki.Add(eriStop); 
    193278        } 
    194279    } 
    195280    void luoKuutio() 
    196     { 
     281   { 
    197282        onKuutioita = true; 
    198283        kuutio = new PhysicsObject(100, 100, Shape.Rectangle, CollisionShapeQuality.Best); 
     
    203288        kuutio.Color = Color.Cyan; 
    204289        kuutio.Image = kuutioKuva; 
    205         kuutio.Mass *= 10; 
     290        kuutio.Mass = 50; 
    206291        kuutio.Brain = kuutionAivot; 
    207292        kuutionAivot.Active = true; 
    208         kuutio.MaximumLifetime = new TimeSpan(0, 0, 30);//Huom. 
    209         kuutioAika.Interval = 30;                       //30 ja 30 samoiksi!!!!! 
    210         kuutionAivot.Speed *= 20; 
     293        kuutioAika.Interval = 60; 
     294        kuutioAika.Trigger += poistaKuutio; 
     295        kuutioAika.Start(); 
     296        kuutionAivot.Speed = 200; 
    211297        uusiKohde(); 
    212298 
    213299        AddCollisionHandler(kuutio, syo); 
    214300        Add(kuutio); 
    215     } 
    216     void poistaKuutio() 
    217     { 
    218          
     301        ihanKaikki.Add(kuutio); 
     302    } 
     303    void poistaKuutio(Timer sender) 
     304    { 
     305        kuutio.Destroy(); 
     306        onKuutioita = false; 
    219307    } 
    220308    void aseta (PhysicsObject hahmoAseta, Vector liike2) 
     
    222310        hahmoAseta.Push(liike2); 
    223311    } 
    224     void osu(PhysicsObject hahmo, PhysicsObject kohde) 
    225     { 
    226         bool alhaalla = false; 
     312    void osu(PhysicsObject objekti, PhysicsObject kohde) 
     313    { 
     314        bool a1 = false; 
     315        bool a2 = false; 
     316 
     317        if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || 
     318            Keyboard.GetKeyState(Key.Down) == ButtonState.Down || 
     319            Keyboard.GetKeyState(Key.Left) == ButtonState.Down || 
     320            Keyboard.GetKeyState(Key.Right) == ButtonState.Down) 
     321        { 
     322            a1 = true; 
     323        } 
     324        else 
     325        { 
     326            a1 = false; 
     327        } 
     328 
     329        if (Keyboard.GetKeyState(Key.W) == ButtonState.Down || 
     330            Keyboard.GetKeyState(Key.S) == ButtonState.Down || 
     331            Keyboard.GetKeyState(Key.A) == ButtonState.Down || 
     332            Keyboard.GetKeyState(Key.D) == ButtonState.Down) 
     333        { 
     334            a2 = true; 
     335        } 
     336        else 
     337        { 
     338            a2 = false; 
     339        } 
    227340 
    228341        switch (kohde.Tag.ToString()) 
    229342        { 
    230343            case "tahti": 
    231  
    232                 if (Keyboard.GetKeyState(Key.Up) == ButtonState.Down || 
    233                     Keyboard.GetKeyState(Key.Down) == ButtonState.Down || 
    234                     Keyboard.GetKeyState(Key.Left) == ButtonState.Down || 
    235                     Keyboard.GetKeyState(Key.Right) == ButtonState.Down) 
    236                 { 
    237                     alhaalla = true; 
    238                 } 
    239                 else 
    240                 { 
    241                     alhaalla = false; 
    242                 } 
    243  
    244                 if (alhaalla == true) 
     344                if ((objekti == hahmo) && (a1 == true)) 
    245345                { 
    246346                    tahtiAani.Play(); 
    247347                    kohde.Destroy(); 
    248                     pisteLaskuri.Value++; 
     348                    pisteLaskuri1.Value++; 
     349                } 
     350                if ((objekti == hahmo2) && (a2 == true)) 
     351                { 
     352                    tahtiAani.Play(); 
     353                    kohde.Destroy(); 
     354                    pisteLaskuri2.Value++; 
    249355                } 
    250356                break; 
     
    307413    void Valikko() 
    308414    { 
    309         /* 
    310415        ClearAll(); 
     416        Level.BackgroundColor = Color.Black; 
    311417        valikonKohdat = new List<Label>(); 
    312418 
    313419        Label kohta1 = new Label("Pelaa"); 
    314         kohta1.Position = new Vector(0, 40); 
     420        kohta1.Position = new Vector(0, 90); 
    315421        valikonKohdat.Add(kohta1); 
    316422 
    317         Label kohta2 = new Label("Lopeta"); 
    318         kohta2.Position = new Vector(0, -40); 
     423        Label kohta2 = new Label("Ohjeet"); 
     424        kohta2.Position = new Vector(0, 30); 
    319425        valikonKohdat.Add(kohta2); 
    320426 
     427        Label kohta3 = new Label("Parhaat pisteet"); 
     428        kohta3.Position = new Vector(0, -30); 
     429        valikonKohdat.Add(kohta3); 
     430 
     431        Label kohta4 = new Label("Sulje"); 
     432        kohta4.Position = new Vector(0, -90); 
     433        valikonKohdat.Add(kohta4); 
     434 
    321435        foreach (Label valikonKohta in valikonKohdat) 
    322436        { 
     
    324438        } 
    325439 
    326         Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null); 
    327         Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null); 
     440        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, maara, null); 
     441        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ohjeet, null); 
     442        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, pisteet, null); 
     443        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Exit, null); 
    328444 
    329445        Mouse.IsCursorVisible = true; 
    330446        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null); 
    331         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, ""); 
    332         */ 
    333     } 
     447    } 
     448    void ValikossaLiikkuminen(AnalogState hiirenTila) 
     449    { 
     450        foreach (Label kohta in valikonKohdat) 
     451        { 
     452            if (Mouse.IsCursorOn(kohta)) 
     453            { 
     454                kohta.TextColor = Color.Lime; 
     455            } 
     456            else 
     457            { 
     458                kohta.TextColor = Color.White; 
     459            } 
     460 
     461        } 
     462    } 
     463    void ohjeet() 
     464    { 
     465        Window ohjeIkkuna = new Window(); 
     466        ohjeIkkuna.Title.Text = "Ohjeet"; 
     467        Add(ohjeIkkuna); 
     468 
     469        Label tarina = new Label("Pelaaja 1: Oikea nuoli - Liiku oikealle"); 
     470        tarina.Width = 300; 
     471        tarina.SizeMode = TextSizeMode.Wrapped; 
     472        ohjeIkkuna.ClientArea.Add(tarina); 
     473    } 
     474    void pisteet() 
     475    { 
     476        HighScoreWindow topIkkuna = new HighScoreWindow("Parhaat pisteet", 
     477                              "Tähteä minuutissa", 
     478                              topLista); 
     479        topIkkuna.Closed += TallennaPisteet; 
     480        Add(topIkkuna); 
     481    } 
     482    void lisaaAikaa(Timer sender) 
     483    { 
     484        aika++; 
     485    } 
     486    void maara() 
     487    { 
     488        InputWindow kysymysIkkuna = new InputWindow("Pelaa", "Kuinka monta pelaajaa? (1-2)"); 
     489        kysymysIkkuna.TextEntered += kasitteleMaara; 
     490        Add(kysymysIkkuna); 
     491    } 
     492    void kasitteleMaara(InputWindow ikkuna) 
     493    { 
     494        string vastaus = ikkuna.InputBox.Text; 
     495        if (vastaus == "1") 
     496        { 
     497            AloitaPeli(1); 
     498        } 
     499        if (vastaus == "2") 
     500        { 
     501            AloitaPeli(2); 
     502        } 
     503        if ((vastaus != "1") && (vastaus != "2")) 
     504        { 
     505             maara(); 
     506            Window virheIkkuna = new Window(); 
     507            virheIkkuna.Title.Text = "Virhe"; 
     508            Add(virheIkkuna); 
     509 
     510            Label tarina = new Label("Kirjoita 1 tai 2"); 
     511            tarina.Width = 300; 
     512            tarina.SizeMode = TextSizeMode.Wrapped; 
     513            virheIkkuna.ClientArea.Add(tarina); 
     514        } 
     515    } 
     516    void TallennaPisteet(Window sender) 
     517    { 
     518        DataStorage.Save<ScoreList>(topLista, "parhaat_pisteet.xml"); 
     519        Valikko(); 
     520    } 
     521 
    334522} 
Note: See TracChangeset for help on using the changeset viewer.