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

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