source: 2015/koodauskerho/AarreP/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 8393

Revision 8393, 8.5 KB checked in by jotapoti, 3 years ago (diff)

pommi

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("originalhahmo");
18    Image kukkaKuva = LoadImage("ampujakukka");
19    Image tahtiKuva = LoadImage("sydansydan");
20    Image vihuKuva = LoadImage("originalvihu");
21    Image KuolemaKuva = LoadImage("kuolema");
22    Image AmpujaKuva = LoadImage("ampujahahmo");
23    Image pommiKuva = LoadImage("pommi");
24    Image[] animaatioKuvat = LoadImages("originalhahmo", "hahmosydan","hahmosyosydan");
25    Image[] animaatioKuvat2 = LoadImages("originalhahmo","originalhahmokävely1");
26    Image ammuttuvihuKuva = LoadImage("ammuttuvihu");
27    Image ammusKuva = LoadImage("ammushahmo");
28    Image rakettikukkaKuva = LoadImage("rakettikukka");
29    Image rakettihahmoKuva = LoadImage("rakettihahmo");
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    bool omistaaRakettirepun = false;
33 
34        AssaultRifle pelaajan1Ase;
35
36            //...
37        public override void Begin()
38    {
39        Gravity = new Vector(0, -1000);
40
41        LuoKentta();
42        LisaaNappaimet();
43
44        Camera.Follow(pelaaja1);
45        Camera.ZoomFactor = 1.2;
46        Camera.StayInLevel = true;
47
48        MediaPlayer.Play("musa");
49        MediaPlayer.IsRepeating = true;
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('v', LisaaVihu);
59        kentta.SetTileMethod('A', LisaaKukka);
60        kentta.SetTileMethod('r', LisaaRakettiKukka);
61        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
62        Level.CreateBorders();
63        Level.Background.CreateGradient(Color.Red, Color.MidnightBlue);
64    }
65
66    void LisaaTaso(Vector paikka, double leveys, double korkeus)
67    {
68        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
69        taso.Position = paikka;
70        taso.Color = Color.Green;
71        Add(taso);
72    }
73
74    void LisaaTahti(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
77        tahti.IgnoresCollisionResponse = true;
78        tahti.Position = paikka;
79        tahti.Image = tahtiKuva;
80        tahti.Tag = "tahti";
81        Add(tahti);
82    }
83
84        void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
85    {
86        ammus.Destroy();
87        if (kohde.Tag.ToString() == "vihu")
88        {
89            AmpuuVihun(kohde);
90        }
91    }
92
93    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
94    {
95        pelaaja1 = new PlatformCharacter(50, 70);
96        pelaaja1.Position = paikka;
97        pelaaja1.Mass = 9.0;
98        pelaaja1.AnimWalk = new Animation(animaatioKuvat2);
99        pelaaja1.AnimWalk.FPS = 6;
100        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
101        pelaaja1.Image = pelaajanKuva;
102        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
103        AddCollisionHandler(pelaaja1, "vihu", TormaaVihuun);
104        AddCollisionHandler(pelaaja1, "Kukka", TormaaKukkaan);
105        AddCollisionHandler(pelaaja1, "rakettiKukka", TormaaRakettiKukkaan);
106        Add(pelaaja1);
107        pelaajan1Ase = new AssaultRifle(30, 10);
108
109    }
110    void LisaaVihu(Vector paikka, double leveys, double korkeus)
111    {
112        PlatformCharacter vihu = new PlatformCharacter(50, 70);
113        vihu.Position = paikka;
114        vihu.Mass = 9.0;
115        vihu.Image = vihuKuva;
116        vihu.Tag = "vihu";
117        Add(vihu);
118    }
119
120    void LisaaKukka(Vector paikka, double leveys, double korkeus)
121    {
122        PhysicsObject kukka = new PhysicsObject(50, 70);
123        kukka.Position = paikka;
124        kukka.Mass = 9.0;
125        kukka.Image = kukkaKuva;
126        kukka.Tag = "Kukka";
127        Add(kukka);
128    }
129
130    void LisaaRakettiKukka(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject kukka = new PhysicsObject(50, 70);
133        kukka.Position = paikka;
134        kukka.Mass = 9.0;
135        kukka.Image = rakettikukkaKuva;
136        kukka.Tag = "rakettiKukka";
137        Add(kukka);
138    }
139    void Tahtaa(AnalogState hiirenLiike)
140    {
141        Vector suunta = (Mouse.PositionOnWorld - pelaajan1Ase.AbsolutePosition).Normalize();
142        pelaajan1Ase.Angle = suunta.Angle;
143    }
144    void LisaaNappaimet()
145    {
146
147        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
148        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
149
150        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
151        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
152        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
153        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaajan1Ase);
154        Keyboard.Listen(Key.M, ButtonState.Down, Heitapommi, "heita", pelaaja1);
155
156        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
157
158        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
159        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
160        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161
162        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
163    }
164
165    void Liikuta(PlatformCharacter hahmo, double nopeus)
166    {
167        hahmo.Walk(nopeus);
168    }
169    void Hyppaa(PlatformCharacter rakettihahmo, double nopeus)
170    {
171        rakettihahmo.ForceJump(nopeus);
172    }
173
174    void RakettiHyppaa(PlatformCharacter hahmo, double nopeus)
175    {
176        hahmo.Jump(nopeus);
177    }
178
179    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
180    {
181        maaliAani.Play();
182        MessageDisplay.Add("Söit sydämen!");
183        tahti.Destroy();
184
185        if (omistaaRakettirepun==false)
186        {
187            Animation animaatio = new Animation(animaatioKuvat);
188            animaatio.FPS = 2;
189            pelaaja1.PlayAnimation(animaatio);
190        }
191        {
192            Animation animaatio = new Animation(animaatioKuvat2);
193            animaatio.FPS = 2;
194            pelaaja1.PlayAnimation(animaatio);
195        }
196
197    }
198 
199        void AmpuuVihun(PhysicsObject vihu)
200    {
201        maaliAani.Play();
202        MessageDisplay.Add("ammuit vihun");
203        vihu.Destroy();
204
205        //Animation animaatio = new Animation(animaatioKuvat);
206        //animaatio.FPS = 2;
207        //pelaaja1.PlayAnimation(animaatio);
208    }
209
210    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
211    {
212        maaliAani.Play();
213        MessageDisplay.Add("kuolit :(");
214        hahmo.Destroy();
215
216        PhysicsObject kuva = PhysicsObject.CreateStaticObject(500, 500);
217        kuva.Position = hahmo.Position;
218        kuva.Image = KuolemaKuva;
219        Add(kuva);
220    }
221    void TormaaKukkaan(PhysicsObject hahmo, PhysicsObject kukka)
222    {
223       // hahmo.Image = AmpujaKuva;
224
225        //Ammusten määrä aluksi:
226        pelaajan1Ase.Ammo.Value = 30;
227       
228        //Mitä tapahtuu kun ammus osuu johonkin?
229        pelaajan1Ase.ProjectileCollision = AmmusOsui;
230
231
232        pelaaja1.Add(pelaajan1Ase);
233        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
234    }
235    void TormaaRakettiKukkaan(PhysicsObject hahmo, PhysicsObject rakettikukka)
236    {
237        hahmo.Image = rakettihahmoKuva;
238        hahmo.Animation = new Animation(rakettihahmoKuva);
239        omistaaRakettirepun = true;
240
241    }
242    void AmmuAseella(AssaultRifle ase)
243    {
244        PhysicsObject ammus = ase.Shoot();
245       
246   
247
248        if (ammus != null)
249        {
250            ammus.Image = ammusKuva;
251            //ammus.Size *= 3;
252            //ammus.Image = ...
253            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
254        }
255    }
256    void Heitapommi(PlatformCharacter hahmo)
257    {
258        Grenade kranu = new Grenade(8.0);
259        kranu.Image = pommiKuva;
260        hahmo.Throw(kranu, Angle.FromDegrees(40), 10000);
261    }
262}
Note: See TracBrowser for help on using the repository browser.