source: 2013/23/LeoS/Tasohyppelypeli2.cs @ 3988

Revision 3987, 7.7 KB checked in by sijoseha, 7 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 Kytta : PlatformCharacter
10{
11    public IntMeter hpLaskuri;
12    public String alushousujenVari;
13   
14
15    public Kytta(double width, double height, int hp)
16        : base(width, height)
17    {
18        hpLaskuri = new IntMeter(hp, 0, hp);
19        hpLaskuri.LowerLimit += this.Destroy;
20        ProgressBar hpNaytto = new ProgressBar(this.Width, 5);
21        hpNaytto.BarColor = Color.Green;
22        hpNaytto.BindTo(hpLaskuri);
23        this.Add(hpNaytto);
24        hpNaytto.Position = new Vector(0, this.Height / 2 + 15);
25        //hpLaskuri.LowerLimit
26    }
27}
28
29public class Tasohyppelypeli2 : PhysicsGame
30{
31
32    PlatformCharacter snoopdogg;
33    Image olionkuva = LoadImage("snoop");
34
35    Image olionkuva2 = LoadImage("poliisi");
36    Image olionkuva3 = LoadImage("Copcar");
37    IntMeter elamat;
38    List<PushButton> potionit = new List<PushButton>();
39
40    public override void Begin()
41    {
42        LuoKentta();
43        Gravity = new Vector(0, -1000);
44        elamat = new IntMeter(4, 0, 4);
45        elamat.LowerLimit += delegate { snoopdogg.Destroy();};
46
47        ProgressBar elamaPalkki = new ProgressBar(150, 20);
48        elamaPalkki.Left = Screen.Left + 10;
49        elamaPalkki.Top = Screen.Top - 10;
50        elamaPalkki.BindTo(elamat);
51        elamaPalkki.Color = Color.Black;
52        elamaPalkki.BarColor = Color.Green;
53        elamaPalkki.BorderColor = Color.Black;
54        Add(elamaPalkki);
55       
56
57        snoopdogg = new PlatformCharacter(80, 80);
58        PlasmaCannon snoopaase = new PlasmaCannon(50, 50);
59        snoopaase.InfiniteAmmo = true;
60        snoopaase.Position = new Vector(23, -10);
61        snoopaase.ProjectileCollision += AmmusOsui;
62        snoopdogg.Weapon = snoopaase;
63        snoopdogg.Shape = Shape.Pentagon;
64        snoopdogg.Image = olionkuva;
65        snoopdogg.CanRotate = false;
66        snoopdogg.Tag = "Snoopdogg";
67        Add(snoopdogg);
68        AddCollisionHandler(snoopdogg, "ammus", Hittipointsi);
69        AddCollisionHandler(snoopdogg, "potion", OtaPotion);
70
71        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "A.C.A.B");    //näppäinkomennot
72        Keyboard.Listen(Key.Left, ButtonState.Down, Kavele, null, (-1000.0));                                               //näppäinkomennot
73        Keyboard.Listen(Key.Right, ButtonState.Down, Kavele, null, (1000.0));                                                //näppäinkomennot
74        Keyboard.Listen(Key.Up, ButtonState.Down, Hyppaa, null, 500.0);                                                 //näppäinkomennot
75        Keyboard.Listen(Key.A, ButtonState.Down, Ammu, null, snoopdogg);
76        Keyboard.Listen(Key.Z, ButtonState.Released, JuoPotion, null);
77        Keyboard.Listen(Key.E, ButtonState.Down, Pusauta, null);
78        Keyboard.Listen(Key.Q, ButtonState.Down, Jatka, null);
79        Camera.Follow(snoopdogg);                                                    //näppäinkomennot
80    }
81
82    void Pusauta()
83    {
84        IsPaused = true;
85    }
86
87    void Jatka()
88    {
89        IsPaused = false;
90    }
91   
92   
93    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
94    {
95        if (kohde is Kytta)
96        {
97            Kytta kytta = (Kytta)kohde;
98            kytta.hpLaskuri.Value--;
99        }
100    }
101
102
103    void JuoPotion()
104    {
105        if (potionit.Count == 0) return;
106        potionit[potionit.Count - 1].Destroy();
107        potionit.RemoveAt(potionit.Count - 1);
108        PaivitaPotionLista();
109       
110        elamat.Value += 1; 
111    }
112
113
114    void OtaPotion(PhysicsObject snoop, PhysicsObject pot)
115    {
116        pot.Destroy();
117        potionit.Add(LisaaPotioniListaan());
118        PaivitaPotionLista();
119    }
120
121
122    void PaivitaPotionLista()
123    {
124        for (int i = 0; i < potionit.Count; i++)
125        {
126            potionit[i].Position = new Vector(Screen.Left + 30 + potionit[i].Size.X * i, Screen.Bottom + 30 + potionit[i].Size.Y);
127            if (!(potionit[i].IsAddedToGame)) Add(potionit[i]);
128        }
129    }
130
131
132    PushButton LisaaPotioniListaan()
133    {
134        PushButton but = new PushButton(100, 100); //TODO: Lisää kuva 10,10 paikalle
135        but.Shape = Shape.Circle;
136        return but;
137    }
138
139
140
141    void Hittipointsi(PhysicsObject Snoopdogg, PhysicsObject ammus)
142    {
143        elamat.Value -= 1;
144        ammus.Destroy();
145   
146    }
147
148    void Morepower(Vector paikka, double leveys, double korkeus)
149    {
150        PhysicsObject potioni = new PhysicsObject(leveys, korkeus);
151        potioni.Position = paikka;
152        potioni.Tag = "health";
153        Add(potioni);
154    }
155
156
157    void LuoKentta()
158    {
159        TileMap ruudut = TileMap.FromLevelAsset("kentta");
160        ruudut.SetTileMethod('_', LuoPalikka);
161        ruudut.SetTileMethod('-', LuoViiva);
162        ruudut.SetTileMethod('M', LuoKytta);
163        ruudut.SetTileMethod('C', LuoAuto);
164        ruudut.SetTileMethod('P', LuoPotion);
165        ruudut.Execute(20, 20);
166
167    }
168    void Ammu(PlatformCharacter pelaaja)
169    {
170        PhysicsObject ammus = pelaaja.Weapon.Shoot();
171        if (ammus != null)
172        {
173
174        }
175    }
176
177
178    void Kavele(double vektori)
179    {
180        snoopdogg.Walk(vektori);
181    }
182
183    void Hyppaa(double vektori)
184    {
185        snoopdogg.Jump(vektori);
186    }
187
188
189    void LuoPalikka(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject palikka = PhysicsObject.CreateStaticObject(40, 40);
192        palikka.Position = paikka;
193        palikka.Color = Color.Gray;
194        Add(palikka);
195    }
196
197    void LuoPotion(Vector paikka, double leveys, double korkeus)
198    {
199        PhysicsObject potioni = new PhysicsObject(leveys, korkeus);
200        potioni.Position = paikka;
201        potioni.Tag = "potion";
202        Add(potioni);
203    }
204
205    void LuoViiva(Vector paikka, double leveys, double korkeus)
206    {
207        PhysicsObject viiva = PhysicsObject.CreateStaticObject(40, 40);
208        viiva.Position = paikka;
209        viiva.Color = Color.Blue;
210        Add(viiva);
211    }
212
213    void LuoKytta(Vector paikka, double leveys, double korkeus)
214    {
215        Kytta kytta = new Kytta(93, 150, 2);
216        kytta.Position = paikka;
217        kytta.Image = olionkuva2;
218        kytta.Tag = "kytta";
219
220        AssaultRifle kyttaAse = new AssaultRifle(50, 50);
221        kytta.Weapon = kyttaAse;
222        kyttaAse.InfiniteAmmo = true;
223        Add(kytta);
224
225        List<string> tagit = new List<string>();
226        tagit.Add("Snoopdogg");
227
228        FollowerBrain aivot = new FollowerBrain(tagit.ToArray());
229        aivot.TurnWhileMoving = true;
230        aivot.Speed = 0;
231        kyttaAse.Brain = aivot;
232        Timer ajastin = new Timer();
233        ajastin.Interval = 1.0;
234        ajastin.Timeout += delegate { TarkistaAmpuuko(kyttaAse); };
235        ajastin.Start();
236
237        kytta.Destroyed += ajastin.Stop;
238    }
239
240
241    void TarkistaAmpuuko(AssaultRifle ase)
242    {
243        if (Vector.Distance(ase.Position, snoopdogg.Position) <= 500)
244        {
245            // ase.Angle = new Vector(ase.Position.X - Snoopdogg.Position.X, ase.Position.Y - Snoopdogg.Position.Y).Angle;
246            PhysicsObject ammus = ase.Shoot();
247            ammus.LifetimeLeft = TimeSpan.FromSeconds(1);
248            ammus.Tag = "ammus";
249        }
250    }
251
252    void LuoAuto(Vector paikka, double leveys, double korkeus)
253    {
254        PhysicsObject copcar = PhysicsObject.CreateStaticObject(100, 100);
255        copcar.Position = paikka;
256        copcar.Image = olionkuva3;
257        copcar.Shape = Shape.FromImage(olionkuva3);
258        Add(copcar);
259    }
260
261
262
263
264
265
266
267
268}
269
270
271
Note: See TracBrowser for help on using the repository browser.