source: 2015/27/SamuliS/JANOISTENSANKARI/JANOISTENSANKARI.cs @ 7136

Revision 6744, 8.9 KB checked in by sasilvon, 4 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
9public class JANOISTENSANKARI : PhysicsGame
10{
11    const double nopeus = 250;
12    const double hyppyNopeus = 700;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("ValmisÄijä");
18    Image MehuKuva = LoadImage("Mehu");
19    Image pahiksenKuva = LoadImage("Sipsi valmis");
20    Image tausta = LoadImage("taustakuva");
21    Image platform = LoadImage("Tekstuuri4");
22    Image platform2 = LoadImage("tekstuuri5");
23    Image Piikit = LoadImage("piikki");
24    Image taustakuva = LoadImage("valikkokuva");
25    Image platform3 = LoadImage("kulmapala");
26
27    SoundEffect maaliAani = LoadSoundEffect("mahd");
28    SoundEffect taustamusa = LoadSoundEffect("Call To Adventure");
29    SoundEffect kuolemisenAani = LoadSoundEffect("Kuolema");
30    SoundEffect hyppy = LoadSoundEffect("hyppy");
31
32
33    public override void Begin()
34    {
35       
36        alkuValikko();
37       
38    }
39
40    void LuoKentta()
41    {
42        pelaaja1 = new PlatformCharacter(1, 1);
43       
44        TileMap kentta = TileMap.FromLevelAsset("kentta1");
45        kentta.SetTileMethod('#', LisaaTaso);
46        kentta.SetTileMethod('&', LisaaTaso2);
47        kentta.SetTileMethod('*', LisaaMehu);
48        kentta.SetTileMethod('N', LisaaPelaaja);             
49        kentta.SetTileMethod('V', lisaavihollinen);
50        kentta.SetTileMethod('Y', LisaaPiikit);
51        kentta.SetTileMethod('R', LisaaKulma);
52
53        kentta.SetTileMethod('F', LisaaNakymatonTaso);
54        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
55        Level.CreateBorders();
56        Level.Background.Image = tausta;
57        Level.Background.FitToLevel();
58
59
60       
61
62    }
63
64    void LisaaTaso(Vector paikka, double leveys, double korkeus)
65    {
66        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        taso.Position = paikka;
68        taso.Image = platform;
69        Add(taso);
70    }
71
72    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
73    {
74        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
75        taso.Position = paikka;
76        taso.Image = platform2;
77        Add(taso);
78
79    }
80
81    void LisaaMehu(Vector paikka, double leveys, double korkeus)
82    {
83        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
84        tahti.IgnoresCollisionResponse = true;
85        tahti.Position = paikka;
86        tahti.Image = MehuKuva;
87        tahti.Tag = "mehu";
88        Add(tahti);
89    }
90
91    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
92    {
93        pelaaja1 = new PlatformCharacter(leveys, korkeus);
94        pelaaja1.Position = paikka;
95        pelaaja1.Mass = 4.0;
96        pelaaja1.Image = pelaajanKuva;
97        pelaaja1.Size = pelaaja1.Size * 2.3;
98        AddCollisionHandler(pelaaja1, "mehu", TormaaTahteen);
99        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
100        AddCollisionHandler(pelaaja1, "piikit", TormaaPiikkiin);
101        AddCollisionHandler(pelaaja1, "mehu", Rajahdys);
102
103        Add(pelaaja1);
104    }
105
106    void LisaaNappaimet()
107    {
108        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
109        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
110
111        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
112        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
113        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
114
115        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
116
117        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
118        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
119        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
120        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, LiikutaPelaajaa, "Liikuta pelaajaa tattia työntämällä");
121
122
123        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
124    }
125
126    void Liikuta(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.Walk(nopeus);
129    }
130
131    void Hyppaa(PlatformCharacter hahmo, double nopeus)
132    {
133        hahmo.Jump(nopeus);
134    }
135
136    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
137    {
138        maaliAani.Play();
139        tahti.Destroy();
140
141        pisteLaskuri.Value += 1;
142    }
143
144    void Musiikki()
145    {
146        MediaPlayer.Play("Call To Adventure");
147        MediaPlayer.IsRepeating = true;
148    }
149
150    void lisaavihollinen(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject vihu = new PhysicsObject(leveys, korkeus);
153        vihu.Position = paikka;
154        vihu.Size = vihu.Size * 10;
155        vihu.Image = pahiksenKuva;
156        vihu.Tag = "pahis";
157        vihu.IgnoresCollisionResponse = true;
158        Add(vihu);
159
160        PlatformWandererBrain vaelteluaivot = new PlatformWandererBrain();
161
162        vaelteluaivot.JumpSpeed = 400.0;
163        vaelteluaivot.Speed = 50.0;
164        vaelteluaivot.TriesToJump = true;
165
166        vihu.Brain = vaelteluaivot;
167        vihu.Brain.Active = true;
168
169        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
170
171        seuraajanAivot.Speed = 100;
172        seuraajanAivot.DistanceFar = 600;
173        seuraajanAivot.DistanceClose = 50;
174        seuraajanAivot.StopWhenTargetClose = false;
175        seuraajanAivot.FarBrain = vaelteluaivot;
176        vihu.Brain = seuraajanAivot;
177
178        Add(vihu);
179
180
181    }
182
183    void TormaaVihuun(PhysicsObject pelaaja1, PhysicsObject vihu)
184    {
185        pelaaja1.Destroy();
186        kuolemisenAani.Play();
187        Label tekstikentta = new Label("R.I.P hävisit pelin");
188        Add(tekstikentta);
189
190    }
191
192    void alkuValikko()
193    {
194        GameObject taustaolio = new GameObject(Screen.Width, Screen.Height);
195        taustaolio.Image = taustakuva;
196       Add(taustaolio);
197
198        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta peli");
199
200        Add(alkuValikko);
201        alkuValikko.AddItemHandler(0, AloitaPeli);
202       
203        alkuValikko.AddItemHandler(1, Exit);
204
205    }
206
207    void AloitaPeli()
208    {
209        ClearAll();
210        Gravity = new Vector(0, -1000);
211
212        LuoKentta();
213        LisaaNappaimet();
214        Musiikki();
215        Musiikki();
216        Camera.Follow(pelaaja1);
217        Camera.ZoomFactor = 1.2;
218        Camera.StayInLevel = true;
219        LuoPisteLaskuri();
220    }
221
222    void Ohjeet()
223    {
224       
225
226
227
228    }
229
230    IntMeter pisteLaskuri;
231
232    void LuoPisteLaskuri()
233    {
234        pisteLaskuri = new IntMeter(0);
235
236        Label pisteNaytto = new Label();
237        pisteNaytto.X = Screen.Left + 100;
238        pisteNaytto.Y = Screen.Top - 100;
239        pisteNaytto.TextColor = Color.Pink;
240        pisteNaytto.Color = Color.Black;
241
242
243
244        pisteNaytto.Title = "Mehut";
245        pisteNaytto.BindTo(pisteLaskuri);
246        Add(pisteNaytto);
247
248    }
249
250
251    void TormaaPiikkiin(PhysicsObject a, PhysicsObject b)
252    {
253        a.Destroy();
254        kuolemisenAani.Play();
255        Label tekstikentta = new Label("R.I.P hävisit pelin");
256        Add(tekstikentta);
257    }
258
259    void LiikutaPelaajaa(AnalogState tatinTila)
260    {
261        Vector tatinAsento = tatinTila.StateVector;
262        if (tatinAsento.Normalize().X < 0)
263        {
264            pelaaja1.Walk(-nopeus);
265        }
266        else
267        {
268            pelaaja1.Walk(nopeus);
269        }
270    }
271
272    void LisaaPiikit(Vector paikka, double leveys, double korkeus)
273    {
274       PhysicsObject piikit = PhysicsObject.CreateStaticObject(leveys, korkeus);
275        piikit.Position = paikka;
276        piikit.Image = Piikit;
277        piikit.Tag = "piikit";
278        Add(piikit);
279    }
280
281    void Rajahdys(PhysicsObject tormaaja,PhysicsObject kohde)
282    {
283
284    int pMaxMaara = 100;
285
286    ExplosionSystem rajahdys = new ExplosionSystem(LoadImage("Mehu"), pMaxMaara);
287    Add(rajahdys);
288    double x = kohde.X;
289    double y = kohde.Y;
290    int pMaara = 5;
291    rajahdys.AddEffect(x, y, pMaara);
292   
293    }
294
295    void LisaaNakymatonTaso(Vector paikka, double leveys, double korkeus)
296    {
297        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
298        taso.Position = paikka;
299        taso.Image = platform;
300        taso.IgnoresCollisionResponse = true;
301        Add(taso);
302    }
303
304    void LisaaKulma(Vector paikka, double leveys, double korkeus)
305    {
306        PhysicsObject kulma = PhysicsObject.CreateStaticObject(leveys, korkeus);
307       kulma.Position = paikka;
308       kulma.Image = platform3;
309       Add(kulma);
310
311
312
313    }
314
315 
316
317}
Note: See TracBrowser for help on using the repository browser.