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

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