source: 2015/30/JenniN/Karkuunomapeli/Karkuunomapeli/Karkuunomapeli/Karkuunomapeli.cs @ 7026

Revision 7026, 9.7 KB checked in by jupipana, 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
9
10
11/// <summary>
12/// Skyline
13/// </summary>
14
15public class Skyline : PhysicsGame
16{
17    const double nopeus = 200;
18    const double hyppyNopeus = 750;
19    const int RUUDUN_KOKO = 40;
20
21    PlatformCharacter pelaaja1;
22   
23    Image hahmonKuva = LoadImage("Uusihahmo");
24    Image pahiksenKuva = LoadImage("pahis");
25    Image taustaKuva = LoadImage("tautakuva");
26    Image maalinKuva = LoadImage("KuvaM");
27    Image paapahiksenKuva = LoadImage("paapahis");
28    Image tausta = LoadImage("tausta");
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30   
31     public override void Begin()
32    {
33        Gravity = new Vector(0, -1000);
34
35        LuoKentta();
36        LisaaNappaimet();
37        LuoPistelaskuri();
38
39        Level.Background.Image = tausta;
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 5;
43        Camera.StayInLevel = true;
44 
45    }
46
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.SetTileMethod('K', LisaaEste);
54        kentta.SetTileMethod('E', LisaaSiirtojuttu);
55        kentta.SetTileMethod('M', LisaaMaali);
56        kentta.SetTileMethod('U', Lisaakukka);
57        kentta.SetTileMethod('P', LisaaPaaPahis);
58       
59        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
60        Level.CreateBorders();
61        Level.Background.CreateGradient(Color.Mint, Color.Turquoise);
62    }
63
64    //Tasot, joiden päälle voi hyppiä.
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.PaintDotNetMagenta;
70        Add(taso);
71    }
72    //Siirreltävät esteet, jotka täytyy siirtää syrjään, jos haluaa jatkaa matkaa.
73    void LisaaSiirtojuttu(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject siirtojuttu = new PhysicsObject(leveys, korkeus);
76        siirtojuttu.Position = paikka;
77        siirtojuttu.Color = Color.HotPink;
78        siirtojuttu.Mass = 7.0;
79        Add(siirtojuttu);
80    }
81    //Maali
82    void LisaaMaali(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        maali.IgnoresCollisionResponse = true;
86        maali.Position = paikka;
87        maali.Image = maalinKuva;
88        maali.Tag = "maali";
89        Add(maali);
90    }
91    //Paapahis, joka pystyy liikkumaan
92    void LisaaPaaPahis(Vector paikka, double leveys, double korkeus)
93    {
94        PlatformCharacter paapahis = new PlatformCharacter(60.0, 60.0);
95        paapahis.Image = paapahiksenKuva;
96        Add(paapahis);
97
98        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
99        tasoAivot.Speed = 100;
100        paapahis.Tag = "paapahis";
101        paapahis.Position = paikka;
102        paapahis.Brain = tasoAivot;
103    }
104
105    //Namut, jotka pitää napata.
106    void LisaaTahti(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        tahti.IgnoresCollisionResponse = true;
110        tahti.Position = paikka;
111        tahti.Shape = Shape.Star;
112        tahti.Color = RandomGen.NextColor();
113        tahti.Tag = "tahti";
114        Add(tahti);
115    }
116
117    void Lisaakukka(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject kukka = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        kukka.Position = paikka;
121        kukka.Shape = Shape.Heart;
122        kukka.Color = RandomGen.NextColor();
123        kukka.Tag = "kukka";
124        Add(kukka);
125    }
126
127    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
128    {
129        pelaaja1 = new PlatformCharacter(leveys, korkeus);
130        pelaaja1.Position = paikka;
131        pelaaja1.Mass = 8.0;
132        pelaaja1.Image = hahmonKuva;
133        pelaaja1.Tag = "pelaaja";
134
135        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
136        AddCollisionHandler(pelaaja1, "este", TormaaEsteeseen);
137        AddCollisionHandler(pelaaja1, "maali", MaaliinTulo);
138        AddCollisionHandler(pelaaja1, "kukka", TormaaKukkaan);
139        AddCollisionHandler(pelaaja1, "paapahis", TormaaPaaPahikseen);
140        Add(pelaaja1);
141    }
142
143    void TormaaKukkaan(PhysicsObject hahmo, PhysicsObject kukka)
144    {
145        Flame liekki = new Flame(paapahiksenKuva);
146        liekki.Position = kukka.Position;
147        Timer.SingleShot(1.0, delegate { liekki.Destroy(); });
148        Add(liekki);
149    }
150
151    void MaaliinTulo(PhysicsObject hahmo, PhysicsObject maali)
152    {
153        Flame liekki = new Flame(hahmonKuva);
154        liekki.Position = hahmo.Position;
155        Add(liekki);
156        Timer.SingleShot(1.0, delegate { hahmo.Destroy(); });
157       
158        Label tekstikentta = new Label(200.0, 100.0, "MAALI!");
159        tekstikentta.Font = Font.DefaultLarge;
160        tekstikentta.Color = Color.Aqua;
161        tekstikentta.TextColor = Color.Red;
162        tekstikentta.BorderColor = Color.Black;
163        Add(tekstikentta);   
164    }
165
166
167    //Esteet, joita täytyy varoa ja esteen Ase.
168    void LisaaEste(Vector paikka, double leveys, double korkeus)
169    {
170        PhysicsObject este = PhysicsObject.CreateStaticObject(leveys, korkeus);
171        este.Position = paikka;
172        este.Image = pahiksenKuva;
173        este.Tag = "este";
174        AssaultRifle esteenAse = new AssaultRifle(leveys, korkeus);
175        esteenAse.Ammo.Value = 100;
176        esteenAse.FireRate = 10;
177        esteenAse.X = 30.0;
178        esteenAse.Y = -5.0;
179        esteenAse.ProjectileCollision = AmmusOsui;
180        este.Add(esteenAse);
181        Add(este);
182
183        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
184        tasoAivot.Speed = 50;
185        este.Brain = tasoAivot;
186
187        Timer ajastin = new Timer();
188        ajastin.Interval = 1.5;
189        ajastin.Timeout += delegate { EsteAmpuuAseella(esteenAse); };
190        ajastin.Start();     
191    }
192
193    void EsteAmpuuAseella(AssaultRifle ase)
194    {
195        PhysicsObject ammus = ase.Shoot();
196        if (ammus != null)
197        {
198            Timer.SingleShot(0.5, delegate { ammus.Destroy(); });
199        }
200
201    }
202
203    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
204    {
205        if (kohde.Tag.Equals("pelaaja"))
206        {
207            Smoke savu = new Smoke();
208            savu.Position = kohde.Position;
209            Timer.SingleShot(5.0, delegate { savu.Destroy(); });
210            pisteLaskuri.Value -= 1;
211            Add(savu);
212        }
213    }
214
215   
216
217    void LisaaNappaimet()
218    {
219        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
220        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
221        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
222        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
223        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
224        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
225        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
226        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
227        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
228        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
229    }
230
231    void Liikuta(PlatformCharacter hahmo, double nopeus)
232    {
233        hahmo.Walk(nopeus);
234    }
235
236    void Hyppaa(PlatformCharacter hahmo, double nopeus)
237    {
238        hahmo.Jump(nopeus);
239    }
240
241    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
242    {
243        maaliAani.Play();
244        MessageDisplay.Add("Keräsit tähden!");
245        tahti.Destroy();
246        pisteLaskuri.Value += 1;
247    }
248
249    void TormaaEsteeseen(PhysicsObject hahmo, PhysicsObject este)
250    {
251        Explosion rajahdys = new Explosion(100);
252        rajahdys.Position = hahmo.Position;
253        Add(rajahdys);
254        hahmo.Destroy();
255        Label tekstikentta = new Label (200.0, 100.0, "HÄVISIT!");
256        tekstikentta.Font = Font.DefaultLarge;
257        tekstikentta.Color = Color.Aqua;
258        tekstikentta.TextColor = Color.Red;
259        tekstikentta.BorderColor = Color.Black;
260        Add(tekstikentta);   
261    }
262
263    void TormaaPaaPahikseen(PhysicsObject hahmo, PhysicsObject paapahis)
264   
265    {
266        Explosion rajahdys = new Explosion(100);
267        rajahdys.Position = hahmo.Position;
268        Add(rajahdys);
269        hahmo.Destroy();
270        Label tekstikentta = new Label(200.0, 100.0, "HÄVISIT!");
271        tekstikentta.Font = Font.DefaultLarge;
272        tekstikentta.Color = Color.Aqua;
273        tekstikentta.TextColor = Color.Red;
274        tekstikentta.BorderColor = Color.Black;
275        Add(tekstikentta); 
276    }
277
278    IntMeter pisteLaskuri;
279
280    void LuoPistelaskuri()
281    {
282        pisteLaskuri = new IntMeter(0);
283
284        Label pisteNaytto = new Label();
285        pisteNaytto.X = Screen.Right - 100;
286        pisteNaytto.Y = Screen.Top - 100;
287        pisteNaytto.TextColor = Color.Black;
288        pisteNaytto.Color = Color.Pink;
289        pisteNaytto.Title = "Pisteet";
290        pisteNaytto.Font = Font.DefaultLarge;
291        pisteNaytto.BindTo(pisteLaskuri);
292        Add(pisteNaytto);   
293    }
294
295   
296}
Note: See TracBrowser for help on using the repository browser.