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

Revision 9386, 9.6 KB checked in by npo17_87, 23 months ago (diff)

snoop vihollinen

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