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

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