source: 2010/30/nilaiton/Tasohyppely1/Peli.cs @ 1408

Revision 1408, 10.5 KB checked in by nilaiton, 11 years ago (diff)

asfasfasf

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using Jypeli.Effects;
6
7
8class Tasohyppely : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyVoima = 4000;
12    int kenttaLaskuri = 1;
13    const int ruudunLeveys = 50;
14    const int ruudunKorkeus = 50;
15    PlatformCharacter pelaaja1;
16    PhysicsObject maali;
17    IntMeter pisteLaskuri;
18    GameObject[] alkupisteet = new GameObject[10];
19    GameObject[] loppupisteet = new GameObject[10];
20
21    ExplosionSystem rajahdys;
22
23
24    protected override void Begin()
25    {
26        rajahdys = new ExplosionSystem(LoadImage("tahti"), 300);
27        Add(rajahdys);
28
29        Gravity = new Vector(0, -1000);
30        //LuoMaali();
31        luoKentta1();
32        lisaaNappaimet();
33
34        Camera.Follow(pelaaja1);
35        Camera.ZoomFactor = 2.0;
36        Camera.StayInLevel = true;
37    }
38
39    void luoKentta1()
40    {   
41        MessageDisplay.TextColor = Color.White;
42        MessageDisplay.X = Screen.Left + 1000;
43        MessageDisplay.Y = Screen.Top -100;
44       
45       
46        MessageDisplay.Add("Taso 1");
47       
48       
49       
50
51        LuoLaskuri();
52        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
53        Level.Background.CreateStars();
54
55        TileMap ruudut = TileMap.FromFile("kentta1.txt");
56
57        ruudut['-'] = lisaaTaso;
58        ruudut['M'] = LuoMaaliTileMap;
59        ruudut['X'] = lisaaPelaajatTileMap;
60        //ruudut['V'] = LuoVihollinen;
61        ruudut['0'] = LuoReitti0;
62        ruudut['1'] = LuoReitti1;
63        ruudut['2'] = LuoReitti2;
64        ruudut['3'] = LuoReitti3;
65        ruudut['4'] = LuoReitti4;
66        Gravity = new Vector(0, -1000);
67
68        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
69
70        for (int i = 0; i < 10; i++)
71        {
72            if (alkupisteet[i] != null)
73            {
74
75                PhysicsObject vihollinen = LuoVihollinen(i);
76                Add(vihollinen);
77            }
78        }
79    }
80    void luoKentta2()
81    {
82        ClearAll();
83        LuoLaskuri();
84        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
85        Level.Background.CreateStars();
86
87        TileMap ruudut = TileMap.FromFile("kentta2.txt");
88
89        ruudut['-'] = lisaaTaso;
90        ruudut['M'] = LuoMaaliTileMap;
91        ruudut['X'] = lisaaPelaajatTileMap;
92        //ruudut['V'] = LuoVihollinen;
93        ruudut['0'] = LuoReitti0;
94        ruudut['1'] = LuoReitti1;
95        ruudut['2'] = LuoReitti2;
96        ruudut['3'] = LuoReitti3;
97        ruudut['4'] = LuoReitti4;
98        Gravity = new Vector(0, -1000);
99
100        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
101       
102        for ( int i = 0; i < 10; i++)
103        {
104            if (alkupisteet[i] != null)
105            {
106
107                PhysicsObject vihollinen = LuoVihollinen(i);
108                Add(vihollinen);
109            }
110        }
111
112        Camera.Follow(pelaaja1);
113        Camera.ZoomFactor = 2.0;
114        Camera.StayInLevel = true;
115        lisaaNappaimet();
116       
117    }
118    void luoKentta3()
119    {
120        ClearAll();
121
122
123        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
124        Level.Background.CreateStars();
125
126
127
128        Gravity = new Vector(0, -1000);
129        Camera.Follow(pelaaja1);
130        Camera.ZoomFactor = 2.0;
131        Camera.StayInLevel = true;
132        lisaaNappaimet();
133    }
134
135    void luoKentta4()
136    {
137
138    }
139
140    void luoKentta5()
141    {
142    }
143
144    void lisaaTasoPaikkaan(double x, double y)
145    {
146        PhysicsObject taso = PhysicsObject.CreateStaticObject(200, 18);
147        taso.Color = Color.White;
148        taso.X = x;
149        taso.Y = y;
150        Add(taso);
151    }
152
153    PhysicsObject lisaaTaso()
154    {
155        PhysicsObject taso = PhysicsObject.CreateStaticObject(200, 18);
156        taso.Color = Color.White;
157
158        return taso;
159    }
160
161
162
163
164    //void lisaaPelaajat()
165    //{
166    //    pelaaja1 = new PlatformCharacter(40, 40);
167    //    pelaaja1.Mass = 4.0;
168    //    pelaaja1.Image = LoadImage("tahti");
169    //    pelaaja1.X = 0;
170    //    pelaaja1.Y = Level.Bottom + 100;
171    //    LaserGun laserPyssy = new LaserGun(20, 5);
172    //    //laserPyssy.LaserCollision = LaserSadeOsuu;
173    //    pelaaja1.Weapon = new LaserGun(0, 0);
174    //    Add(pelaaja1);
175    //    //laserPyssy.Ammo.Value = 100;
176    //    laserPyssy.IsVisible = false;
177    //}
178
179    void vaihdaKentta(int kenttaLaskuri)
180    {
181        if (kenttaLaskuri == 1)
182        {
183            luoKentta1();
184        }
185        if (kenttaLaskuri == 2)
186        {
187            luoKentta2();
188        }
189        if (kenttaLaskuri == 3)
190        {
191            luoKentta3();
192        }
193
194    }
195
196    void lisaaNappaimet()
197    {
198        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
199        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
200
201        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
202        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
203        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
204        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu");
205
206        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
207
208        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
209        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
210        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
211    }
212
213    void liikuta(PlatformCharacter hahmo, double nopeus)
214    {
215        hahmo.Walk(nopeus);
216    }
217
218    void hyppaa(PlatformCharacter hahmo, double voima)
219    {
220        hahmo.Jump(voima);
221    }
222    void KasittelePelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
223    {
224        if (kohde.Tag.ToString() == "maali1")
225        {
226            kenttaLaskuri++;
227            vaihdaKentta(kenttaLaskuri);
228
229        }
230        if (kohde.Tag.ToString() == "maali2")
231        {
232            kenttaLaskuri++;
233            vaihdaKentta(kenttaLaskuri);
234        }
235
236        if (kohde.Tag.ToString() == "vihollinen")
237        {
238            rajahdys.MinScale = 0.01;
239            rajahdys.MaxScale = 0.4;
240            rajahdys.MinVelocity = 10;
241            rajahdys.MaxVelocity = 200;
242            rajahdys.MinLifetime = 0.1;
243            rajahdys.MaxLifetime = 1.5;
244
245            rajahdys.AddEffect(pelaaja.X, pelaaja.Y, 50);
246            pelaaja.Destroy();
247
248
249
250        }
251    }
252
253     void KasitteleAmpuminen(PhysicsObject ammus, PhysicsObject kohde)
254     {
255        if(kohde.Tag.ToString() == "vihollinen")
256        {
257            Explosion rajahdys2 = new Explosion(25);
258            rajahdys2.Position = kohde.Position;
259            rajahdys2.Speed = 200.0;
260            rajahdys2.Force = 0;
261            rajahdys2.ShockwaveColor = Color.Lime;
262
263
264            Add(rajahdys2);
265            kohde.Destroy();
266
267        }
268    }
269    void LuoMaali()
270    {
271        maali = PhysicsObject.CreateStaticObject(75.0, 120.0);
272        maali.X = 150.0;
273        maali.Y = 200.0;
274        maali.Shape = Shapes.Rectangle;
275        maali.Color = Color.Yellow;
276        maali.Tag = "maali1";
277        Add(maali);
278
279    }
280    PhysicsObject lisaaPelaajatTileMap()
281    {
282        pelaaja1 = new PlatformCharacter(40, 40);
283        pelaaja1.Mass = 4.0;
284        pelaaja1.Image = LoadImage("tahti");
285        pelaaja1.X = 0;
286        pelaaja1.Y = Level.Bottom + 100;
287        LaserGun laserPyssy = new LaserGun(20, 5);
288        pelaaja1.Weapon = new LaserGun(0, 0);
289        Add(pelaaja1);
290        laserPyssy.IsVisible = false;
291        AddCollisionHandler(pelaaja1, KasittelePelaajanTormays);
292
293        return pelaaja1;
294
295    }
296    PhysicsObject LuoMaaliTileMap()
297    {
298        maali = PhysicsObject.CreateStaticObject(75.0, 100.0);
299        maali.X = 150.0;
300        maali.Y = 200.0;
301        maali.Shape = Shapes.Rectangle;
302        maali.Color = Color.Yellow;
303        maali.Tag = "maali2";
304        return maali;
305    }
306
307    PhysicsObject LuoVihollinen(int reitti)
308    {
309        PhysicsObject vihollinen = new PhysicsObject(50, 50);
310        vihollinen.Shape = Shapes.Circle;
311        vihollinen.Color = Color.DarkMagenta;
312        vihollinen.Mass = 4.0;
313        vihollinen.Tag = "vihollinen";
314        PathFollowerBrain aivo = new PathFollowerBrain();
315        //vihollinen.IgnoresCollisionResponse = true;
316        vihollinen.IgnoresGravity = true;
317        vihollinen.Position = alkupisteet[reitti].Position;
318       
319        Vector[] pisteet = new Vector[]
320        {
321            alkupisteet[reitti].Position,
322            loppupisteet[reitti].Position,
323        };
324
325        aivo.Path = pisteet;
326        vihollinen.Brain = aivo;
327        aivo.Speed = 100.0;
328        return vihollinen;
329
330    }
331
332    void AmmuAseella()
333    {
334        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
335
336        if (ammus != null)
337        {
338            ammus.Size *= 4;
339            ammus.Color = Color.Lime;
340            AddCollisionHandler(ammus, KasitteleAmpuminen);
341            ammus.Tag = "ammus";           
342
343        }
344    }
345    GameObject LuoReittiPiste(int reitti)
346    {
347        GameObject piste = new GameObject(1, 1);
348        piste.IsVisible = false;
349        if (alkupisteet[reitti] == null)
350        {
351            alkupisteet[reitti] = piste;
352        }
353        else
354        {
355            loppupisteet[reitti] = piste;
356        }
357        return piste;
358
359    }
360
361    GameObject LuoReitti0()
362    {
363        return LuoReittiPiste(0);
364    }
365
366    GameObject LuoReitti1()
367    {
368        return LuoReittiPiste(1);
369    }
370    GameObject LuoReitti2()
371    {
372        return LuoReittiPiste(2);
373    }
374    GameObject LuoReitti3()
375    {
376        return LuoReittiPiste(3);
377    }
378    GameObject LuoReitti4()
379    {
380        return LuoReittiPiste(4);
381    }
382   
383
384    void LuoLaskuri()
385    {
386        pisteLaskuri = new IntMeter(0);
387
388        Label pisteNaytto = new Label();
389        pisteNaytto.X = Screen.Left + 100;
390        pisteNaytto.Y = Screen.Top - 100;
391        pisteNaytto.TextColor = Color.Red;
392
393        pisteNaytto.BindTo(pisteLaskuri);
394        Add(pisteNaytto);
395
396        Label pisteTeksti = new Label("Pisteitä: ");
397        pisteTeksti.X = Screen.Left + 50;
398        pisteTeksti.Y = Screen.Top - 100;
399        pisteTeksti.TextColor = Color.Red;
400        Add(pisteTeksti);
401    }
402
403
404}
405
Note: See TracBrowser for help on using the repository browser.