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

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