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

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