source: 2010/31/alisa@ala-konni.fi/Stray/Peli.cs @ 1681

Revision 1681, 10.5 KB checked in by paaaanro, 10 years ago (diff)

Ei ollut kuin Content-kansio lähtenyt eteenpäin

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6
7class Tasohyppely : PhysicsGame
8{
9    const double nopeus = 200;
10    const double hyppyVoima = 4000;
11
12    PlatformCharacter pelaaja1;
13    IntMeter pisteet;
14    HighScoreList topLista;
15
16    Image[] kissaJuoksee = LoadImages("kissa1", "kissa1", "kissa2", "kissa2", "kissa3", "kissa3", "kissa4", "kissa4");
17
18    List<Label> valikonKohdat;
19
20    protected override void Begin()
21    {
22        Valikko();
23        topLista = HighScoreList.LoadOrCreate("topten.dat", 10);
24
25    }
26    void Aloitus()
27    {
28        Gravity = new Vector(0, -1000);
29
30        luoKentta();
31        lisaaNappaimet();
32        LisaaAlku();
33
34        //Camera.Follow(pelaaja1);
35        //Camera.ZoomFactor = 0.5;
36        //Camera.StayInLevel = true;
37        Camera.ZoomToLevel();
38        Alapalkki();
39    }
40
41    void luoKentta()
42    {
43        Level.CreateBorders();
44        Level.Background.Image = LoadImage("tausta");
45
46        lisaaPelaajat();
47        Laskuri();
48
49        Timer ajastin = new Timer();
50        ajastin.Interval = 2.5;
51        ajastin.Trigger += lisaaTaso;
52        ajastin.Start();
53
54
55        Timer kalaAjastin = new Timer();
56        ajastin.Interval = 2.5;
57        ajastin.Trigger += LuoKala;
58        ajastin.Start();
59
60
61
62
63    }
64
65    void lisaaTaso(Timer sender)
66    {
67        List<Vector> polku = new List<Vector>();
68        polku.Add(new Vector(0, 0));
69        polku.Add(new Vector(-3000, -200));
70
71        PathFollowerBrain polkuAivot = new PathFollowerBrain();
72        polkuAivot.Path = polku;
73        polkuAivot.Speed = 250;
74
75        PhysicsObject taso = PhysicsObject.CreateStaticObject(RandomGen.NextDouble(130, 400), RandomGen.NextDouble(400, 500));
76        int numero = RandomGen.NextInt(1, 2);
77        taso.Image = LoadImage("talo" + numero);
78        taso.X = Level.Right - 200;
79        taso.Y = RandomGen.NextDouble(-300, -200);
80        taso.Brain = polkuAivot;
81        Add(taso);
82
83        Timer tasoajastin = new Timer();
84        tasoajastin.Interval = 1.0;
85        tasoajastin.Trigger += tuhoaTaso;
86        tasoajastin.Tag = taso;
87        tasoajastin.Start();
88
89    }
90
91    void tuhoaTaso(Timer lahettaja)
92    {
93        PhysicsObject tuhottavaTaso = lahettaja.Tag as PhysicsObject;
94
95        if (tuhottavaTaso != null)
96        {
97            if (tuhottavaTaso.Right < Level.Left)
98            {
99                tuhottavaTaso.Destroy();
100                return;
101            }
102        }
103    }
104
105    void lisaaPelaajat()
106    {
107        pelaaja1 = new PlatformCharacter(100, 40);
108        pelaaja1.Mass = 4.0;
109        pelaaja1.Image = LoadImage("kissa1");
110        pelaaja1.X = Level.Left + 120;
111        pelaaja1.Y = 300;
112        //pelaaja1.RightWalkingAnimation = new Animation(kissaJuoksee);
113        pelaaja1.Animation = new Animation(kissaJuoksee);
114        pelaaja1.Animation.Start();
115
116        Add(pelaaja1);
117
118        Timer ajastin = new Timer();
119        ajastin.Interval = 0.001;
120        ajastin.Trigger += kissaPaikalleen;
121        ajastin.Start();
122
123
124    }
125
126    void kissaPaikalleen(Timer sender)
127    {
128        pelaaja1.X = Level.Left + 120;
129
130    }
131
132
133    void lisaaNappaimet()
134    {
135        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
136        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
137
138        //Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
139        //Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
140        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
141        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
142
143
144        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
145    }
146
147    void liikuta(PlatformCharacter hahmo, double nopeus)
148    {
149        hahmo.Walk(nopeus);
150    }
151
152    void hyppaa(PlatformCharacter hahmo, double voima)
153    {
154        //hahmo.Jump(voima);
155        hahmo.Hit(new Vector(0, 3000));
156    }
157
158    void LisaaAlku()
159    {
160        List<Vector> polku = new List<Vector>();
161        polku.Add(new Vector(0, 0));
162        polku.Add(new Vector(-3000, -200));
163
164        PathFollowerBrain polkuAivot = new PathFollowerBrain();
165        polkuAivot.Path = polku;
166        polkuAivot.Speed = 250;
167
168        PhysicsObject alku = PhysicsObject.CreateStaticObject(1300, 440);
169        alku.X = Level.Left + 400;
170        alku.Y = -200;
171        alku.Image = LoadImage("alkutalo");
172        alku.Brain = polkuAivot;
173        Add(alku);
174
175        Timer alkutasoajastin = new Timer();
176        alkutasoajastin.Interval = 1.0;
177        alkutasoajastin.Trigger += tuhoaAlkutaso;
178        alkutasoajastin.Tag = alku;
179        alkutasoajastin.Start();
180
181    }
182
183    void tuhoaAlkutaso(Timer lahettaja)
184    {
185        PhysicsObject tuhottavaTaso = lahettaja.Tag as PhysicsObject;
186
187        if (tuhottavaTaso != null)
188        {
189            if (tuhottavaTaso.Right < Level.Left)
190            {
191                tuhottavaTaso.Destroy();
192                return;
193            }
194        }
195    }
196
197    void LuoKala(Timer lahettaa)
198    {
199        List<Vector> polku = new List<Vector>();
200        polku.Add(new Vector(0, 0));
201        polku.Add(new Vector(-3000, -200));
202
203        PathFollowerBrain polkuAivot = new PathFollowerBrain();
204        polkuAivot.Path = polku;
205        polkuAivot.Speed = 250;
206
207        PhysicsObject kala = new PhysicsObject(30, 30);
208        kala.Image = LoadImage("fisu");
209        kala.IgnoresGravity = true;
210        kala.X = Level.Right - 200;
211        kala.Y = RandomGen.NextDouble(50, 200);
212        kala.Brain = polkuAivot;
213        Add(kala);
214
215        AddCollisionHandler(kala, KasitteleKalanTormays);
216
217        Timer fisuajastin = new Timer();
218        fisuajastin.Interval = 0.5;
219        fisuajastin.Trigger += tuhoaFisu;
220        fisuajastin.Tag = kala;
221        fisuajastin.Start();
222
223
224    }
225
226    void tuhoaFisu(Timer lahettaja)
227    {
228        PhysicsObject tuhottavaFisu = lahettaja.Tag as PhysicsObject;
229
230        if (tuhottavaFisu != null)
231        {
232            if (tuhottavaFisu.Left < Level.Left)
233            {
234                tuhottavaFisu.Destroy();
235                return;
236            }
237        }
238    }
239
240
241    void Laskuri()
242    {
243        pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
244
245
246    }
247
248    IntMeter LuoPisteLaskuri(double x, double y)
249    {
250        IntMeter laskuri = new IntMeter(0);
251        Label naytto = new Label();
252        naytto.BindTo(laskuri);
253        naytto.X = x;
254        naytto.Y = y;
255        naytto.TextColor = Color.White;
256        Add(naytto);
257        return laskuri;
258    }
259
260    void KasitteleKalanTormays(PhysicsObject kala, PhysicsObject kohde)
261    {
262        if (kohde == pelaaja1)
263        {
264            pisteet.Value = pisteet.Value + 10;
265            kala.Destroy();
266
267        }
268
269    }
270
271    void Valikko()
272    {
273        ClearAll();
274
275
276            valikonKohdat = new List<Label>();
277
278            Label kohta1 = new Label("Start Game");
279            kohta1.Position = new Vector(0, -230);
280            kohta1.TextColor = Color.Black;
281            valikonKohdat.Add(kohta1);
282
283            Label kohta2 = new Label("Lopeta");
284            kohta2.Position = new Vector(0, -320);
285            kohta2.TextColor = Color.Black;
286            valikonKohdat.Add(kohta2);
287
288
289            foreach (Label valikonKohta in valikonKohdat)
290            {
291                Add(valikonKohta);
292            }
293
294            Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
295            Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
296            Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaPeli, null);
297
298           
299            Mouse.IsCursorVisible = true;
300            Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
301            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
302
303            Level.Background.Image = LoadImage("valikko");
304
305            Camera.ZoomToLevel();
306
307            MediaPlayer.Play("musaa-1");
308            MediaPlayer.IsRepeating = true;
309
310    }
311
312    void ValikossaLiikkuminen(AnalogState hiirenTila)
313    {
314        foreach (Label kohta in valikonKohdat)
315        {
316            if (Mouse.IsCursorOn(kohta))
317            {
318                kohta.TextColor = Color.DarkOrange;
319            }
320            else
321            {
322                kohta.TextColor = Color.Black;
323            }
324
325        }
326    }
327
328
329    void AloitaPeli()
330    {
331        ClearAll();
332        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
333        MediaPlayer.Play("musaa2");
334        MediaPlayer.IsRepeating = true;
335        Aloitus();
336    }
337
338    void Lopeta()
339    {
340        Exit();
341    }
342
343    void Alapalkki()
344    {
345        PhysicsObject alapalkki = new PhysicsObject(600, 50);
346        alapalkki.Position = new Vector(-300, -400);
347        alapalkki.IgnoresPhysicsLogics = true;
348        alapalkki.IgnoresCollisionResponse = true;
349        Add(alapalkki);
350        alapalkki.IsVisible = false;
351        AddCollisionHandler(alapalkki, KasitteleGameOver);
352
353    }
354
355    void KasitteleGameOver(PhysicsObject alapalkki, PhysicsObject kohde)
356    {
357        if (kohde == pelaaja1)
358        {
359            LopetaPeli();
360       
361        }
362
363    }
364
365
366
367    void LopetaPeli()
368    {
369        ClearAll();
370        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
371
372        valikonKohdat = new List<Label>();
373
374        Label kohta3 = new Label("Try Again");
375        kohta3.Position = new Vector(300, 100);
376        kohta3.TextColor = Color.Black;
377        valikonKohdat.Add(kohta3);
378
379        Label kohta4 = new Label("Main Menu");
380        kohta4.Position = new Vector(-300, 100);
381        kohta4.TextColor = Color.Black;
382        valikonKohdat.Add(kohta4);
383
384        foreach (Label valikonKohta in valikonKohdat)
385        {
386            Add(valikonKohta);
387        }
388
389        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
390        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Valikko, null);
391        Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaPeli, null);
392
393        Mouse.IsCursorVisible = true;
394        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
395
396        topLista.Show(pisteet.Value);
397
398        Level.Background.Image = LoadImage("gameover");
399
400    }
401
402
403}
Note: See TracBrowser for help on using the repository browser.