source: 2016/30/SisuT/Elli_The_Corgi/Elli_The_Corgi/Elli_The_Corgi/Elli_The_Corgi/Elli_The_Corgi.cs @ 8252

Revision 8252, 7.7 KB checked in by sikaosti, 5 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 Elli_The_Corgi : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    int kenttaNro = 1;
15
16
17    PlatformCharacter pelaaja1;
18    PlatformCharacter pelaaja2;
19    PhysicsObject ovi;
20    PhysicsObject noita;
21
22    Image pelaajanKuva = LoadImage("pelaaja");
23    Image pelaaja2Kuva = LoadImage("corgi2");
24    Image ovenkuva = LoadImage("ovi");
25    Image noitankuva = LoadImage("finalboss");
26
27    Image tahtiKuva = LoadImage("tahti");
28    Image nakumatonpalikka = LoadImage("nakumatonpalikka");
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32
33    public override void Begin()
34    {
35       
36
37        SeuraavaKentta();
38
39
40
41    }
42
43    void SeuraavaKentta()
44    {
45        ClearAll();
46
47       
48
49        if (kenttaNro == 1) LuoKentta("kentta1");
50        else if (kenttaNro == 2) LuoKentta("kentta2");
51        else if (kenttaNro == 3) LuoKentta("kentta3");
52        else if (kenttaNro == 4) LuoKentta("kentta4");
53        else if (kenttaNro > 4) Exit();
54
55        LisaaNappaimet();
56    }
57
58    void TormasiOveen(PhysicsObject pelaaja, PhysicsObject kohde)
59    {
60        kenttaNro++;
61        SeuraavaKentta();
62    }
63    void LuoKentta(string kenttaTiedostonNimi)
64    {
65        Gravity = new Vector(0, -1000);
66
67        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
68        kentta.SetTileMethod('Q', Lisaanakumatonpalikka);
69        kentta.SetTileMethod('#', LisaaTaso);
70        kentta.SetTileMethod('*', LisaaTahti);
71        kentta.SetTileMethod('1', LisaaPelaaja);
72        kentta.SetTileMethod('2', LisaaPelaaja2);
73        kentta.SetTileMethod('O', LisaaOvi);
74        kentta.SetTileMethod('N', LisaaNoita);
75        kentta.SetTileMethod('P', LisaaPalikka);
76        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
77        Level.CreateBorders();
78        Camera.Follow(pelaaja1);
79        Camera.ZoomFactor = 1.2;
80        Camera.StayInLevel = true;
81    }
82
83    void LisaaNoita(Vector paikka, double leveys, double korkeus)
84    {
85        PlatformCharacter noita = new PlatformCharacter(100, 100);
86        noita.Position = paikka;
87
88        noita.Tag = ("pahis");
89
90        noita.IgnoresCollisionResponse = false;
91
92       
93
94        noita.Image = noitankuva;
95        Add(noita);
96       
97
98        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
99        tasoAivot.Speed = 150;
100        tasoAivot.JumpSpeed = 2000;
101        tasoAivot.TriesToJump = true;
102
103        noita.Brain = tasoAivot;
104        tasoAivot.FallsOffPlatforms = true;
105    }
106
107
108    void mitaTapahtuuKunOllaanLahella()
109    {
110       
111
112    }
113
114    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
115    {
116        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
117        palikka.Position = paikka;
118        palikka.Color = Color.HotPink;
119        palikka.Tag = "palikka";
120         AddCollisionHandler(palikka, "noita", tormaaseinaan);
121        Add(palikka);
122    }
123
124    void tormaaseinaan(PhysicsObject palikka, PhysicsObject kohde)
125    {
126        //  palikka.IgnoresCollisionResponse = true;
127        palikka.IgnoresCollisionWith(kohde);
128    }
129   
130
131    void TormasiMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
132    {
133        kenttaNro++;
134        SeuraavaKentta();
135    }
136
137    void TormasiPiikkiin(PhysicsObject pelaaja, PhysicsObject piikki)
138    {
139        SeuraavaKentta();
140    }
141
142    void Lisaanakumatonpalikka(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject npalikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        npalikka.Position = paikka;
146        npalikka.Image = nakumatonpalikka;
147        Add(npalikka);
148    }
149    void LisaaTaso(Vector paikka, double leveys, double korkeus)
150    {
151        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
152        taso.Position = paikka;
153        taso.Color = Color.Green;
154        Add(taso);
155    }
156
157    void LisaaTahti(Vector paikka, double leveys, double korkeus)
158    {
159        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
160        tahti.IgnoresCollisionResponse = true;
161        tahti.Position = paikka;
162        tahti.Image = tahtiKuva;
163        tahti.Tag = "tahti";
164        Add(tahti);
165    } 
166
167    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
168    {
169        pelaaja2 = new PlatformCharacter(leveys, korkeus);
170        pelaaja2.Position = paikka;
171        pelaaja2.Mass = 4.0;
172        AddCollisionHandler(pelaaja2, "pahis", tormaapahikseen);
173        pelaaja2.Image = pelaaja2Kuva;
174        pelaaja2.Tag = pelaaja2;
175        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
176        AddCollisionHandler(pelaaja2, "ovi", TormasiOveen);
177        Add(pelaaja2);
178    }
179
180    void tormaapahikseen(PhysicsObject pelaaja, PhysicsObject kohde)
181    {
182        pelaaja.Destroy();
183    }
184
185    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
186    {
187        pelaaja1 = new PlatformCharacter(leveys, korkeus);
188        pelaaja1.Position = paikka;
189        AddCollisionHandler(pelaaja1, "pahis", tormaapahikseen); 
190        pelaaja1.Mass = 4.0;
191        pelaaja1.Image = pelaajanKuva;
192        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
193        AddCollisionHandler(pelaaja1, "ovi", TormasiOveen);
194        Add(pelaaja1);
195    }
196
197   
198    void LisaaOvi(Vector paikka, double leveys, double korkeus)
199    {
200        ovi = PhysicsObject.CreateStaticObject (leveys, korkeus);
201        ovi.Position = paikka;
202        ovi.Image = ovenkuva;
203        ovi.Tag = "ovi";
204        Add(ovi);
205
206    }
207
208    void LisaaNappaimet()
209    {
210        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
211        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
212
213        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
214        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
215        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
216
217        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
218        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
219        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
220
221        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
222
223        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
224        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
225        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
226
227        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
228    }
229
230    void Liikuta(PlatformCharacter hahmo, double nopeus)
231    {
232        hahmo.Walk(nopeus);
233    }
234
235    void Hyppaa(PlatformCharacter hahmo, double nopeus)
236    {
237        hahmo.Jump(nopeus);
238    }
239
240    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
241    {
242        maaliAani.Play();
243        MessageDisplay.Add("Keräsit tähden!");
244        tahti.Destroy();
245    }
246}
247
248class PeliHahmo : PhysicsObject
249{
250    public int Elamat { get; set; }
251    public Vector RespausKoordinaatit { get; set; }
252
253    public PeliHahmo(double leveys, double korkeus)
254        : base(leveys, korkeus)
255    {
256       
257       
258    }
259}
Note: See TracBrowser for help on using the repository browser.