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

Revision 6930, 6.5 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("hahmonsuunnitelma");
22    Image pahiksenKuva = LoadImage("pahis");
23   
24
25    SoundEffect maaliAani = LoadSoundEffect("maali");
26    //AssaultRifle esteenAse;
27
28   
29
30    public override void Begin()
31    {
32        Gravity = new Vector(0, -1000);
33
34        LuoKentta();
35        LisaaNappaimet();
36        LuoPistelaskuri();
37
38
39
40
41
42
43       
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 4;
46        Camera.StayInLevel = true;
47
48       
49       
50    }
51
52    void LuoKentta()
53    {
54        TileMap kentta = TileMap.FromLevelAsset("kentta1");
55        kentta.SetTileMethod('#', LisaaTaso);
56        kentta.SetTileMethod('*', LisaaTahti);
57        kentta.SetTileMethod('N', LisaaPelaaja);
58        kentta.SetTileMethod('K', LisaaEste);
59       
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.Mint, Color.Turquoise);
63    }
64   
65
66
67    //Tasot, joiden päälle voi hyppiä.
68    void LisaaTaso(Vector paikka, double leveys, double korkeus)
69    {
70        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
71        taso.Position = paikka;
72        taso.Color = Color.PaintDotNetMagenta;
73        Add(taso);
74    }
75
76 
77
78
79
80
81    //Namut, jotka pitää napata.
82    void LisaaTahti(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        tahti.IgnoresCollisionResponse = true;
86        tahti.Position = paikka;
87        tahti.Shape = Shape.Star;
88        tahti.Color = RandomGen.NextColor();
89        tahti.Tag = "tahti";
90        Add(tahti);
91    }
92
93    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = new PlatformCharacter(leveys, korkeus);
96        pelaaja1.Position = paikka;
97        pelaaja1.Mass = 4.0;
98        pelaaja1.Image = hahmonKuva;
99        pelaaja1.Tag = "pelaaja";
100        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
101        AddCollisionHandler(pelaaja1, "este", TormaaEsteeseen);
102
103        Add(pelaaja1);
104    }
105
106
107
108
109    //Esteet, joita täytyy varoa ja esteen Ase.
110    void LisaaEste(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject este = PhysicsObject.CreateStaticObject(leveys, korkeus);
113        este.Position = paikka;
114        este.Image = pahiksenKuva;
115        este.Tag = "este";
116        AssaultRifle esteenAse = new AssaultRifle(leveys, korkeus);
117       
118        esteenAse.Ammo.Value = 100;
119        esteenAse.FireRate = 0.5;
120        esteenAse.X = 55.0;
121        esteenAse.Y = -5.0;
122
123        esteenAse.ProjectileCollision = AmmusOsui;
124        este.Add(esteenAse);
125        Add(este);
126
127        Timer ajastin = new Timer();
128        ajastin.Interval = 1.5;
129        ajastin.Timeout += delegate { EsteAmpuuAseella(esteenAse); };
130        ajastin.Start();
131
132       
133    }
134
135    void EsteAmpuuAseella(AssaultRifle ase)
136    {
137        PhysicsObject ammus = ase.Shoot();
138
139        if (ammus != null)
140        {
141            Timer.SingleShot(0.5, delegate { ammus.Destroy(); });
142            //ammus.Size *= 3;
143            //ammus.Image = ...
144            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
145        }
146
147    }
148
149    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
150    {
151        if (kohde.Tag.Equals("pelaaja"))
152        {
153            Smoke savu = new Smoke();
154            savu.Position = kohde.Position;
155            Timer.SingleShot(5.0, delegate { savu.Destroy(); });
156            pisteLaskuri.Value -= 1;
157
158            Add(savu);
159        }
160        //ammus.Destroy();
161    }
162
163   
164
165    void LisaaNappaimet()
166    {
167        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
168        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
169
170        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
171        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
172        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
173
174        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
175
176        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
177        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
178        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
179
180        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
181    }
182
183    void Liikuta(PlatformCharacter hahmo, double nopeus)
184    {
185        hahmo.Walk(nopeus);
186    }
187
188    void Hyppaa(PlatformCharacter hahmo, double nopeus)
189    {
190        hahmo.Jump(nopeus);
191    }
192
193    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
194    {
195        maaliAani.Play();
196        MessageDisplay.Add("Keräsit tähden!");
197        tahti.Destroy();
198        pisteLaskuri.Value += 1;
199
200    }
201
202    void TormaaEsteeseen(PhysicsObject hahmo, PhysicsObject este)
203    {
204        Explosion rajahdys = new Explosion(100);
205        rajahdys.Position = hahmo.Position;
206        Add(rajahdys);
207        hahmo.Destroy();
208        Label tekstikentta = new Label (200.0, 100.0, "HÄVISIT!");
209        tekstikentta.Font = Font.DefaultLarge;
210        tekstikentta.Color = Color.Aqua;
211        tekstikentta.TextColor = Color.Red;
212        tekstikentta.BorderColor = Color.Black;
213        Add(tekstikentta);
214       
215
216       
217    }
218
219
220
221    IntMeter pisteLaskuri;
222
223    void LuoPistelaskuri()
224    {
225        pisteLaskuri = new IntMeter(0);
226
227        Label pisteNaytto = new Label();
228        pisteNaytto.X = Screen.Right - 100;
229        pisteNaytto.Y = Screen.Top - 100;
230        pisteNaytto.TextColor = Color.Black;
231        pisteNaytto.Color = Color.Pink;
232        pisteNaytto.Title = "Pisteet";
233        pisteNaytto.Font = Font.DefaultLarge;
234        pisteNaytto.BindTo(pisteLaskuri);
235        Add(pisteNaytto);
236
237       
238    }
239
240   
241}
Note: See TracBrowser for help on using the repository browser.