source: 2017/31/JohannesL/dodh2/dodh2/dodh2/dodh2.cs @ 9408

Revision 9408, 10.3 KB checked in by npo17_87, 2 years ago (diff)

snoopit

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class dodh2 : PhysicsGame
10{
11    const double nopeus = 100;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 10;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("snoopgas");
18    Image tahtiKuva = LoadImage("monkas");
19    Image vihaajakuva = LoadImage("vihaa");
20    Image rajahdyskuva = LoadImage("vihaa");
21    Image vihaaja2kuva = LoadImage("toinenmonk");
22    Image rajahdys2kuva = LoadImage("toinenmonk");
23    Image vihaaja3kuva = LoadImage("snoopgas");
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26
27    bool saakoRajahtaa = true;
28    bool saako2Rajahtaa = true;
29    bool saakospawnaa = true;
30   
31    public override void Begin()
32    {
33        Gravity = new Vector(0.0, -1400.0);
34
35       
36        LuoKentta();
37        LisaaNappaimet();
38        LuoAikaLaskuri();
39        vihaaja();
40        vihaaja2();
41        vihaaja3();
42        LuoPistelaskuri();
43        valikko();
44
45
46
47
48
49
50
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 1.5;
53        Camera.StayInLevel = true;
54 
55    }
56
57    void LuoKentta()
58    {
59        TileMap kentta = TileMap.FromLevelAsset("kentta1");
60        kentta.SetTileMethod('#', LisaaTaso);
61        kentta.SetTileMethod('*', LisaaTahti);
62        kentta.SetTileMethod('N', LisaaPelaaja);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.Wheat, Color.ForestGreen);
66    }
67
68    void LisaaTaso (Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.Green;
73        Add(taso);
74    }
75
76    void LisaaTahti(Vector paikka, double leveys, double korkeus)
77    {
78        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        tahti.IgnoresCollisionResponse = true;
80        tahti.Position = paikka;
81        tahti.Image = tahtiKuva;
82        tahti.Tag = "tahti";
83
84
85
86
87        Add(tahti);
88    }
89
90    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
91    {
92        pelaaja1 = new PlatformCharacter(leveys, korkeus);
93        pelaaja1.Position = paikka;
94        pelaaja1.Mass = 4.0;
95        pelaaja1.Image = pelaajanKuva;
96        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
97        pelaaja1.Weapon = new AssaultRifle(10, 10);
98        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
99        Add(pelaaja1);
100    }
101
102    void LisaaNappaimet()
103    {
104        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
105        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
106
107        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
108        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
109        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
110
111        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
112
113        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
114        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
115        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
116        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
117
118        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
119    }
120
121    void Liikuta(PlatformCharacter hahmo, double nopeus)
122    {
123        pelaaja1.Walk(nopeus);
124    }
125
126    void Hyppaa(PlatformCharacter hahmo, double nopeus)
127    {
128        pelaaja1.Jump(nopeus);
129    }
130
131    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
132    {
133        maaliAani.Play();
134        MessageDisplay.Add("Kerätty!");
135        tahti.Destroy();
136        pisteLaskuri.AddValue(1);
137       
138
139    }
140    void LuoAikaLaskuri()
141    {
142        Timer aikaLaskuri = new Timer();
143        aikaLaskuri.Start();
144
145        Label aikaNaytto = new Label();
146        aikaNaytto.TextColor = Color.Black;
147        aikaNaytto.DecimalPlaces = 1;
148        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
149        Add(aikaNaytto);
150        aikaNaytto.X = 700.0;
151        aikaNaytto.Y = 450.0;
152    }
153    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
154    {
155        //ammus.Destroy();
156    }
157    void AmmuAseella(PlatformCharacter pelaaja)
158    {
159        PhysicsObject ammus = pelaaja.Weapon.Shoot();
160
161        if (ammus != null)
162        {
163            ammus.Size *= 0.5;
164            //ammus.Image =()
165            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
166
167        }
168
169
170    }
171    void vihaaja()
172    {
173        PhysicsObject vihaajaa = new PhysicsObject(20, 20);
174        vihaajaa.Shape = Shape.Rectangle;
175        vihaajaa.Mass = 10.0;
176        vihaajaa.Image = vihaajakuva;
177       
178        Add(vihaajaa);
179        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
180
181        seuraajanAivot.Speed = 100;                 // Millä nopeudella kohdetta seurataan
182        seuraajanAivot.DistanceFar = 600;           // Etäisyys jolla aletaan seurata kohdetta
183        seuraajanAivot.DistanceClose = 50;         // Etäisyys jolloin ollaan lähellä kohdetta
184        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
185        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
186       
187        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
188        seuraajanAivot.TargetClose += mitaTapahtuuKunOllaanLahella;
189        vihaajaa.Brain = seuraajanAivot;
190    }
191
192    void mitaTapahtuuKunOllaanLahella()
193    {
194        if (!saakoRajahtaa) return;
195        saakoRajahtaa = false;
196        Timer.SingleShot(5, () => { saakoRajahtaa = true; });
197
198        Explosion rajahdys = new Explosion(50);
199        rajahdys.Image = rajahdyskuva;   
200        rajahdys.Position = pelaaja1.Position;
201        rajahdys.Speed = 50;
202        rajahdys.Force = 5000;
203        Add(rajahdys);
204       
205    }
206    void vihaaja2()
207    {
208        PhysicsObject vihaaja2 = new PhysicsObject(5, 5);
209        vihaaja2.X = -100;
210        vihaaja2.Y = 100;
211        vihaaja2.Shape = Shape.Rectangle;
212        vihaaja2.Mass = 10.0;
213        vihaaja2.Image = vihaaja2kuva;
214
215        Add(vihaaja2);
216        FollowerBrain seuraajan2Aivot = new FollowerBrain(pelaaja1);
217
218        seuraajan2Aivot.Speed = 30;                 // Millä nopeudella kohdetta seurataan
219        seuraajan2Aivot.DistanceFar = 1200;           // Etäisyys jolla aletaan seurata kohdetta
220        seuraajan2Aivot.DistanceClose = 150;         // Etäisyys jolloin ollaan lähellä kohdetta
221        seuraajan2Aivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
222                                                     //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
223
224        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
225        seuraajan2Aivot.TargetClose += mitaKunOllaanLahella;
226        vihaaja2.Brain = seuraajan2Aivot;
227    }
228
229    void mitaKunOllaanLahella()
230    {
231        if (!saako2Rajahtaa) return;
232        saako2Rajahtaa = false;
233        Timer.SingleShot(15,() => { saako2Rajahtaa = true; });
234
235        Explosion rajahdys = new Explosion(150);
236        rajahdys.Image = rajahdys2kuva;
237        rajahdys.Position = pelaaja1.Position;
238        rajahdys.Speed = 5;
239        rajahdys.Force = 5000;
240        Add(rajahdys);
241
242    }
243    void valikko()
244    {
245        ClearAll();
246
247        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
248"Aloita peli", "Lopeta");
249        Add(alkuValikko);
250
251
252        alkuValikko.AddItemHandler(0, alotapeli);
253        alkuValikko.AddItemHandler(1, Exit);
254        alkuValikko.Color = Color.ForestGreen;
255       
256    }
257    void alotapeli()
258    {
259        LuoKentta();
260        LisaaNappaimet();
261        LuoAikaLaskuri();
262        vihaaja();
263        vihaaja2();
264        vihaaja3();
265        LuoPistelaskuri();
266        Gravity = new Vector(0.0, -1400.0);
267
268
269        Camera.Follow(pelaaja1);
270        Camera.ZoomFactor = 1.5;
271        Camera.StayInLevel = true;
272
273
274    }
275    void vihaaja3()
276    {
277        PhysicsObject vihaaja3 = new PhysicsObject(20, 20); 
278        vihaaja3.X = -101;
279        vihaaja3.Y = 101;
280        vihaaja3.Shape = Shape.Diamond;
281        vihaaja3.Mass = 10.0;
282        vihaaja3.Image = vihaaja3kuva;
283
284        Add(vihaaja3);
285        FollowerBrain seuraajan3Aivot = new FollowerBrain(pelaaja1);
286
287        seuraajan3Aivot.Speed = 140;           // Millä nopeudella kohdetta seurataan
288        seuraajan3Aivot.DistanceFar = 1200;           // Etäisyys jolla aletaan seurata kohdetta
289        seuraajan3Aivot.DistanceClose = 50;         // Etäisyys jolloin ollaan lähellä kohdetta
290        seuraajan3Aivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
291                                                     //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
292
293        // Tapahtuma, joka tapahtuu kun ollaan lähellä kohdetta
294        seuraajan3Aivot.TargetClose += mita;
295        vihaaja3.Brain = seuraajan3Aivot;
296    }
297    void mita()
298    {
299
300    /// if (!saakospawnaa) return;
301
302    /// saakospawnaa = false;
303
304   ///  Timer.SingleShot(1, () => { saakospawnaa = true; });
305       
306        vihaaja3();
307    }
308
309    IntMeter pisteLaskuri;
310    void LuoPistelaskuri()
311    {
312        pisteLaskuri = new IntMeter(0, 0, 30);
313        pisteLaskuri.UpperLimit += () =>
314        {
315            valikko();
316        };
317
318        Label pisteNaytto = new Label();
319        pisteNaytto.X = Screen.Left + 100;
320        pisteNaytto.Y = Screen.Top - 100;
321        pisteNaytto.TextColor = Color.Black;
322        pisteNaytto.Color = Color.White;
323
324
325        pisteNaytto.BindTo(pisteLaskuri);
326        IntMeter laskuri = new IntMeter(0);
327        pisteNaytto.Title = "pisteitä: ";
328        Add(pisteNaytto);
329    }
330}
Note: See TracBrowser for help on using the repository browser.