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

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