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

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