source: 2014/24/FransM/Supermerjo/Supermerjo/Supermerjo/Supermerjo.cs @ 4998

Revision 4998, 11.4 KB checked in by anlakane, 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
9public class Supermerjo : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    //int pelaajanTerveys;
16    Vector pelaajanAloitus;
17
18    PlatformCharacter pelaaja1;
19
20    Image pelaajanKuva = LoadImage("Supermerjohahmo");
21    Image tahtiKuva = LoadImage("tahti");
22    Image taustakuva = LoadImage("Supermerjokentantausta");
23    Image Lattiakuva = LoadImage("Dirt");
24    Image Laava = LoadImage("Laava");
25    IntMeter pisteLaskuri;
26    private Image laavakuva = LoadImage("Laava");
27    Image OrkkiKuva = LoadImage("Cooba");
28    Image VehjeKuva = LoadImage("Vehje");
29    Image Linna = LoadImage("Talo");
30    Image KiviKuva = LoadImage("Kivi");
31
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    Vector aloitusPiste;
34    YesNoWindow Lopetus;
35    DoubleMeter HealttiMittari = new DoubleMeter(3, 0, 3);
36    public override void Begin()
37    {
38        MediaPlayer.Play("musiikki");
39
40        Gravity = new Vector(0, -1000);
41        LuoKentta();
42        LisaaNappaimet();
43        LuoElama();
44       
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48    }
49    void PelaajaKuolee()
50    {
51        pelaaja1.Position = pelaajanAloitus;
52        HealttiMittari.Value = HealttiMittari.MaxValue;
53    }
54 
55    void PainettiinValikonNappia(int valinta)
56{
57  switch (valinta)
58  {
59    case 0:
60          Exit();
61        break;
62    case 1:
63        pelaaja1.Position = aloitusPiste;
64        break;
65  } 
66    }
67    void LuoMusiikki()
68    { 
69        MediaPlayer.IsRepeating = true;
70        SoundEffect hyppyAani = LoadSoundEffect("Musiikki");
71        hyppyAani.Play();
72    }
73
74    void LuoKentta()
75    {
76        //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä.
77        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Supermerjokentta");
78
79        //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa.
80        ruudut.SetTileMethod(Color.FromHexCode("B97A57"), LisaaLattia);
81        ruudut.SetTileMethod(Color.FromHexCode("9D8635"), LisaaPelaaja);
82        ruudut.SetTileMethod(Color.FromHexCode("22B14C"), LisaaPutki);
83        ruudut.SetTileMethod(Color.FromHexCode("E6E1F4"), LisaaPilvi);
84        ruudut.SetTileMethod(Color.FromHexCode("11FF88"), LisaaMyrkky);
85        ruudut.SetTileMethod(Color.FromHexCode("ED1C24"), LisaaLaava);
86        ruudut.SetTileMethod(Color.FromHexCode("FE12EC"), LisaaOrkki);
87        ruudut.SetTileMethod(Color.FromHexCode("A349A4"), LisaaVehje);
88        ruudut.SetTileMethod(Color.FromHexCode("84E2FF"), LisaaTalo);
89        ruudut.SetTileMethod(Color.FromHexCode("000000"), LisaaKivi);
90
91
92        //3. Execute luo kentän
93        //   Parametreina leveys ja korkeus
94        ruudut.Execute(20, 20);
95        Level.CreateBorders();
96        // Level.Background.CreateGradient(Color.White, Color.SkyBlue);
97        Level.Background.Image = taustakuva;
98        Level.Background.FitToLevel();
99        //Level.Background.Image = pelaajanKuva;
100        //Level.Background.CreateGradient(Color.White, Color.Blue);
101
102
103    }
104
105    void LisaaValikko(PhysicsObject pelaaja,PhysicsObject kohde
106        )
107    {
108        MultiSelectWindow valikko = new MultiSelectWindow("Uudelleen plz",
109"Exit", "Aloita!");
110        valikko.ItemSelected += PainettiinValikonNappia;
111        Add(valikko);
112    }
113
114    void LisaaLattia(Vector paikka, double leveys, double korkeus)
115    {
116      //  LisaaSeina(paikka, leveys, korkeus, Color.Brown);
117        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
118        taso.Position = paikka;
119        taso.Image = Lattiakuva;
120        taso.CollisionIgnoreGroup = 1;
121        Add(taso);
122    }
123    void LisaaPilvi(Vector paikka, double leveys, double korkeus)
124    {
125        LisaaSeina(paikka, leveys, korkeus, Color.FromHexCode("E6E1F4"));
126    }
127    void LisaaTahti(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        tahti.IgnoresCollisionResponse = true;
131        tahti.Position = paikka;
132        tahti.Image = tahtiKuva;
133        tahti.Tag = "tahti";
134        Add(tahti);
135    }
136    void LisaaLaavaAine(Vector paikka, double leveys, double korkeus)
137    { 
138    PhysicsObject aine = PhysicsObject.CreateStaticObject(leveys,korkeus);
139    aine.Position = paikka;
140    aine.Image = laavakuva;
141    aine.Tag = "Laava";
142    Add(aine);
143    aine.Color = Color.FromHexCode("ED1C24");
144
145    }
146 
147           void LisaaKivi(Vector paikka, double leveys, double korkeus)
148     {
149        PlatformCharacter kivi = new PlatformCharacter(leveys, korkeus);
150        kivi.Position = paikka;
151
152        kivi.Mass = 4.0;
153        kivi.Image = KiviKuva;
154        Add(kivi);
155        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
156        tasoAivot.Speed = 100;
157
158        kivi.Tag = "Kivi";
159        tasoAivot.FallsOffPlatforms = true;
160        tasoAivot.TriesToJump = true;
161        tasoAivot.JumpSpeed = 900;
162    }
163
164    void LisaaVahinkoAine(Vector paikka, double leveys, double korkeus)
165    {
166    PhysicsObject aine = PhysicsObject.CreateStaticObject(leveys,korkeus);
167    aine.Position = paikka;
168    aine.Tag = "Myrkky";
169    Add(aine);
170    aine.Color = Color.FromHexCode("11FF88");
171   
172    }
173
174    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
175    {
176        aloitusPiste = paikka;
177        pelaaja1 = new PlatformCharacter(leveys, korkeus);
178        pelaaja1.Position = paikka;
179        pelaajanAloitus = paikka;
180        pelaaja1.Mass = 4.0;
181        pelaaja1.Image = pelaajanKuva;
182        AddCollisionHandler(pelaaja1, "Vihollinen", PelaajaMenettaaHealtti);
183        AddCollisionHandler(pelaaja1, "Myrkky", TapaPelaaja);
184        AddCollisionHandler(pelaaja1, "Kivi", TapaPelaaja);
185        AddCollisionHandler(pelaaja1, "Laava", PelaajaMenettaaHealtti);
186        AddCollisionHandler(pelaaja1, "Talo", LisaaValikko);
187
188        Add(pelaaja1);
189        pelaaja1.Tag = ("pelaaja");
190
191
192    }
193    void LisaaVehje(Vector paikka, double leveys, double korkeus)
194    {
195      PlatformCharacter vehje = new PlatformCharacter(leveys, korkeus);
196      vehje.Position = paikka;
197     
198      vehje.Mass = 4.0;
199      vehje.Image = VehjeKuva;
200      Add(vehje);
201      PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
202      tasoAivot.Speed = 100;
203      vehje.Tag = "Vihollinen";
204
205      vehje.Brain = tasoAivot;
206
207    }
208    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
209    {
210        PlatformCharacter orkki = new PlatformCharacter(leveys, korkeus);
211        orkki.Position = paikka;
212
213        orkki.Mass = 4.0;
214        orkki.Image = OrkkiKuva;
215        Add(orkki);
216        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
217        tasoAivot.Speed = 100;
218
219        orkki.Tag = "Vihollinen";
220        tasoAivot.FallsOffPlatforms = true;
221        tasoAivot.TriesToJump = true;
222        tasoAivot.JumpSpeed = 900;
223        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
224        seuraajanAivot.Speed = 300;                 // Millä nopeudella kohdetta seurataan
225        seuraajanAivot.DistanceFar = 40;           // Etäisyys jolla aletaan seurata kohdetta
226        seuraajanAivot.DistanceClose = 10;
227            ;         // Etäisyys jolloin ollaan lähellä kohdetta
228        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
229        seuraajanAivot.FarBrain = tasoAivot; // Käytetään satunnaisaivoja kun ollaan kaukana
230        orkki.Brain = seuraajanAivot;
231
232    }
233    void LisaaMyrkky(Vector paikka, double leveys, double korkeus)
234    {
235        LisaaVahinkoAine(paikka,leveys,korkeus);
236    }
237
238    void LisaaLaava(Vector paikka, double leveys, double korkeus)
239    {
240        LisaaLaavaAine(paikka, leveys, korkeus);
241    }
242
243    void LisaaNappaimet()
244    {
245        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
246        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
247
248        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
249        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
250        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
251
252        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
253
254        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
255        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
256        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
257
258        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
259    }
260
261    void Liikuta(PlatformCharacter hahmo, double nopeus)
262    {
263        hahmo.Walk(nopeus);
264    }
265
266    void Hyppaa(PlatformCharacter hahmo, double nopeus)
267    {
268        hahmo.Jump(nopeus);
269    }
270
271    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
272    {
273        maaliAani.Play();
274        MessageDisplay.Add("Keräsit tähden!");
275        tahti.Destroy();
276    }
277
278    void LuoPistelaskuri()
279    {
280        pisteLaskuri = new IntMeter(0);
281
282        Label pisteNaytto = new Label();
283        pisteNaytto.X = Screen.Left + 100;
284        pisteNaytto.Y = Screen.Top - 100;
285        pisteNaytto.TextColor = Color.Black;
286        pisteNaytto.Color = Color.White;
287
288        pisteNaytto.BindTo(pisteLaskuri);
289        Add(pisteNaytto);
290    }
291
292    void LisaaPutki(Vector paikka, double leveys, double korkeus)
293    {
294        LisaaSeina(paikka,leveys,korkeus, Color.Green);
295    }
296    void LisaaSeina(Vector paikka,double leveys,double korkeus,Color vari)
297    {
298        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
299        taso.Position = paikka;
300        taso.Color = vari;
301        Add(taso);
302    }
303    void TapaPelaaja(PhysicsObject pelaaja, PhysicsObject kohde)
304    {
305        PelaajaKuolee();
306    }
307    void PelaajaMenettaaHealtti(PhysicsObject pelaaja, PhysicsObject kohde)
308    {
309        HealttiMittari.Value--;
310        pelaaja.Hit(new Vector(1000, 1000));
311    }
312
313    //void PelaajaParantuu(PhysicsObject pelaaja, PhysicsObject klohde)
314    //{
315    //    pelaajanTerveys++;
316    //}
317
318    void Kuolematon(Double Aika)
319    { 
320   
321    }
322
323
324    void LuoElama()
325    {
326       
327        Label pisteNaytto = new Label();
328        pisteNaytto.X = Screen.Left + 100;
329        pisteNaytto.Y = Screen.Top - 100;
330        pisteNaytto.TextColor = Color.Black;
331        pisteNaytto.Color = Color.White;
332        pisteNaytto.Image = LoadImage("Healtti");
333        pisteNaytto.Image = LoadImage("HealttiTyhja");
334        ProgressBar voimaPalkki = new ProgressBar(150, 10);
335        voimaPalkki.BindTo(HealttiMittari);
336        Add(voimaPalkki);
337        HealttiMittari.LowerLimit += PelaajaKuolee;
338    }
339    void LisaaTalo(Vector paikka,double leveys,double korkeus)
340    {
341        PhysicsObject talo = PhysicsObject.CreateStaticObject(leveys, korkeus);
342        Add(talo);
343        talo.Position = paikka;
344        talo.Image = Linna;
345        talo.Tag = "Talo";
346
347    }
348
349
350}
Note: See TracBrowser for help on using the repository browser.