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

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