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

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