source: 2014/27/WilleK/Project_000/Project_000/Project_000/Project_000.cs @ 5400

Revision 5400, 14.4 KB checked in by wiaukota, 7 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
9class Vihu : PlatformCharacter
10{
11    private IntMeter elamaLaskuri = new IntMeter(3, 0, 3);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Vihu(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21public class Project_000 : PhysicsGame
22{
23    const double nopeus = 100;
24    const double hyppyNopeus = 400;
25    const int RUUDUN_KOKO = 40;
26
27    PlatformCharacter pelaaja1;
28    PlatformCharacter pelaaja2;
29
30    Image pelaajanKuva = LoadImage("Pelaaja1");
31    private Image[] PelaajanKavely = LoadImages("Pelaaja1-1", "Pelaaja1-2");
32    private Image[] PelaajaPaikallaan = LoadImages("Pelaaja1");
33    private Image[] PelaajaHyppää = LoadImages("Pelaaja1-3");
34    private Image[] VihunKävely = LoadImages("Vihu1-1", "Vihu1-2");
35    private Image[] VihuPaikallaan = LoadImages("Vihu1");
36
37    Image KolikkoKuva = LoadImage("Kolikko1");
38    Image ruohoKuva = LoadImage("Ruoho");
39    Image alkuvalikkoKuva  = LoadImage("Alkuvalikko");
40    Image pilviKuva = LoadImage("Pilvi");
41    Image klönttiKuva = LoadImage("Klöntti");
42    Image tausta1 = LoadImage("Tausta1");
43    Image roboKuva = LoadImage("Vihu1");
44    int kenttänumero = 1;
45    int maksimiKenttäNumero = 4;
46
47    SoundEffect maaliAani = LoadSoundEffect("maali");
48    SoundEffect hyppyÄäni = LoadSoundEffect("Jump6");
49    SoundEffect kolikkoÄäni = LoadSoundEffect("Pickup_Coin");
50    SoundEffect valitseÄäni = LoadSoundEffect("Blip_Select2");
51
52    public override void Begin()
53    {
54        SmoothTextures = false;
55        IsMouseVisible = true;
56        alkuvalikko();
57    }
58
59    void AloitaPeli()
60    {
61        ClearAll();
62        Gravity = new Vector(0, -1000);
63
64        LuoKentta();
65        LisaaNappaimet();
66        LuoPistelaskuri();
67        LuoKlönttiPistelaskuri();
68
69        Camera.Follow(pelaaja1);
70        Camera.ZoomFactor = 1.2;
71    }
72
73    void Seuraavakenttä()
74    {
75        kenttänumero++;
76        if (kenttänumero > maksimiKenttäNumero)
77        {
78            VoititPelin();
79            return;
80        }
81        AloitaPeli();
82    }
83
84    void PauseValikko()
85    {
86        MultiSelectWindow PauseValikko = new MultiSelectWindow("Pause Menu", "Resume", "Options", "Quit Current Level");
87        Add(PauseValikko);
88
89        PauseValikko.AddItemHandler(0, Continue);
90        PauseValikko.AddItemHandler(1, Continue);
91        PauseValikko.AddItemHandler(2, alkuvalikko);
92    }
93
94    void VoititPelin()
95    {
96        MultiSelectWindow VoititPelin = new MultiSelectWindow("You Won The Game", "To Title Screen", "Quit");
97        Add(VoititPelin);
98
99        VoititPelin.Image = alkuvalikkoKuva;
100
101        VoititPelin.AddItemHandler(0,Begin);
102        VoititPelin.AddItemHandler(1, ConfirmExit);
103    }
104
105    void KenttäValikko()
106    {
107        MultiSelectWindow KenttäValikko = new MultiSelectWindow("Level Select", "Level 1", "Level 2", "Back");
108        Add(KenttäValikko);
109
110        KenttäValikko.Image = alkuvalikkoKuva;
111
112        KenttäValikko.AddItemHandler(0, AloitaPeli);
113        KenttäValikko.AddItemHandler(2, alkuvalikko);
114    }
115
116    void alkuvalikko()
117    {
118        MultiSelectWindow alkuValikko = new MultiSelectWindow("The Adventure of Blusy","Start", "Options", "Quit");
119        Add(alkuValikko);
120
121        alkuValikko.Image= alkuvalikkoKuva;
122
123        alkuValikko.AddItemHandler(0, delegate { valitseÄäni.Play(); KenttäValikko(); });
124        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
125        alkuValikko.AddItemHandler(2, delegate { valitseÄäni.Play(); Exit(); });
126    }
127
128    void SeuraavaKenttäValikko()
129    {
130        MultiSelectWindow SeuraavaKenttäValikko = new MultiSelectWindow("Level Clear", "Next", "To Title Screen");
131        Add(SeuraavaKenttäValikko);
132
133        SeuraavaKenttäValikko.AddItemHandler(0, Seuraavakenttä);
134        SeuraavaKenttäValikko.AddItemHandler(1, alkuvalikko);
135    }
136
137    IntMeter pisteLaskuri;
138
139    void LuoPistelaskuri()
140    {
141        pisteLaskuri = new IntMeter(0);
142
143        Label pisteNaytto = new Label();
144        pisteNaytto.X = Screen.Left + 1150;
145        pisteNaytto.Y = Screen.Top - 100;
146        pisteNaytto.TextColor = Color.Black;
147        pisteNaytto.Title = "Coins";
148
149        pisteNaytto.BindTo(pisteLaskuri);
150        Add(pisteNaytto);
151    }
152
153    IntMeter pisteLaskuri1;
154
155    void LuoKlönttiPistelaskuri()
156    {
157        pisteLaskuri1 = new IntMeter(0);
158
159        Label pisteNaytto = new Label();
160        pisteNaytto.X = Screen.Left + 1000;
161        pisteNaytto.Y = Screen.Top - 100;
162        pisteNaytto.TextColor = Color.Black;
163        pisteNaytto.Title = "Slimes";
164
165        pisteNaytto.BindTo(pisteLaskuri1);
166        Add(pisteNaytto);
167    }
168
169    void LuoKentta()
170    {
171        if (kenttänumero > maksimiKenttäNumero)
172        {
173            return;
174        }
175        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta"+kenttänumero);
176        ruudut.SetTileMethod(Color.Blue, LisaaPelaaja);
177        ruudut.SetTileMethod(new Color(0,255,0), LisaaPelaaja2);
178        ruudut.SetTileMethod(Color.Black, LisaaTaso);
179        ruudut.SetTileMethod(Color.Yellow, LisaaKolikko);
180        ruudut.SetTileMethod(Color.FromHexCode("7F3300"), LisaaMulta);
181        ruudut.SetTileMethod(Color.White, LisaaPilvi);
182        ruudut.SetTileMethod(Color.FromHexCode("00FFFF"), LisaaKlöntti);
183        ruudut.SetTileMethod(Color.FromHexCode("B6FF00"), LisaaKuilu);
184        ruudut.SetTileMethod(Color.FromHexCode("FF5200"), LisaaMulta2);
185        ruudut.Optimize(Color.FromHexCode("7F3300"));
186        ruudut.SetTileMethod(Color.Red, lisaavihu);
187        ruudut.Execute(20, 20);
188
189        Level.CreateBorders();
190        Level.Background.Image = tausta1;
191        Level.Background.ScaleToLevelFull();
192    }
193
194    void HeitaKranaatti(PlatformCharacter pelaaja)
195    {
196        Grenade kranu = new Grenade(4.0);
197        pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
198    }
199
200    void LisaaKuilu(Vector paikka, double leveys, double korkeus)
201    {
202        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus/5.0);
203        taso.Position = paikka+new Vector(0, -korkeus*(2/5.0));
204        taso.IsVisible = false;
205        taso.Tag = "kuilu";
206        Add(taso);
207    }
208
209    void PelaajaKuoli(PhysicsObject pelaaja1, PhysicsObject kuilu)
210    {
211        MultiSelectWindow Pelaajakuoli1 = new MultiSelectWindow("Game Over", "Restart", "Quit");
212        Add(Pelaajakuoli1);
213
214        Pelaajakuoli1.AddItemHandler(0, AloitaPeli);
215        Pelaajakuoli1.AddItemHandler(1, alkuvalikko);
216    }
217
218    void LisaaTaso(Vector paikka, double leveys, double korkeus)
219    {
220        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
221        taso.Position = paikka;
222        taso.Image = ruohoKuva;
223        Add(taso);
224    }
225
226    void LisaaPilvi(Vector paikka, double leveys, double korkeus)
227    {
228        PhysicsObject pilvi = PhysicsObject.CreateStaticObject(leveys*3, korkeus);
229        pilvi.Position = paikka;
230        pilvi.Image = pilviKuva;
231        Add(pilvi);
232    }
233
234    void LisaaMulta(Vector paikka, double leveys, double korkeus)
235    {
236        PhysicsObject multa = PhysicsObject.CreateStaticObject(leveys, korkeus);
237        multa.Position = paikka;
238        multa.Color = Color.FromHexCode("7F3300");
239        Add(multa);
240    }
241
242    void LisaaMulta2(Vector paikka, double leveys, double korkeus)
243    {
244        GameObject multa = new GameObject(leveys, korkeus);
245        multa.Position = paikka;
246        multa.Color = Color.FromHexCode("7F3300");
247        Add(multa, 1);
248    }
249
250    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
251    {
252        PhysicsObject kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
253        kolikko.IgnoresCollisionResponse = true;
254        kolikko.Position = paikka;
255        kolikko.Image = KolikkoKuva;
256        kolikko.Tag = "Coin";
257        Add(kolikko);
258    }
259
260    //void LisaaSuper
261
262    void LisaaKlöntti(Vector paikka, double leveys, double korkeus)
263    {
264        PhysicsObject klöntti = PhysicsObject.CreateStaticObject(leveys, korkeus);
265        klöntti.IgnoresCollisionResponse = true;
266        klöntti.Position = paikka;
267        klöntti.Image = klönttiKuva;
268        klöntti.Tag = "Klöntti";
269        Add(klöntti);
270    }
271
272    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
273    {
274        pelaaja1 = new PlatformCharacter(15, 15);
275        pelaaja1.Position = paikka;
276        pelaaja1.Mass = 4.0;
277        pelaaja1.Image = pelaajanKuva;
278        AddCollisionHandler(pelaaja1, "Coin", TormaaTahteen);
279        AddCollisionHandler(pelaaja1, "Klöntti", TormaaKlönttiin);
280        AddCollisionHandler(pelaaja1, "kuilu", PelaajaKuoli);
281        pelaaja1.AnimWalk = new Animation(PelaajanKavely);
282        pelaaja1.AnimWalk.FPS = 5;
283        pelaaja1.AnimIdle = new Animation(PelaajaPaikallaan);
284        pelaaja1.AnimJump = new Animation(PelaajaHyppää);
285        Add(pelaaja1);
286        pelaaja1.Weapon = new AssaultRifle(10, 10);
287        pelaaja1.Weapon.InfiniteAmmo = true;
288        pelaaja1.Weapon.FireRate = 3;
289        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
290        pelaaja1.Weapon.IsVisible = false;
291    }
292
293    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
294    {
295        pelaaja2 = new PlatformCharacter(15, 15);
296        pelaaja2.Position = paikka;
297        pelaaja2.Mass = 4.0;
298        pelaaja2.Image = pelaajanKuva;
299        AddCollisionHandler(pelaaja2, "Coin", TormaaTahteen);
300        AddCollisionHandler(pelaaja2, "Klöntti", TormaaKlönttiin);
301        AddCollisionHandler(pelaaja2, "kuilu", PelaajaKuoli);
302        pelaaja2.AnimWalk = new Animation(PelaajanKavely);
303        pelaaja2.AnimWalk.FPS = 5;
304        pelaaja2.AnimIdle = new Animation(PelaajaPaikallaan);
305        pelaaja2.AnimJump = new Animation(PelaajaHyppää);
306        Add(pelaaja2);
307        pelaaja2.Weapon = new AssaultRifle(10, 10);
308        pelaaja2.Weapon.InfiniteAmmo = true;
309        pelaaja2.Weapon.FireRate = 3;
310        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
311        pelaaja2.Weapon.IsVisible = false;
312    }
313
314    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
315    {
316        ammus.Destroy();
317        if (kohde.Tag == "vihu")
318        {
319            (kohde as Vihu).ElamaLaskuri.Value--;
320        }
321    }
322
323
324    void AmmuAseella(PlatformCharacter pelaaja)
325    {
326        PhysicsObject ammus = pelaaja.Weapon.Shoot();
327
328        if (ammus != null)
329        {
330            ammus.Size *= 0.5;
331            //ammus.Image = ...
332            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
333        }
334    }
335
336    void lisaavihu(Vector paikka, double leveys, double korkeus)
337    {
338        Vihu robo = new Vihu(leveys, korkeus);
339        robo.Position = paikka;
340        robo.Mass = 4.0;
341        robo.Tag = "vihu";
342        Add(robo);
343
344        robo.AnimWalk = new Animation(VihunKävely);
345        robo.AnimIdle = new Animation(VihuPaikallaan);
346        robo.AnimWalk.FPS = 5;
347
348        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
349        tasoAivot.Speed = 40;
350        robo.Brain = tasoAivot;
351        tasoAivot.JumpSpeed = 500;
352        tasoAivot.TriesToJump = true;
353    }
354
355    void LisaaNappaimet()
356    {
357        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
358        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PauseValikko, "Pause");
359        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, null);
360        Keyboard.Listen(Key.X, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
361        Keyboard.Listen(Key.Z, ButtonState.Pressed, HeitaKranaatti, "Ammu", pelaaja1);
362        Keyboard.Listen(Key.C, ButtonState.Down, Jetpack, "Ammu", pelaaja1);
363
364        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
365        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
366        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
367
368        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
369
370        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
371        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
372        ControllerOne.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
373        ControllerOne.Listen(Button.B, ButtonState.Pressed, AmmuAseella, "Pelaaja hyppää", pelaaja1);
374        ControllerOne.Listen(Button.X, ButtonState.Pressed, HeitaKranaatti, "Pelaaja hyppää", pelaaja1);
375        ControllerOne.Listen(Button.A, ButtonState.Down, Jetpack, "Pelaaja hyppää", pelaaja1);
376
377        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
378        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
379        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
380        ControllerTwo.Listen(Button.B, ButtonState.Pressed, AmmuAseella, "Pelaaja hyppää", pelaaja2);
381        ControllerTwo.Listen(Button.X, ButtonState.Pressed, HeitaKranaatti, "Pelaaja hyppää", pelaaja2);
382        ControllerTwo.Listen(Button.A, ButtonState.Down, Jetpack, "Pelaaja hyppää", pelaaja2);
383
384
385        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
386    }
387
388    void Jetpack(PlatformCharacter hahmo)
389    {
390        hahmo.ForceJump(40);
391    }
392
393    void Liikuta(PlatformCharacter hahmo, double nopeus)
394    {
395        hahmo.Walk(nopeus);
396    }
397
398    void Hyppaa(PlatformCharacter hahmo, double nopeus)
399    {
400        hahmo.Jump(nopeus);
401        hyppyÄäni.Play();
402    }
403
404    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
405    {
406        kolikkoÄäni.Play();
407        tahti.Destroy();
408        pisteLaskuri.Value++;
409    }
410
411    void TormaaKlönttiin(PhysicsObject hahmo, PhysicsObject klöntti)
412    {
413        maaliAani.Play();
414        klöntti.Destroy();
415        pisteLaskuri1.Value++;
416
417        if(pisteLaskuri1.Value==3)
418        {
419            Seuraavakenttä();
420        }
421    }
422}
Note: See TracBrowser for help on using the repository browser.