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

Revision 2098, 8.9 KB checked in by oteehann, 8 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 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, -1050);
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 *= 5;
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        ammus.Destroy();
182        Explosion rajahdys = new Explosion(15);
183        rajahdys.Position = ammus.Position;
184        Add(rajahdys);
185    }
186
187    PlatformCharacter lisaaVastustaja2()
188    {
189        vastustaja2 = new PlatformCharacter(60, 60);
190        vastustaja2.Mass = 20.0;
191        vastustaja2.Weapon = new AssaultRifle(40, 20);
192        vastustaja2.Weapon.Ammo.Value = 100;
193        vastustaja2.Weapon.ProjectileCollision = ammusOsui;
194        vastustaja2.Weapon.X = 0;
195        vastustaja2.Weapon.Y = -10;
196        vastustaja2.Image = vastustajan2Kuva;
197        vastustaja2.Tag = "vihu2";
198        vastustajat.Add(vastustaja2);
199        return vastustaja2;
200    }
201
202    void ammuAseella()
203    {
204        PhysicsObject ammus = vastustaja2.Weapon.Shoot();
205       
206        Timer ajastin = new Timer();
207        ajastin.Interval = 1.0;
208        ajastin.Trigger += ammuHyvis;
209        ajastin.Start();
210
211        if (ammus != null)
212        {
213            ammus.Size *= 5;
214            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.3);
215            AddCollisionHandler(ammus, pelaaja1Kuoli);
216        }
217    }
218
219    void ammuHyvis( Timer sender)
220    {
221        Vector suunta = (pelaaja1.Position - vastustaja2.Position).Normalize();
222        vastustaja2.Angle = suunta.Angle;
223    }
224
225    void pelaaja1Kuoli(PhysicsObject ammus, PhysicsObject kohde)
226    {
227        if (kohde.Tag.ToString() == "hyvis")
228        {
229            kohde.Destroy();
230        }
231    }
232
233    void ammusOsui(PhysicsObject ammus, PhysicsObject kohde)
234    {
235        ammus.Destroy();
236        Explosion rajahdys = new Explosion(10);
237        rajahdys.Position = ammus.Position;
238        Add(rajahdys);
239    }
240
241
242    List<PhysicsObject> vastustajat = new List<PhysicsObject>();
243
244    PlatformCharacter lisaaVastustaja()
245    {
246        vastustaja1 = new PlatformCharacter(60, 60);
247        vastustaja1.Mass = 10.0;
248        vastustaja1.Image = vastustajanKuva;
249        vastustaja1.RightWalkingAnimation = new Animation(vastustajanKuvaPeilattu);
250        vastustaja1.LeftWalkingAnimation = new Animation(vastustajanKuva);
251        vastustaja1.Tag = "vihu";
252        vastustajat.Add(vastustaja1);
253
254        FollowerBrain seuraajanAivot = new FollowerBrain();
255        seuraajanAivot.Speed = 150;
256        seuraajanAivot.TargetFollowDistance = 600;
257        seuraajanAivot.TargetCloseDistance = 200;
258        vastustaja1.Brain = seuraajanAivot;
259
260        AddCollisionHandler(vastustaja1, KasitteleVastustajanTormaus);
261
262        return vastustaja1;
263
264    }
265
266    void KasitteleVastustajanTormaus(PhysicsObject vastustaja1, PhysicsObject kohde)
267    {
268        if (kohde == pelaaja1)
269        {
270            pelaaja1.Destroy();
271            Begin();
272
273        }
274    }
275
276   
277
278   
279       
280   
281
282    void lisaaNappaimet()
283    {
284        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
285        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
286
287        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
288        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
289        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
290
291        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
292
293        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
294        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
295        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
296        Keyboard.Listen(Key.W, ButtonState.Down, tahtaaylos, "Säädä aseen kulmaa");
297        Keyboard.Listen(Key.S, ButtonState.Down, tahtaaalas, "Säädä aseen kulmaa");
298    }
299
300    void liikuta(PlatformCharacter hahmo, double nopeus)
301    {
302        hahmo.Walk(nopeus);
303    }
304
305    void hyppaa(PlatformCharacter hahmo, double nopeus)
306    {
307        hahmo.Jump(nopeus);
308    }
309}
Note: See TracBrowser for help on using the repository browser.