source: 2016/30/TaavettiV/Street Alien Domination/Street Alien Domination/Street_Alien_Domination/Street_Alien_Domination.cs @ 8286

Revision 8286, 10.2 KB checked in by koannak, 3 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 Street_Alien_Domination : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    GameObject tahtain;
17    Image aseenkuva = LoadImage("parasase");
18    Image pelaajanKuva = LoadImage("pelityyppiparas");
19    Image tahtiKuva = LoadImage("tahti");
20
21    Image pompKuva = LoadImage("pomp");
22    Image asevihukuva = LoadImage("kesken");
23    Image tähtäinkuva = LoadImage("tähtäin");
24    Image vauvaBoss = LoadImage("bosspoop");
25    Image vihreaBossKuva = LoadImage("outohirvio");
26
27    Image knightkuva = LoadImage("knight");
28
29    SoundEffect maaliAani = LoadSoundEffect("maali");
30
31    int kenttaNumero = 4;
32
33
34    public override void Begin()
35    {
36        Window.Fullscreen = true;
37
38        ClearAll();
39        SmoothTextures = false;
40
41        PhysicsObject kissa = new PhysicsObject(40, 20);
42        kissa.Shape = Shape.Rectangle;
43        kissa.Mass = 10.0;
44        Add(kissa);
45
46        tahtain = new GameObject(40, 40);
47        tahtain.Image = tähtäinkuva;
48        Add(tahtain, 3);
49
50
51        Gravity = new Vector(0, -1000);
52
53        LuoKentta();
54        LisaaNappaimet();
55
56        Camera.Follow(pelaaja1);
57        Camera.ZoomFactor = 1.2;
58        Camera.StayInLevel = true;
59    }
60
61    void LuoKentta()
62    {
63        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNumero);
64        kentta.SetTileMethod('#', LisaaTaso);
65        kentta.SetTileMethod('*', LisaaTahti);
66        kentta.SetTileMethod('N', LisaaPelaaja);
67        kentta.SetTileMethod('p', LisaaOlio);
68        kentta.SetTileMethod('A', LisaaOlio2);
69        kentta.SetTileMethod('m', LisaaOlio3);
70        kentta.SetTileMethod('B', LisaaOlio4);
71        kentta.SetTileMethod('V', LisaaOlio5);
72        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
73        Level.CreateBorders();
74       
75        Level.Background.CreateGradient(Color.DarkRed,Color.LightBlue);
76    }
77
78    void LisaaTaso(Vector paikka, double leveys, double korkeus)
79    {
80        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
81        taso.Position = paikka;
82        taso.Color = Color.DarkBrown;
83        Add(taso);
84    }
85
86    void LisaaTahti(Vector paikka, double leveys, double korkeus)
87    {
88        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
89        tahti.IgnoresCollisionResponse = true;
90        tahti.Position = paikka;
91        tahti.Image = tahtiKuva;
92        tahti.Tag = "tahti";
93        Add(tahti);
94    }
95    void LisaaOlio(Vector paikka, double leveys, double korkeus)
96    {
97        PlatformCharacter p = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
98        p.Position = paikka;
99        p.Image = pompKuva;
100        Add(p);
101        p.Tag = "p";
102
103        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
104        tasoAivot.Speed = 100;
105
106        tasoAivot.FallsOffPlatforms = true;
107        tasoAivot.TriesToJump = true;
108
109        p.Brain = tasoAivot;
110
111    }
112
113    void LisaaOlio2(Vector paikka, double leveys, double korkeus)
114    {
115        PlatformCharacter asevihu = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
116        asevihu.Position = paikka;
117        asevihu.Image = asevihukuva;
118        Add(asevihu);
119        asevihu.Tag = "A";
120
121        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
122        tasoAivot.Speed = 100;
123
124        tasoAivot.FallsOffPlatforms = true;
125        tasoAivot.TriesToJump = true;
126
127        asevihu.Brain = tasoAivot;
128
129        asevihu.Weapon = new AssaultRifle(30, 10);
130        asevihu.Weapon.ProjectileCollision = VihuAmmusOsui;
131
132        Timer aikaLaskuri = new Timer();
133        aikaLaskuri.Interval = 2;
134        aikaLaskuri.Timeout += () => AmmuAseella(asevihu);
135        aikaLaskuri.Start();
136    }
137    void LisaaOlio3(Vector paikka, double leveys, double korkeus)
138    {
139        PlatformCharacter m = new PlatformCharacter(leveys * 0.9, korkeus * 0.9);
140        m.Position = paikka;
141        m.Image = knightkuva;
142        Add(m);
143        m.Tag = "m";
144
145        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
146        tasoAivot.Speed = 100;
147
148        tasoAivot.FallsOffPlatforms = true;
149        tasoAivot.TriesToJump = true;
150
151        m.Brain = tasoAivot;
152
153    }
154
155
156    void LisaaOlio4(Vector paikka, double leveys, double korkeus)
157    {
158        PlatformCharacter B = new PlatformCharacter(leveys * 1.0, korkeus * 1.0);
159        B.Position = paikka;
160        B.Image =vauvaBoss;
161        Add(B);
162        B.Tag = "B";
163
164        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
165        tasoAivot.Speed = 100;
166
167        tasoAivot.FallsOffPlatforms = true;
168        tasoAivot.TriesToJump = true;
169
170        B.Brain = tasoAivot;
171
172    }
173
174
175    void LisaaOlio5(Vector paikka, double leveys, double korkeus)
176    {
177        PlatformCharacter m = new PlatformCharacter(leveys * 2.9, korkeus * 2.9);
178        m.Position = paikka;
179        m.Image = vihreaBossKuva;
180        Add(m);
181        m.Tag = "m";
182
183        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
184        tasoAivot.Speed = 100;
185
186        tasoAivot.FallsOffPlatforms = true;
187        tasoAivot.TriesToJump = true;
188
189        m.Brain = tasoAivot;
190
191    }
192
193    void Tormaap(PhysicsObject pelaaja1, PhysicsObject p)
194    {
195        pelaaja1.Destroy();
196
197        Explosion rajahdys = new Explosion(50);
198        rajahdys.Position = p.Position;
199        Add(rajahdys);
200    }
201
202    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
203    {
204        pelaaja1 = new PlatformCharacter(leveys* 0.7, korkeus * 0.9);
205        pelaaja1.Position = paikka;
206        pelaaja1.Mass = 4.0;
207        pelaaja1.Tag = "pelaaja";
208        pelaaja1.Image = pelaajanKuva;
209        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
210        AddCollisionHandler(pelaaja1, "p", CollisionHandler.ExplodeBoth(999, true));
211        AddCollisionHandler(pelaaja1, "B", CollisionHandler.ExplodeBoth(999, true));
212        AddCollisionHandler(pelaaja1, "m", Tormaap);
213        Add(pelaaja1);
214
215
216
217        pelaaja1.Destroyed += pelinlopussa;
218       
219        pelaaja1.Weapon = new AssaultRifle(30, 10);
220        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
221        pelaaja1.Weapon.InfiniteAmmo = true;
222        pelaaja1.Weapon.Power.DefaultValue = 400;
223        pelaaja1.Weapon.AmmoIgnoresGravity = true;
224        pelaaja1.Weapon.AmmoIgnoresExplosions = true;
225        pelaaja1.Weapon.CanHitOwner = false;
226        pelaaja1.Weapon.Image = aseenkuva;
227        pelaaja1.Weapon.Y = 5;
228
229    }
230
231    void LisaaNappaimet()
232    {
233        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
234        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
235
236        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
237        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
238        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
239
240        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
241
242        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
243        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
244        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
245        //Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
246        Keyboard.Listen(Key.E, ButtonState.Pressed, HeitaKranaatti, "heitä kranaatti", pelaaja1);
247
248        Mouse.ListenMovement(0.0, KuunteleLiiketta, null);
249        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, null,pelaaja1);
250    }
251
252    void KuunteleLiiketta(AnalogState hiirenTila)
253    {
254        tahtain.Position = Mouse.PositionOnWorld;
255        pelaaja1.Weapon.AbsoluteAngle = (Mouse.PositionOnWorld - pelaaja1.Position).Angle;
256
257    }
258
259
260    void Liikuta(PlatformCharacter hahmo, double nopeus)
261    {
262        hahmo.Walk(nopeus);
263    }
264
265    void Hyppaa(PlatformCharacter hahmo, double nopeus)
266    {
267        hahmo.Jump(nopeus);
268    }
269
270    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
271    {
272        maaliAani.Play();
273        MessageDisplay.Add("Keräsit tähden!");
274        tahti.Destroy();
275    }
276    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
277    {
278        ammus.Destroy();
279
280        if (kohde.Tag.ToString() == "p")
281        {
282            kohde.Destroy();
283        }
284        if (kohde.Tag =="A")
285        {
286            kohde.Destroy();
287        }
288
289    }
290
291    void VihuAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
292    {
293        ammus.Destroy();
294        if (kohde.Tag == "pelaaja")
295        {
296            kohde.Destroy();
297        }
298    }
299
300    void AmmuAseella(PlatformCharacter pelaaja)
301    {
302        if (pelaaja.IsDestroyed) return;
303
304        PhysicsObject ammus = pelaaja.Weapon.Shoot();
305
306        if (ammus != null)
307        {
308            //ammus.Size *= 0.10;
309            ammus.Width = 20;
310            ammus.Height = 1;
311            //ammus.Image = ...
312            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
313        }
314
315       
316 
317    }
318    void HeitaKranaatti(PlatformCharacter pelaaja)
319    {
320        if (pelaaja.IsDestroyed) return;
321
322        Grenade kranu = new Grenade(3.0);
323        pelaaja1.Throw(kranu, Angle.FromDegrees(50), 10000);
324
325        kranu.Explosion.AddShockwaveHandler("A", KranaattiOsui);
326
327        kranu.Explosion.AddShockwaveHandler("p", KranaattiOsui);
328    }
329    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
330    {
331        rajahdyksenKohde.Destroy();
332    }
333
334   void pelinlopussa()
335    {
336        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Lopeta");
337        Add(alkuValikko);
338
339        alkuValikko.AddItemHandler(0, Begin);
340        alkuValikko.AddItemHandler(1, Exit);
341    }
342}
343
344
Note: See TracBrowser for help on using the repository browser.