source: 2015/26/EmilK/Tasohyppelypeli2/Tasohyppelypeli2/Tasohyppelypeli2/Desert Fury.cs @ 6169

Revision 6169, 8.3 KB checked in by iisaaira, 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 Tasohyppelypeli2 : PhysicsGame
10{
11    const double nopeus = 900;
12    const double hyppyNopeus = 1150;
13    const int RUUDUN_KOKO = 49;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vihollinen;
17
18
19
20    Image pelaajanKuva = LoadImage("Auto ajaa 1");
21    Image tahtiKuva = LoadImage("tahti");
22    Image vihollisenKuva = LoadImage("eka bossi");
23    Image bossinkuva = LoadImage("eka bossi");
24    Image ammuksenKuva = LoadImage("Ammus");
25    Image kranunKuva = LoadImage("kranaattikeihäs");
26
27    Image taustakuva = LoadImage("Tausta 1");
28
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30
31
32
33    public override void Begin()
34    {
35        IsMouseVisible = true;
36        Gravity = new Vector(0, -1000);
37
38        LuoKentta();
39        LisaaNappaimet();
40
41        Camera.Follow(pelaaja1);
42        Camera.ZoomFactor = 1.2;
43        Camera.StayInLevel = true;
44
45        MediaPlayer.Play("musa1");
46        MediaPlayer.IsRepeating = true;
47    }
48
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('H', LisaaVihollinen);
58        kentta.SetTileMethod('h', LisaaToinenVihollinen);
59        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
60        Level.CreateBorders();
61        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
62        Level.Background.Image = taustakuva;
63    }
64
65
66
67
68
69    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
70    {
71        vihollinen = new PlatformCharacter(leveys * 5.5, korkeus * 2.6);
72        vihollinen.Position = paikka;
73        vihollinen.Mass = 4.0;
74        vihollinen.Image = vihollisenKuva;
75        Add(vihollinen);
76
77        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
78        tasoAivot.Speed = 100;
79
80
81       
82
83        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
84
85        seuraajanAivot.Speed = 1800;                 // Millä nopeudella kohdetta seurataan
86        seuraajanAivot.DistanceFar = 1200;           // Etäisyys jolla aletaan seurata kohdetta
87        seuraajanAivot.DistanceClose = 00;         // Etäisyys jolloin ollaan lähellä kohdetta
88        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
89        seuraajanAivot.FarBrain = tasoAivot ;   // Käytetään satunnaisaivoja kun ollaan kaukana
90
91        //Aivot käyttöön oliolle
92        vihollinen.Brain = seuraajanAivot;
93    }
94
95
96 
97
98    void LisaaToinenVihollinen(Vector paikka, double leveys, double korkeus)
99    {
100        vihollinen = new PlatformCharacter(leveys * 2, korkeus * 2);
101        vihollinen.Position = paikka;
102        vihollinen.Mass = 4.0;
103        vihollinen.Image = tahtiKuva;
104        Add(vihollinen);
105
106        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
107        tasoAivot.Speed = 100;
108
109
110
111
112        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
113
114        seuraajanAivot.Speed = 800;                 // Millä nopeudella kohdetta seurataan
115        seuraajanAivot.DistanceFar = 500;           // Etäisyys jolla aletaan seurata kohdetta
116        seuraajanAivot.DistanceClose = 00;         // Etäisyys jolloin ollaan lähellä kohdetta
117        seuraajanAivot.StopWhenTargetClose = true;  // Pysähdytään kun ollaan lähellä kohdetta
118        seuraajanAivot.FarBrain = tasoAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
119
120        //Aivot käyttöön oliolle
121        vihollinen.Brain = seuraajanAivot;
122
123    }
124
125    void LisaaTaso(Vector paikka, double leveys, double korkeus)
126    {
127        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
128        taso.Position = paikka;
129        taso.Color = Color.Green;
130        Add(taso);
131    }
132
133    void LisaaTahti(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
136        tahti.IgnoresCollisionResponse = true;
137        tahti.Position = paikka;
138        tahti.Image = tahtiKuva;
139        tahti.Tag = "tahti";
140        Add(tahti);
141    }
142
143    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
144    {
145        pelaaja1 = new PlatformCharacter(leveys * 5.5, korkeus * 2.6);
146        pelaaja1.Position = paikka;
147        pelaaja1.Mass = 4.0;
148        pelaaja1.Tag = "pelaaja";
149        pelaaja1.Image = pelaajanKuva;
150        pelaaja1.CollisionIgnoreGroup = 1;
151        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
152        Add(pelaaja1);
153        //pelaaja1 on PlatformCharacter-tyyppinen
154        pelaaja1.Weapon = new AssaultRifle(30, 10);
155
156        //Ammusten määrä aluksi:
157        pelaaja1.Weapon.Ammo.Value = 100;
158
159        //Mitä tapahtuu kun ammus osuu johonkin?
160        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
161
162    }
163
164    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
165    {
166        ammus.Destroy();
167    }
168
169    void AmmuAseella(PlatformCharacter pelaaja)
170    {
171        PhysicsObject ammus = pelaaja.Weapon.Shoot();
172        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella");
173
174        if (ammus != null)
175        {
176            ammus.Size *= 1;
177            ammus.Image = ammuksenKuva;
178            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
179        }
180    }
181
182    void Tahtaa(AnalogState hiirenLiike)
183    {
184        Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Weapon.AbsolutePosition).Normalize();
185        pelaaja1.Weapon.Angle = suunta.Angle;
186    }
187
188    void LisaaNappaimet()
189    {
190        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
191        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
192        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
193
194        Keyboard.Listen(Key.Q, ButtonState. Pressed, HeitaKranaatti, "Heita", pelaaja1);
195
196        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
197        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
198        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
199
200        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
201
202        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
203        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
204        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
205
206
207        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
208    }
209
210    void Liikuta(PlatformCharacter hahmo, double nopeus)
211    {
212        hahmo.Walk(nopeus);
213    }
214
215    void Hyppaa(PlatformCharacter hahmo, double nopeus)
216    {
217        hahmo.Jump(nopeus);
218    }
219
220    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
221    {
222        maaliAani.Play();
223        MessageDisplay.Add("Keräsit tähden!");
224        tahti.Destroy();
225    }
226
227    //Grenade kranaatti = new Grenade(4.0);
228
229    void HeitaKranaatti(PlatformCharacter pelaaja)
230    {
231
232        Grenade kranu = new Grenade(5.0);
233        kranu.CollisionIgnoreGroup = 1;
234        kranu.Position = pelaaja.Position;
235        kranu.Hit((Mouse.PositionOnWorld - pelaaja.Position).Angle.GetVector() * 45000);
236        Add(kranu);
237        //pelaaja.Throw(kranu, Angle.FromDegrees(13), 60000);
238
239        kranu.Image = kranunKuva;
240
241        kranu.Explosion.ShockwaveReachesObject += KranaattiOsui;
242        kranu.Explosion.AddShockwaveHandler("vihollinen", KranaattiOsui);
243
244        AddCollisionHandler(kranu, kranutörmää);
245
246        Keyboard.Disable(Key.Q);
247        Timer.SingleShot(1.5, delegate { Keyboard.Enable(Key.Q); });
248    }
249
250    void kranutörmää(PhysicsObject kranu, PhysicsObject kohde)
251    {
252        ((Grenade)kranu).Explode();
253    }
254
255    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
256    {
257        rajahdyksenKohde.Destroy();
258    }
259
260}
Note: See TracBrowser for help on using the repository browser.