source: 2011/31/MaijaH/Smiley/Smiley/Peli.cs @ 2557

Revision 2557, 8.9 KB checked in by matehaat, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11
12
13    const double nopeus = 200;
14    const double hyppyNopeus = 1000;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
19    List<Label> valikonKohdat;
20
21    IntMeter elamaLaskuri;
22    IntMeter pisteLaskuri;
23   
24    int pelaajanElamat = 3;
25
26    Image liikkuvatasoKuva = LoadImage("liikkuvataso");
27    Image kolikkoKuva = LoadImage("kolikko");
28    Image pilviKuva = LoadImage("Pilvi");
29    Image maaliKuva = LoadImage("Maali");
30    Image pelaajanKuva = LoadImage("Smiley");
31    Image tahtiKuva = LoadImage("tahti");
32
33    SoundEffect maaliAani = LoadSoundEffect("maaliAani");
34
35    PhysicsObject KentanAlaReuna;
36
37    int kenttaNro = 1;
38
39    public override void Begin()
40    {
41        SeuraavaKentta(kenttaNro);
42        Valikko();
43    }
44
45    void Valikko()
46    {
47        ClearAll();
48        valikonKohdat = new List<Label>();
49
50        Label kohta1 = new Label("Aloita uusi peli");
51        kohta1.Position = new Vector(0, 40);
52        valikonKohdat.Add(kohta1);
53
54        Label kohta2 = new Label("Lopeta");
55        kohta2.Position = new Vector(0, -40);
56        valikonKohdat.Add(kohta2);
57
58        foreach (Label valikonKohta in valikonKohdat)
59        {
60            Add(valikonKohta);
61        }
62
63        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
64        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
65
66        Mouse.IsCursorVisible = true;
67        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
68        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
69
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        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
90    }
91
92
93    void luoKentta(string kenttaTiedostonNimi)
94    {
95        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
96        kentta.SetTileMethod('T', luoMaali);
97        kentta.SetTileMethod('n', lisaaNakymatonTaso);
98        kentta.SetTileMethod('#', lisaaTaso);
99        kentta.SetTileMethod('m', lisaaLiikkuvaTaso);
100        kentta.SetTileMethod('*', lisaaTahti);
101        kentta.SetTileMethod('N', lisaaPelaaja);
102        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
103        Level.CreateBorders();
104        KentanAlaReuna = Level.CreateBottomBorder();
105        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
106        LuoLaskuri();
107        LuoElamaLaskuri();
108        Camera.Follow(pelaaja1);
109        Camera.ZoomFactor = 1.2;
110        Camera.StayInLevel = true;
111        Gravity = new Vector(0, -1000);
112        lisaaNappaimet();
113    }
114    void lisaaNakymatonTaso(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        taso.Position = paikka;
118        taso.Color = Color.Blue;
119        taso.IsVisible = false;
120        taso.Tag = "nakymaton";
121        Add(taso);
122    }
123    void lisaaTaso(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        taso.Position = paikka;
127        taso.Color = Color.White;
128        taso.Tag = "taso";
129        Add(taso);
130        taso.Image = pilviKuva;
131    }
132
133    void lisaaLiikkuvaTaso(Vector paikka, double leveys, double korkeus)
134    {
135        //PhysicsObject taso = PhysicsObject.CreateStaticObject(3*leveys, korkeus);
136        PhysicsObject taso = new PhysicsObject(3 * leveys, korkeus);
137        taso.Mass = 99999999999999999;
138        taso.CanRotate = false;
139        taso.Velocity = (new Vector(-100, 0));
140        taso.IgnoresGravity = true;
141        taso.Position = paikka;
142        taso.Color = Color.Blue;
143        Add(taso);
144        AddCollisionHandler(taso, KasitteleTasonTormays);
145        taso.Image = liikkuvatasoKuva;
146    }
147    void KasitteleTasonTormays(PhysicsObject taso, PhysicsObject kohde)
148    {
149        if (kohde.Tag.ToString() == "nakymaton" || kohde.Tag.ToString() == "taso")
150        {
151            if (taso.Velocity.X < 0)
152                taso.Velocity = (new Vector(100, 0));
153            else
154                taso.Velocity = (new Vector(-100, 0));
155        }
156   
157    }
158    void lisaaTahti(Vector paikka, double leveys, double korkeus)
159    {
160        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys/2, korkeus/2);
161        tahti.IgnoresCollisionResponse = true;
162        tahti.Position = paikka;
163        tahti.Image = kolikkoKuva;
164        tahti.Tag = "tahti";
165        Add(tahti);
166       
167    }
168
169    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
170    {
171        pelaaja1 = new PlatformCharacter(leveys, korkeus);
172        pelaaja1.Position = paikka;
173        pelaaja1.Mass = 4.0;
174        pelaaja1.Image = pelaajanKuva;
175        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
176        Add(pelaaja1);
177    }
178
179    void lisaaNappaimet()
180    {
181        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
182        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
183
184        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
185        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
186        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
187
188        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
189
190        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
191        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
192        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
193    }
194
195    void liikuta(PlatformCharacter hahmo, double nopeus)
196    {
197        hahmo.Walk(nopeus);
198    }
199
200    void hyppaa(PlatformCharacter hahmo, double nopeus)
201    {
202        hahmo.Jump(nopeus);
203    }
204
205    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
206    {
207        if (kohde.Tag.ToString() == "tahti")
208        {
209            pisteLaskuri.Value++;
210            kohde.Destroy();
211        }
212        if (kohde == KentanAlaReuna)
213        {
214            hahmo.Destroy();
215            kohde.Destroy();
216            pelaajanElamat--;
217            Begin();
218        }
219        if (pelaajanElamat == 0)
220        {
221            Exit();
222        }
223        if (kohde.Tag.ToString() == "maali")
224        {
225            SeuraavaKentta(++kenttaNro);           
226        }
227     
228    }
229
230    void SeuraavaKentta(int kenttaNro)
231    {
232        ClearAll();
233
234        if (kenttaNro == 1) luoKentta("kentta1");
235        else if (kenttaNro == 2) luoKentta("kentta2");
236        else if (kenttaNro == 3) luoKentta("kentta3");
237     }
238    void luoMaali(Vector paikka, double leveys, double korkeus)
239    {
240        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
241        maali.Position = paikka;
242        maali.Color = Color.Black;
243        maali.Tag = "maali";
244        Add(maali);
245        maali.Image = maaliKuva;
246    }
247
248
249    void LuoLaskuri()
250    {
251        pisteLaskuri = new IntMeter(0);
252
253        Label pisteNaytto = new Label();
254        pisteNaytto.X = Screen.Left + 100;
255        pisteNaytto.Y = Screen.Top - 100;
256        pisteNaytto.TextColor = Color.Blue;
257
258        pisteNaytto.BindTo(pisteLaskuri);
259        Add(pisteNaytto);
260
261        Label pisteTeksti = new Label("Kolikoita: ");
262        pisteTeksti.X = Screen.Left + 50;
263        pisteTeksti.Y = Screen.Top - 100;
264        pisteTeksti.TextColor = Color.Blue;
265        Add(pisteTeksti);
266
267    }
268    void laskuriYlarajassa(int arvo)
269    {
270        MessageDisplay.TextColor = Color.White;
271        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
272    }
273    void LuoElamaLaskuri()
274    {
275        elamaLaskuri = new IntMeter(pelaajanElamat);
276
277        Label pisteNaytto = new Label();
278        pisteNaytto.X = Screen.Left + 100;
279        pisteNaytto.Y = Screen.Top - 50;
280        pisteNaytto.TextColor = Color.Blue;
281
282        pisteNaytto.BindTo(elamaLaskuri);
283        Add(pisteNaytto);
284
285        Label pisteTeksti = new Label("Elämiä: ");
286        pisteTeksti.X = Screen.Left + 50;
287        pisteTeksti.Y = Screen.Top - 50;
288        pisteTeksti.TextColor = Color.Blue;
289        Add(pisteTeksti);
290    }   
291
292 } 
293   
294   
Note: See TracBrowser for help on using the repository browser.