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

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