source: 2011/24/OttoH/stickOps/stickOps/stickOps/Peli.cs @ 2428

Revision 2428, 9.7 KB checked in by oteehann, 8 years ago (diff)

yritin saada viholliset ampumaan

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter vastustaja1;
17    PlatformCharacter vastustaja2;
18    PlatformCharacter maali;
19    PlatformCharacter koriste;
20
21    Image pelaajanKuva = LoadImage("tikku");
22    //Image heittajanKuvat;//LoadImages("tikku");
23    Image heittajanKuvatPeilattu;
24    Image vastustajanKuva = LoadImage("puukottaja");
25    Image vastustajanKuvaPeilattu;
26    Image maaliKuva = LoadImage("BOOM");
27    Image koristeKuva = LoadImage("Ammuksia(koriste)");
28    Image vastustajan2Kuva = LoadImage("Sniputyyppi");
29    Image vastustajan2KuvaPeilattu;
30
31
32    public override void Begin()
33    {
34        ClearAll();
35        heittajanKuvatPeilattu = Image.Mirror(pelaajanKuva);
36        //pelaaja1.LeftIdleAnimation = new Animation(heittajanKuvatPeilattu);
37        vastustajanKuvaPeilattu = Image.Mirror(vastustajanKuva);
38        vastustajan2KuvaPeilattu = Image.Mirror(vastustajan2Kuva);
39
40
41        Gravity = new Vector(0,-1100);
42
43        luoKentta();
44        lisaaNappaimet();
45
46        Camera.Follow(pelaaja1);
47        Camera.ZoomFactor = 1.2;
48        Camera.StayInLevel = true;
49    }
50
51    void luoKentta()
52    {
53        TileMap kentta = TileMap.FromFile("kentta1.txt");
54        kentta['#'] = lisaaTaso;
55        kentta['N'] = lisaaPelaaja;
56        kentta['W'] = lisaaVastustaja;
57        kentta['X'] = lisaaVastustaja2;
58        kentta['B'] = lisaaMaali;
59        kentta['A'] = lisaaKoriste;
60        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
63
64        foreach (PhysicsObject vastustaja in vastustajat)
65        {
66               
67            if (vastustaja.Brain is FollowerBrain)
68            {
69                FollowerBrain aivo = (FollowerBrain)vastustaja.Brain;
70                aivo.Target = pelaaja1;
71            }
72        }
73    }
74
75    PhysicsObject lisaaKoriste()
76    {
77        koriste = new PlatformCharacter(120, 120);
78        koriste.Mass = 9000.0;
79        koriste.Image = koristeKuva;
80        return koriste;
81    }
82
83    PhysicsObject lisaaMaali()
84    {
85        maali = new PlatformCharacter (120,100);
86        maali.Mass = 9000.0;
87        maali.Image = maaliKuva;
88        return maali;
89    }
90
91
92    PhysicsObject lisaaTaso()
93    {
94        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
95        taso.Color = Color.Green;
96        return taso;
97    }
98
99
100
101    PlatformCharacter lisaaPelaaja()
102    {
103        pelaaja1 = new PlatformCharacter(60, 60);
104        pelaaja1.Mass = 20.0;
105        pelaaja1.Image = pelaajanKuva;
106        pelaaja1.Tag = "hyvis";
107        pelaaja1.Weapon = new AssaultRifle(40, 20);
108        pelaaja1.Weapon.Ammo.Value = 9000000;
109        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
110        pelaaja1.Weapon.X = 0;
111        pelaaja1.Weapon.Y = -10;
112        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
113
114
115        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKuva);
116        pelaaja1.LeftWalkingAnimation = new Animation(heittajanKuvatPeilattu);
117
118        return pelaaja1;
119    }
120
121   
122    void AmmuAseella()
123    {
124        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
125
126        if (ammus != null)
127        {
128            ammus.Size *= 1;
129            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.3);
130            AddCollisionHandler(ammus, vastustaja1Kuoli);
131            AddCollisionHandler(ammus, vastustaja2Kuoli);
132
133        }
134
135    }
136
137    void tahtaaylos()
138    {
139        if (pelaaja1.FacingDirection == Direction.Right)
140        {
141            pelaaja1.Weapon.Angle += Angle.FromDegrees(5.0);
142        }
143
144        if (pelaaja1.FacingDirection == Direction.Left)
145        {
146            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5.0);
147        }
148    }
149
150    void tahtaaalas()
151    {
152        if (pelaaja1.FacingDirection == Direction.Right)
153        {
154            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5.0);
155        }
156
157        if (pelaaja1.FacingDirection == Direction.Left)
158        {
159            pelaaja1.Weapon.Angle += Angle.FromDegrees(5.0);
160        }
161    }
162
163    void vastustaja1Kuoli(PhysicsObject ammus, PhysicsObject kohde)
164    {
165        if (kohde.Tag.ToString() == "vihu")
166        {
167            kohde.Destroy();
168        }
169    }
170
171    void vastustaja2Kuoli(PhysicsObject ammus, PhysicsObject kohde)
172    {
173        if (kohde.Tag.ToString() == "vihu2")
174        {
175            kohde.Destroy();
176        }
177    }
178
179    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
180    {
181        if (kohde.Tag.ToString() == "vihu" || kohde.Tag.ToString() == "vihu2")
182        {
183            ammus.Destroy();
184            Explosion rajahdys = new Explosion(15);
185            rajahdys.Position = ammus.Position;
186            Add(rajahdys);
187        }
188
189        if (kohde == pelaaja1)
190        {
191            pelaaja1.Stop();
192            pelaaja1.Destroy();
193        }
194    }
195
196    PlatformCharacter lisaaVastustaja2()
197    {
198        vastustaja2 = new PlatformCharacter(60, 60);
199        vastustaja2.Mass = 20.0;
200        vastustaja2.Image = vastustajan2Kuva;
201        vastustajat.Add(vastustaja2);
202        vastustaja2.Tag = "vihu2";
203
204        vastustaja2.Weapon = new AssaultRifle(40, 20);
205        vastustaja2.Weapon.Ammo.Value = 100;
206        vastustaja2.Weapon.X = 0;
207        vastustaja2.Weapon.Y = -10;
208        vastustaja2.Weapon.ProjectileCollision = AmmusOsui;
209
210        Timer ampumaAjastin = new Timer();
211        ampumaAjastin.Interval = 2.0;
212        ampumaAjastin.Trigger += vihollinenAmpuu;
213        ampumaAjastin.Tag = vastustaja2;
214        ampumaAjastin.Start();
215
216        vastustaja2.RightWalkingAnimation = new Animation(vastustajan2Kuva);
217        vastustaja2.LeftWalkingAnimation = new Animation(vastustajan2KuvaPeilattu);
218       
219        return vastustaja2;
220    }
221
222    void ammuAseella()
223    {
224
225        PhysicsObject ammus = vastustaja2.Weapon.Shoot();
226       
227
228        if (ammus != null)
229        {
230            ammus.Size *= 1;
231            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.3);
232            AddCollisionHandler(ammus, vastustaja2Osui);
233        }
234    }
235
236
237    void vihollinenAmpuu(Timer ampumaAjastin)
238    {
239        PlatformCharacter vastustaja2 = ampumaAjastin.Tag as PlatformCharacter;
240
241        Vector.ampumaSuunta = (pelaaja1.Position - vastustaja2.Position).Normalize();
242        vastustaja2.Weapon.Angle = ampumaSuunta.Angle;
243
244        PhysicsObject vihu = ampumaAjastin.Tag as PhysicsObject;
245
246        PhysicsObject ammus = vastustaja2.Weapon.Shoot();
247
248        if (ammus != null)
249        {
250            ammus.Size *= 1;
251            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.3);
252            ammus.IgnoresGravity = true;
253        }
254    }
255
256    void vastustaja2Osui(PhysicsObject vastustaja2, PhysicsObject kohde)
257    {
258        if (kohde == pelaaja1)
259        {
260            vastustaja2.Stop();
261            vastustaja2.Brain.Active = false;
262
263            pelaaja1.Stop();
264            pelaaja1.Destroy();
265        }
266    }
267   
268    List<PhysicsObject> vastustajat = new List<PhysicsObject>();
269
270    PlatformCharacter lisaaVastustaja()
271    {
272        vastustaja1 = new PlatformCharacter(60, 60);
273        vastustaja1.Mass = 10.0;
274        vastustaja1.Image = vastustajanKuva;
275        vastustaja1.RightWalkingAnimation = new Animation(vastustajanKuvaPeilattu);
276        vastustaja1.LeftWalkingAnimation = new Animation(vastustajanKuva);
277        vastustaja1.Tag = "vihu";
278        vastustajat.Add(vastustaja1);
279
280        FollowerBrain seuraajanAivot = new FollowerBrain();
281        seuraajanAivot.Speed = 150;
282        seuraajanAivot.TargetFollowDistance = 600;
283        seuraajanAivot.TargetCloseDistance = 200;
284        vastustaja1.Brain = seuraajanAivot;
285
286        AddCollisionHandler(vastustaja1, KasitteleVastustajanTormaus);
287
288        return vastustaja1;
289
290    }
291
292    void KasitteleVastustajanTormaus(PhysicsObject vastustaja1, PhysicsObject kohde)
293    {
294        if (kohde == pelaaja1)
295        {
296            pelaaja1.Destroy();
297            Begin();
298
299        }
300    }
301
302   
303
304   
305
306    void lisaaNappaimet()
307    {
308        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
309        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
310
311        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
312        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
313        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
314
315        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
316
317        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
318        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
319        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
320        Keyboard.Listen(Key.W, ButtonState.Down, tahtaaylos, "Säädä aseen kulmaa");
321        Keyboard.Listen(Key.S, ButtonState.Down, tahtaaalas, "Säädä aseen kulmaa");
322    }
323
324    void liikuta(PlatformCharacter hahmo, double nopeus)
325    {
326        hahmo.Walk(nopeus);
327    }
328
329    void hyppaa(PlatformCharacter hahmo, double nopeus)
330    {
331        hahmo.Jump(nopeus);
332    }
333}
Note: See TracBrowser for help on using the repository browser.