source: 2011/26/RistoR/ding/ding/ding/Peli.cs @ 2377

Revision 2377, 11.3 KB checked in by riroos, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class zombi : PhysicsObject
10{
11    public int elamat = 3;
12    public zombi(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15    }
16
17}
18public class Peli : PhysicsGame
19{
20    const double nopeus = 250;
21    const double hyppyNopeus = 1000;
22    const int RUUDUN_KOKO = 40;
23    PlatformCharacter pelaaja1;
24    List<Label> valikonKohdat;
25
26    Image paavalikko = LoadImage("paavalikko");
27    Image pelaajanKuva = LoadImage("pelaaja");
28    Image tahtiKuva = LoadImage("tahti");
29    Image zombikuva = LoadImage("zombikuva");
30    Image pistooli = LoadImage("pistooli");
31    Image maalinkuva = LoadImage("maalinkuva");
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34
35    public override void Begin()
36    {
37        Gravity = new Vector(0, -900);
38
39        luoKentta();
40        luolaskuri();
41        lisaaNappaimet();
42        luopallo();
43        ase();
44        valikko();
45        Camera.Follow(pelaaja1);
46        Camera.ZoomFactor = 1.2;
47        Camera.StayInLevel = true;
48    }
49    void luoKentta()
50    {
51        TileMap kentta = TileMap.FromFile("kentta1.txt");
52        kentta['#'] = lisaaTaso;
53        kentta['*'] = lisaaTahti;
54        kentta['N'] = lisaaPelaaja;
55        kentta['D'] = lisaavaara;
56        kentta['Z'] = lisaazombi;
57        kentta['M'] = lisaamaali;
58        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.CreateStars(500);
61    }
62    PhysicsObject lisaaTaso()
63    {
64        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
65        taso.Color = Color.DarkGray;
66        return taso;
67    }
68    PhysicsObject lisaaTahti()
69    {
70        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
71        tahti.Image = tahtiKuva;
72        tahti.Tag = "tahti";
73        return tahti;
74    }
75    PlatformCharacter lisaaPelaaja()
76    {
77        pelaaja1 = new PlatformCharacter(40, 40);
78        pelaaja1.Mass = 4.0;
79        pelaaja1.Image = pelaajanKuva;
80        AddCollisionHandler(pelaaja1, Tormayshallitsija);
81        return pelaaja1;
82    }
83    PhysicsObject lisaavaara()
84    {
85        PhysicsObject vaara = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
86        vaara.Color = Color.YellowGreen;
87        vaara.Tag = "vaara";
88
89        return vaara;
90    }
91    PhysicsObject lisaamaali()
92    {
93        PhysicsObject maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
94        maali.Image = maalinkuva;
95        maali.Mass = 4.0;
96        AddCollisionHandler(maali, MaaliinOsuma);
97        return maali;
98
99    }
100    void MaaliinOsuma(PhysicsObject maali, PhysicsObject kohde)
101    {
102        if (kohde == pelaaja1)
103        {
104            ClearAll();
105            Voitto();
106
107        }
108    }
109    zombi lisaazombi()
110    {
111        zombi zombi = new zombi(40.0, 40.0);
112        FollowerBrain zombiaivot = new FollowerBrain();
113        zombi.Brain = zombiaivot;
114        zombiaivot.Active = true;
115        zombi.Image = zombikuva;
116        zombi.Mass = 4.0;
117        zombi.Color = Color.DarkGreen;
118        zombiaivot.Target = pelaaja1;
119        zombiaivot.Speed = 150;
120        zombi.Tag = "zombi";
121        return zombi;
122        {
123
124        }
125
126    }
127    void lisaaNappaimet()
128    {
129        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
130        Keyboard.Listen(Key.Escape, ButtonState.Pressed, valikko, "Palaa valikkoon");
131
132        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
133        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
134        Keyboard.Listen(Key.Space, ButtonState.Down, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
135        Keyboard.Listen(Key.Down, ButtonState.Down, AmmuAseella, "Ammu");
136        Keyboard.Listen(Key.W, ButtonState.Down, kaannaasettaylos, "Käännä asetta ylös");
137        Keyboard.Listen(Key.S, ButtonState.Down, kaannaasettaalas, "Käännä asetta alas");
138        Keyboard.Listen(Key.Up, ButtonState.Pressed, HeitaKranaatti, "Heitä kranaatti");
139        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
140
141        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
142        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
143        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
144    }
145    void liikuta(PlatformCharacter hahmo, double nopeus)
146    {
147        hahmo.Walk(nopeus);
148    }
149    void hyppaa(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Jump(nopeus);
152    }
153    void Tormayshallitsija(PhysicsObject hahmo, PhysicsObject kohde)
154    {
155        if (kohde.Tag.ToString() == "tahti")
156        {
157            maaliAani.Play();
158            pistelaskuri.Value += 1;
159            kohde.Destroy();
160        }
161        if (kohde.Tag.ToString() == "vaara")
162        {
163            pelaaja1.Destroy();
164            pistelaskuri.Reset();
165            MessageDisplay.Add("Kuolit, aloita alusta.");
166            MessageDisplay.TextColor = Color.Yellow;
167            MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
168
169        }
170        if (kohde.Tag.ToString() == "zombi")
171        {
172            pelaaja1.Destroy();
173            pistelaskuri.Reset();
174            MessageDisplay.Add("Kuolit, aloita alusta.");
175            MessageDisplay.TextColor = Color.Yellow;
176            MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
177        }
178
179    }
180    void luopallo()
181    {
182        PhysicsObject pallo = new PhysicsObject(60.0, 60.0);
183        pallo.Shape = Shape.Circle;
184        pallo.Mass = 10.0;
185        pallo.X = -2750;
186        pallo.Y = -10;
187
188        pallo.Color = Color.DarkGreen;
189        Add(pallo);
190    }
191    void ase()
192    {
193        pelaaja1.Weapon = new AssaultRifle(25, 25);
194        AssaultRifle pyssy = new AssaultRifle(25, 25);
195        pyssy.Image = pistooli;
196        pyssy.ProjectileCollision = AmmusOsui;
197        pyssy.X = pelaaja1.X += 50;
198        pyssy.Ammo.Value = 500;
199        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
200    }
201    void AmmuAseella()
202    {
203        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
204        if (ammus != null)
205        {
206            ammus.Size *= 1;
207        }
208    }
209    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
210    {
211        ammus.Destroy();
212        Explosion rajahdys = new Explosion(10);
213        rajahdys.Position = ammus.Position;
214        Add(rajahdys);
215        if (kohde.Tag.ToString() == "zombi")
216        {
217            zombi vihu = kohde as zombi;
218            vihu.elamat -= 1;
219            if (vihu.elamat == 0)
220            {
221                vihu.Destroy();
222                pistelaskuri.Value += 1;
223            }
224        }
225
226    }
227    void kaannaasettaylos()
228    {
229        if (pelaaja1.FacingDirection == Direction.Right)
230        {
231            pelaaja1.Weapon.Angle += Angle.FromDegrees(5);
232        }
233        if (pelaaja1.FacingDirection == Direction.Left)
234        {
235            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5);
236        }
237    }
238    void kaannaasettaalas()
239    {
240        if (pelaaja1.FacingDirection == Direction.Right)
241        {
242            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5);
243        }
244        if (pelaaja1.FacingDirection == Direction.Left)
245        {
246            pelaaja1.Weapon.Angle += Angle.FromDegrees(5);
247        }
248
249    }
250    void HeitaKranaatti()
251    {
252
253        Grenade kranaatti = new Grenade(4.0);
254        kranaatti.X = pelaaja1.X + 10;
255        kranaatti.Y = pelaaja1.Y + 10;
256        Add(kranaatti);
257        Vector heittoVoima = Vector.FromLengthAndAngle(4000, pelaaja1.Weapon.Angle);
258        kranaatti.Hit(heittoVoima);
259    }
260    IntMeter pistelaskuri;
261    void luolaskuri()
262    {
263        pistelaskuri = new IntMeter(0);
264
265        Label pisteNaytto = new Label();
266        pisteNaytto.X = Screen.Left + 100;
267        pisteNaytto.Y = Screen.Top - 100;
268        pisteNaytto.TextColor = Color.Turquoise;
269
270        pisteNaytto.BindTo(pistelaskuri);
271        Add(pisteNaytto);
272
273        Label pisteTeksti = new Label("Pisteitä: ");
274        pisteTeksti.X = Screen.Left + 50;
275        pisteTeksti.Y = Screen.Top - 100;
276        pisteTeksti.TextColor = Color.SkyBlue;
277        Add(pisteTeksti);
278        pistelaskuri.Value++;
279        pistelaskuri.Value += 1;
280        pistelaskuri.Value = pistelaskuri.Value + 1;
281        pistelaskuri.Reset();
282        IntMeter laskuri = new IntMeter(0);
283        laskuri.MaxValue = 5;
284        laskuri.UpperLimit += laskuriYlarajassa;
285    }
286    void laskuriYlarajassa(int arvo)
287    {
288        MessageDisplay.TextColor = Color.White;
289        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
290    }
291    void valikko()
292    {
293        ClearAll();
294        Level.Background.Image ("paavalikko");
295        valikonKohdat = new List<Label>();
296
297        Label kohta1 = new Label("Aloita uusi peli");
298        kohta1.Position = new Vector(0, 40);
299        valikonKohdat.Add(kohta1);
300
301        Label kohta2 = new Label("Lopeta");
302        kohta2.Position = new Vector(0, -40);
303        valikonKohdat.Add(kohta2);
304
305        foreach (Label valikonKohta in valikonKohdat)
306        {
307            Add(valikonKohta);
308        }
309
310        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
311        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
312
313        Mouse.IsCursorVisible = true;
314        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
315        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
316    }
317
318    void ValikossaLiikkuminen(AnalogState hiirenTila)
319    {
320        foreach (Label kohta in valikonKohdat)
321        {
322            if (Mouse.IsCursorOn(kohta))
323            {
324                kohta.TextColor = Color.Red;
325            }
326            else
327            {
328                kohta.TextColor = Color.Black;
329            }
330
331        }
332    }
333    void AloitaPeli()
334    {
335        ClearAll();
336        Gravity = new Vector(0, -900);
337        luoKentta();
338        luolaskuri();
339        lisaaNappaimet();
340        luopallo();
341        ase();
342        Camera.Follow(pelaaja1);
343        Camera.ZoomFactor = 1.2;
344        Camera.StayInLevel = true;
345        Keyboard.Listen(Key.Escape, ButtonState.Pressed, valikko, "Palaa valikkoon");
346    }
347    void Voitto()
348    {
349        Label nappi = new Label("Aloita uusi peli");
350        nappi.Position = new Vector(0, 40);
351        valikonKohdat.Add(nappi);
352
353        Label nappi2 = new Label("Lopeta");
354        nappi2.Position = new Vector(0, -40);
355        valikonKohdat.Add(nappi2);
356        foreach (Label valikonKohta in valikonKohdat)
357        {
358            Add(valikonKohta);
359        }
360
361        Mouse.ListenOn(nappi, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
362        Mouse.ListenOn(nappi2, MouseButton.Left, ButtonState.Pressed, Exit, null);
363
364        Mouse.IsCursorVisible = true;
365        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
366        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
367
368    }
369}
Note: See TracBrowser for help on using the repository browser.