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

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