source: 2012/JAO/John/norsupeli/norsupeli/norsupeli/norsupeli.cs @ 2737

Revision 2737, 8.0 KB checked in by anonymous, 9 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class norsupeli : PhysicsGame
10{
11    int lukumaara;
12    const double nopeus = 500;
13    const double hyppyNopeus = 500;
14    const int RUUDUN_KOKO = 35;
15    IntMeter laskuri;
16    ScoreList topLista = new ScoreList(10, true, 999);
17    List<Label> valikonKohdat;
18    Timer aikaLaskuri;
19    Image mario = LoadImage("mario");
20   
21
22    PlatformCharacter pelaaja1;
23
24    Image pelaajanKuva = LoadImage("shadow");
25    Image tahtiKuva = LoadImage("kulta");
26    Image supermario = LoadImage("supermario");
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28    Image mariobro = LoadImage("mariobro");
29    Image supermariobro = LoadImage("supermariobro");
30
31    public override void Begin()
32    {
33        Valikko(); 
34    }
35    void Valikko()
36    {
37        ClearAll();
38        Level.Width = Screen.Width;
39        Level.Height = Screen.Height;
40        Level.Background.Image = supermariobro;
41        Level.Background.FitToLevel();
42
43        MultiSelectWindow valikko = new MultiSelectWindow("", "Aloita peli", "Lopeta");
44        valikko.ActiveColor = Color.Transparent;
45        valikko.ItemSelected += PainettiinValikonNappia;
46        Add(valikko);
47
48        //valikonKohdat = new List<Label>();
49
50        //Label kohta1 = new Label("Aloita uusi peli");
51        //kohta1.BorderColor = Color.Black;
52        //kohta1.Position = new Vector(0, 40);
53        //valikonKohdat.Add(kohta1);
54
55        //Label kohta2 = new Label("Lopeta");
56        //kohta2.Position = new Vector(0, -40);
57        //valikonKohdat.Add(kohta2);
58
59        //foreach (Label valikonKohta in valikonKohdat)
60        //{
61        //    Add(valikonKohta);
62        //}
63
64        //Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
65        //Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
66
67        Mouse.IsCursorVisible = true;
68//        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
69        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
70    }
71    void ValikossaLiikkuminen(AnalogState hiirenTila)
72    {
73        foreach (Label kohta in valikonKohdat)
74        {
75            if (Mouse.IsCursorOn(kohta))
76            {
77                kohta.TextColor = Color.Red;
78            }
79            else
80            {
81                kohta.TextColor = Color.Black;
82            }
83
84        }
85    }
86    void AloitaPeli()
87    {
88        ClearAll();
89        lukumaara = 0;
90        Gravity = new Vector(0.0, -900.0);
91
92        luoKentta();
93        lisaaNappaimet();
94        LuoAikaLaskuri();
95        laskuri = new IntMeter(0);
96        laskuri.MaxValue = lukumaara;
97        laskuri.UpperLimit += laskuriYlarajassa;
98
99        if (DataStorage.Exists("pisteet.xml"))
100            topLista = DataStorage.Load<ScoreList>(topLista, "pisteet.xml");
101
102
103        Camera.Follow(pelaaja1);
104        Camera.ZoomFactor = 2.4;
105        Camera.StayInLevel = true;
106    }
107    void luoKentta()
108    {
109        TileMap kentta = TileMap.FromFile("kentta1.txt");
110        kentta.SetTileMethod('#', lisaaTaso);
111        kentta.SetTileMethod('*', lisaaTahti);
112        kentta.SetTileMethod('N', lisaaPelaaja);
113        kentta.SetTileMethod('M', M);
114        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
115        Level.CreateBorders();
116        Level.Background.Image = mario;
117        Level.Background.FitToLevel();
118    }
119    void M (Vector paikka, double leveys, double korkeus)
120    {
121        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus-8);
122        //taso.Position = paikka;
123        taso.Color = Color.Black;
124        taso.X = paikka.X;
125        taso.Y = paikka.Y-5;
126        Add(taso);
127        taso.Tag = "M";
128        taso.Image = supermario;
129
130    }
131
132    void lisaaTaso(Vector paikka, double leveys, double korkeus)
133    {
134        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
135        taso.Position = paikka;
136        taso.Color = Color.Green;
137        Add(taso);
138        taso.Image = mariobro;
139    }
140
141    void lisaaTahti(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys-10, korkeus-10);
144        tahti.IgnoresCollisionResponse = true;
145        tahti.Position = paikka;
146        tahti.Image = tahtiKuva;
147        tahti.Tag = "tahti";
148        Add(tahti);
149        lukumaara++;
150    }
151
152    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
153    {
154        pelaaja1 = new PlatformCharacter(leveys-2, korkeus-2);
155        pelaaja1.Position = paikka;
156        pelaaja1.Mass = 4.0;
157        pelaaja1.Image = pelaajanKuva;
158        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
159        Add(pelaaja1);
160    }
161
162    void lisaaNappaimet()
163    {
164        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
165        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
166        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
167
168        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
169        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
170        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
171
172        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
175        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
176        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
177
178        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
179    }
180
181    void liikuta(PlatformCharacter hahmo, double nopeus)
182    {
183        hahmo.Walk(nopeus);
184    }
185
186    void hyppaa(PlatformCharacter hahmo, double nopeus)
187    {
188        hahmo.Jump(nopeus);
189    }
190
191    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
192    {
193        if (kohde.Tag.ToString() == "tahti")
194        {
195            maaliAani.Play();
196            MessageDisplay.Add("Keräsit tähden!");
197            kohde.Destroy();
198            laskuri.Value++;
199        }
200
201        if (kohde.Tag.ToString() == "M"){
202            //AloitaPeli();
203            aikaLaskuri.Pause();
204            MultiSelectWindow valikko = new MultiSelectWindow("", "Aloita uudelleen!");
205            valikko.ItemSelected += PainettiinValikonNappia;
206            Add(valikko);
207        }
208    }
209    void LuoAikaLaskuri()
210    {
211        aikaLaskuri = new Timer();
212        aikaLaskuri.Start();
213
214        Label aikaNaytto = new Label();
215        aikaNaytto.TextColor = Color.Blue;
216        aikaNaytto.Y= Screen.Top - 100.0;
217        aikaNaytto.X = Screen.Left + 100.0;
218        aikaNaytto.DecimalPlaces = 1;
219        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
220        Add(aikaNaytto);
221    }
222    void laskuriYlarajassa(int arvo)
223    {
224        aikaLaskuri.Pause();
225        MessageDisplay.TextColor = Color.White;
226        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
227        HighScoreWindow topIkkuna = new HighScoreWindow(
228                             "Parhaat pisteet",
229                             "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
230                             topLista, aikaLaskuri.CurrentTime);
231        topIkkuna.Closed += TallennaPisteet;
232        Add(topIkkuna);
233    }
234    void TallennaPisteet(Window sender)
235    {
236        DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
237        Valikko();
238    }
239    void PainettiinValikonNappia(int valinta)
240    {
241        switch (valinta)
242        {
243            case 0:
244               AloitaPeli();
245                break;
246            case 1:
247                Exit();
248                break;
249        }
250    } 
251}
252
Note: See TracBrowser for help on using the repository browser.