source: 2014/27/NikiV/untitled/untitled/untitled/untitled.cs @ 5439

Revision 5439, 9.4 KB checked in by nieekrva, 7 years ago (diff)

törmäykset korjattu

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class untitled : PhysicsGame
10{
11   
12    DoubleMeter elamaLaskuri;
13    DoubleMeter vihunlaskuri;
14    const double nopeus = 300;
15    const double hyppyNopeus = 750;
16    const int RUUDUN_KOKO = 40;
17
18    PlatformCharacter pelaaja1;
19    PlatformCharacter vihu;
20    AssaultRifle pelaajan1Ase;
21   
22
23
24    Image pelaajanKuva = LoadImage("hahmo");
25    Image tahtiKuva = LoadImage("tahti");
26    Image vihunkuva = LoadImage("bowser");
27    Image lieska = LoadImage("lieska");
28    Image geminkuva = LoadImage("exp_gem");
29    Image paikallaanAnimaatio = LoadImage("hahmo2");
30
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32    Weapon vihunase;
33    private Image[] ukkelinKavely = LoadImages("hahmo", "hahmo2", "hahmo3");
34
35    public override void Begin()
36    {
37        SmoothTextures = false;
38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
42        LuoElamaLaskuri();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47    }
48
49    void LuoKentta()
50    {
51        TileMap kentta = TileMap.FromLevelAsset("kentta1");
52        kentta.SetTileMethod('#', LisaaTaso);
53        kentta.SetTileMethod('*', LisaaTahti);
54        kentta.SetTileMethod('N', LisaaPelaaja);
55        kentta.SetTileMethod('b', Luovihu);
56        kentta.SetTileMethod('g', lisaagem);
57        kentta.SetTileMethod('s', lisaaseina);
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
61    }
62
63    void LisaaTaso(Vector paikka, double leveys, double korkeus)
64    {
65        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
66        taso.Position = paikka;
67        taso.Color = Color.Green;
68        Add(taso);
69        taso.Tag = "taso";
70    }
71    void lisaaseina(Vector paikka, double leveys, double korkeus)
72    {
73        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
74        seina.Position = paikka;
75        seina.Color = Color.Transparent;
76        seina.Tag = "seina";
77        Add(seina);
78    }
79
80    void LisaaTahti(Vector paikka, double leveys, double korkeus)
81    {
82        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
83        tahti.IgnoresCollisionResponse = true;
84        tahti.Position = paikka;
85        tahti.Image = tahtiKuva;
86        tahti.Tag = "tahti";
87        Add(tahti);
88    }
89    void lisaagem(Vector paikka, double leveys, double korkeus)
90    {
91        PhysicsObject gem = PhysicsObject.CreateStaticObject(leveys, korkeus);
92        gem.IgnoresCollisionResponse = true;
93        gem.Position = paikka;
94        gem.Image = geminkuva;
95        gem.Tag = "gem";
96        Add(gem);
97
98    }
99
100       
101   
102
103
104
105
106    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
107    {
108        pelaaja1 = new PlatformCharacter(leveys, korkeus);
109        pelaaja1.Position = paikka;
110        pelaaja1.Mass = 3.5;
111        pelaaja1.Image = pelaajanKuva;
112        pelaaja1.Tag = "pelaaja1";
113        pelaaja1.AnimWalk = new Animation(ukkelinKavely);
114        pelaaja1.AnimWalk.FPS = 20;
115        pelaaja1.AnimIdle = new Animation(paikallaanAnimaatio);
116        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
117        AddCollisionHandler(pelaaja1, "gem", tormaagemiin);
118        AddCollisionHandler(pelaaja1, "vihu", Tormaavihuun);
119        AddCollisionHandler(pelaaja1, "ammus2", vihunammusosuu);
120        Add(pelaaja1);
121       
122        pelaajan1Ase = new AssaultRifle(30, 10);
123
124        //Ammusten määrä aluksi:
125        pelaajan1Ase.Ammo.Value = 1000;
126
127        pelaajan1Ase.ProjectileCollision += AmmusOsuu;
128
129        pelaaja1.Add(pelaajan1Ase);
130    }
131    void Luovihu(Vector paikka, double leveys, double korkeus)
132    {
133       
134        vihu = new PlatformCharacter(leveys, korkeus);
135        vihu.Position = paikka;
136        vihu.Mass = 3.0;
137        vihu.Height = 150;
138        vihu.Width = 100;
139        vihu.Image = vihunkuva;
140        vihu.CanRotate = false;
141        vihu.Tag = "vihu";
142        AddCollisionHandler(vihu, "ammus", tormaaammukseen);
143        Luovihunlaskuri();
144        vihunase = new AssaultRifle(50, 60);
145        vihunase.Color = Color.Transparent;
146        vihunase.Image = null;
147        vihu.Weapon = vihunase;
148
149        vihunase.ProjectileCollision += vihunammusosuu;
150
151        Timer ajastin = new Timer();
152        ajastin.Interval = 1.0;
153        ajastin.Timeout += vihuampuu;
154        ajastin.Start();
155        Add(vihu);
156
157        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
158        tasoAivot.Speed = 100;
159
160        vihu.Brain = tasoAivot;
161        tasoAivot.FallsOffPlatforms = true;
162        tasoAivot.JumpSpeed = 700;
163        tasoAivot.TriesToJump = true;
164
165
166    }
167
168    void LisaaNappaimet()
169    {
170        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
171        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
172
173        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
174        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
175        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
176        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
177
178        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
179
180        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
181        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
182        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
183
184        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
185    }
186
187    void Liikuta(PlatformCharacter hahmo, double nopeus)
188    {
189        hahmo.Walk(nopeus);
190    }
191
192    void Hyppaa(PlatformCharacter hahmo, double nopeus)
193    {
194        hahmo.Jump(nopeus);
195    }
196
197    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
198    {
199        maaliAani.Play();
200        MessageDisplay.Add("Keräsit tähden!");
201        tahti.Destroy();
202    }
203    void tormaagemiin(PhysicsObject hahmo, PhysicsObject gem)
204    {
205        MessageDisplay.Add("100 exp. gained!");
206        gem.Destroy();
207    }
208
209    void AmmuAseella(AssaultRifle ase)
210    {
211        ase.AbsoluteAngle = pelaaja1.FacingDirection.Angle;
212        PhysicsObject ammus = ase.Shoot();
213
214        if (ammus != null)
215        {
216            //ammus.Size *= 3;
217            ammus.CanRotate = false;
218            AddCollisionHandler(ammus, "vihu", osuma);
219            //ammus.Tag = "ammus";
220            //ammus.Image = ...
221            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
222
223        }
224    }
225    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
226    {
227        if (kohde.Tag == "vihu" || kohde.Tag == "taso" || kohde.Tag =="seina")
228        {
229            ammus.Destroy();
230        }
231
232        if (kohde.Tag == "vihu")
233        {
234            vihunlaskuri.Value -= 1;           
235        }
236    }
237
238    void LuoElamaLaskuri()
239    {
240        elamaLaskuri = new DoubleMeter(10);
241        elamaLaskuri.MaxValue = 10;
242        elamaLaskuri.LowerLimit += ElamaLoppui;
243
244        ProgressBar elamaPalkki = new ProgressBar(150, 20);
245        elamaPalkki.X = Screen.Left + 150;
246        elamaPalkki.Y = Screen.Top - 20;
247        elamaPalkki.BindTo(elamaLaskuri);
248        Add(elamaPalkki);
249    }
250    void Luovihunlaskuri()
251    {
252        vihunlaskuri = new DoubleMeter(100);
253        vihunlaskuri.MaxValue = 100;
254        vihunlaskuri.LowerLimit += voitit;
255
256        ProgressBar vihunpalkki = new ProgressBar(150, 20);
257        vihunpalkki.X = Screen.Right - 150;
258        vihunpalkki.Y = Screen.Top - 20;
259        vihunpalkki.BindTo(vihunlaskuri);
260        Add(vihunpalkki);
261    }
262
263    void ElamaLoppui()
264    {
265        MessageDisplay.Add("Game over!");
266        pelaaja1.Destroy();
267    }
268    void voitit()
269    {
270        MessageDisplay.Add("Voitit!");
271        vihu.Destroy();
272    }
273   
274
275    void osuma(PhysicsObject ammus, PhysicsObject vihu)
276    {
277        ammus.Destroy();
278        MessageDisplay.Add("HIT!");
279       
280    }
281
282    void vihuampuu()
283    {
284        if (!vihu.IsDestroyed)
285        {
286            PhysicsObject ammus = vihu.Weapon.Shoot();
287
288            if (ammus != null)
289            {
290                ammus.Size *= 3;
291                ammus.Image = lieska;
292                ammus.Tag = "ammus2";
293                ammus.CanRotate = false;
294                ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
295            }
296        }
297    }
298    void Tormaavihuun(PhysicsObject pelaaja1, PhysicsObject vihu)
299    {
300        elamaLaskuri.Value -=1;
301    }
302    void tormaaammukseen(PhysicsObject vihu, PhysicsObject ammus)
303    {
304        vihunlaskuri.Value -= 1;
305    }
306    void vihunammusosuu(PhysicsObject ammus2, PhysicsObject kohde)
307    {
308       
309        if (kohde.Tag == "pelaaja1" || kohde.Tag == "taso" || kohde.Tag == "seina")
310        {
311            ammus2.Destroy();
312        }
313        if (kohde.Tag == "pelaaja1")
314        {
315            elamaLaskuri.Value -= 1;
316        }
317       
318       
319    }
320
321
322
323
324
325
326
327
328}
Note: See TracBrowser for help on using the repository browser.