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

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