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

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