source: 2015/27/TeemuH/JANOISTENSANKARI/JANOISTENSANKARI.cs @ 6718

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