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

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