source: 2011/31/RobertJ/Miner/Miner/Miner/Peli.cs @ 2577

Revision 2577, 11.2 KB checked in by rojohans, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    Vector nopeusYlos = new Vector(0, 90);
12    Vector nopeusAlas = new Vector(0, -90);
13    Vector nopeusStop = new Vector(0, 0);
14    Vector nopeusVasen = new Vector(-90, 0);
15    Vector nopeusOikea = new Vector(90, 0);
16    //Vector viholinen = new Vector();
17
18    AssaultRifle isoase;
19
20    Inventory inventory;
21    Image puukuva = LoadImage("puu");
22    Image kultakuva = LoadImage("kulta2");
23    Image ironkuva = LoadImage("iron2");
24    Image timantikuva = LoadImage("timanti3");
25
26    List<Widget> sydamet = new List<Widget>();
27
28    PhysicsObject Miner;
29    Image olionKuva = LoadImage("player 1 version 3");
30    Image[] KavelyKuvat = LoadImages("player 1", "player 1 frame2");
31
32    Image[] zombiekavelykuvat = LoadImages("zombie animatio osa 1", "zombie animatio osa 2");
33    Image olionKuva1 = LoadImage("zombie seiso");
34
35    //Image[] KavelyKuvatPeilattu;
36    public override void Begin()
37    {
38        tesydämet();
39        TileMap ruudut = TileMap.FromLevelAsset("kentaa");
40        ruudut.SetTileMethod('=', LouPuu);
41        ruudut.SetTileMethod('$', Loukulta);
42        ruudut.SetTileMethod('*', LouPuu);
43        ruudut.SetTileMethod('P', LouMiner);
44        ruudut.SetTileMethod('#', Louiron);
45        ruudut.SetTileMethod('T', Loutimanti);
46        ruudut.SetTileMethod('z', Louzombie);
47        ruudut.Execute(50, 50);
48
49        inventory = new Inventory();
50        inventory.Left = Screen.Left;
51        inventory.Top = Screen.Top;
52        Add(inventory);
53
54
55        //Camera.ZoomToLevel();
56        //KavelyKuvatPeilattu = Image.Mirror(KavelyKuvat);
57
58        // TODO: Kirjoita ohjelmakoodisi tähän
59
60        Level.BackgroundColor = Color.ForestGreen;
61
62        Camera.Follow(Miner);
63        Camera.Zoom(9.0);
64
65        AsetaOhjaimet();
66        //Louzombie();
67
68        //Cannon tykki = new Cannon(50, 10);
69        //tykki.Power.Value += 1000;
70    }
71    void AsetaOhjaimet()
72    {
73        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaaMinerYlos, "Pelaaja 1: Liikuta Miner ylös");
74        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaMiner, null);
75
76        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaaMinerAlas, "Pelaaja 1: Liikuta Miner Alas");
77        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaMiner, null);
78
79        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaaMinerVasen, "Pelaaja 1: Liikuta Miner Vasemalle");
80        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaMiner, null);
81
82        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaaMinerOikea, "Pelaaja 1: Liikuta Miner Oikealle");
83        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaMiner, null);
84
85        Keyboard.Listen(Key.Space, ButtonState.Released, rikkokivi, "Pelaaja 1: rikko kiven");
86        Keyboard.Listen(Key.Space, ButtonState.Released, rikkokulta, "Pelaaja 1: rikko kultan");
87        Keyboard.Listen(Key.Space, ButtonState.Released, rikkotimanti, "Pelaaja 1: rikko timantin");
88
89        Keyboard.Listen(Key.K, ButtonState.Released, tekasiase, "Pelaaja 1: teke kasiasen");
90        Keyboard.Listen(Key.O, ButtonState.Released, teisoase, "Pelaaja 1: teke isonasen");
91
92        Keyboard.Listen(Key.Space, ButtonState.Down, ammu, "Pelaaja 1: ammpu");
93        //Keyboard.Listen(Key.Space, ButtonState.Released, alaammu, "Pelaaja 1: loppeta ampumisen");
94
95
96        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
97    }
98    void PysaytaMiner()
99    {
100        Miner.Velocity = nopeusStop;
101        Miner.Animation.Stop();
102    }
103    void LiikutaaMinerYlos()
104    {
105        Miner.Velocity = nopeusYlos;
106        Miner.Animation.Resume();
107        Miner.Angle = Angle.FromDegrees(90);
108    }
109    void LiikutaaMinerAlas()
110    {
111        Miner.Velocity = nopeusAlas;
112        Miner.Animation.Resume();
113        //Miner.Animation.FPS = 10;
114        Miner.Angle = Angle.FromDegrees(-90);
115    }
116    void LiikutaaMinerVasen()
117    {
118        Miner.Velocity = nopeusVasen;
119        Miner.Animation.Resume();
120        Miner.Angle = Angle.FromDegrees(180);
121
122    }
123    void LiikutaaMinerOikea()
124    {
125        Miner.Velocity = nopeusOikea;
126        Miner.Animation.Resume();
127        Miner.Angle = Angle.FromDegrees(0);
128    }
129    void Louzombie(Vector paikka, double leveys, double korkeus)
130    {
131        Vihulainen zombie = new Vihulainen(10, 10);
132        Add(zombie);
133        zombie.Image = olionKuva1;
134        zombie.Position = paikka;
135
136        FollowerBrain seuraajanAivot = new FollowerBrain(Miner, 20);
137        seuraajanAivot.Target = Miner;
138        zombie.Brain = seuraajanAivot;
139        zombie.Tag = "zombie";
140    }
141    void LouPuu(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject Puu = PhysicsObject.CreateStaticObject(leveys, korkeus);
144        Puu.Position = paikka;
145        Puu.Shape = Shape.Circle;
146        Puu.Color = Color.Green;
147        Add(Puu);
148        Puu.Image = puukuva;
149        puut.Add(Puu);
150
151
152    }
153    void LouMiner(Vector paikka, double leveys, double korkeus)
154    {
155        Miner = new PhysicsObject(10.0, 10.0);
156        Add(Miner);
157        Miner.Shape = Shape.Rectangle;
158        Miner.Color = Color.Black;
159        Miner.Image = olionKuva;
160        //Miner.Animation = new Animation(KavelyKuvat);
161        Miner.Animation.FPS = 2;
162        Miner.Position = paikka;
163        Miner.Restitution = 0.0;
164        Miner.CanRotate = false;
165        AddCollisionHandler(Miner, tormays);
166    }
167    void tesydämet()
168    {
169        HorizontalLayout asettelu = new HorizontalLayout();
170        asettelu.Spacing = 3;
171
172        Widget sydamet = new Widget(asettelu);
173        sydamet.Color = Color.Transparent;
174        sydamet.X = Screen.Center.X;
175        sydamet.Y = Screen.Top - 30;
176        Add(sydamet);
177
178        for (int i = 0; i < 3; i++)
179        {
180            Widget sydan = new Widget(30, 30, Shape.Heart);
181            sydan.Color = Color.Red;
182            sydamet.Add(sydan);
183            this.sydamet.Add(sydan);
184
185        }
186
187    }
188
189    void Loukulta(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject kulta = PhysicsObject.CreateStaticObject(20, 20);
192        kulta.Position = paikka;
193        kullat.Add(kulta);
194        Add(kulta);
195        kulta.Image = kultakuva;
196
197    }
198    void Louiron(Vector paikka, double leveys, double korkeus)
199    {
200        PhysicsObject iron = PhysicsObject.CreateStaticObject(20, 20);
201        iron.Position = paikka;
202        irons.Add(iron);
203        Add(iron);
204        iron.Image = ironkuva;
205    }
206    void Loutimanti(Vector paikka, double leveys, double korkeus)
207    {
208        PhysicsObject timanti = PhysicsObject.CreateStaticObject(20, 20);
209        timanti.Position = paikka;
210        timantit.Add(timanti);
211        Add(timanti);
212        timanti.Image = timantikuva;
213
214    }
215    //PhysicsObject zombie;
216    List<PhysicsObject> puut = new List<PhysicsObject>();
217    List<PhysicsObject> irons = new List<PhysicsObject>();
218    List<PhysicsObject> kullat = new List<PhysicsObject>();
219    List<PhysicsObject> timantit = new List<PhysicsObject>();
220    void rikkokivi()
221    {
222        foreach (var iron in irons)
223        {
224
225            if (Vector.Distance(iron.Position, Miner.Position) < 22 && !iron.IsDestroyed)
226            {
227                iron.Destroy();
228
229                inventory.AddItem( iron, ironkuva );
230
231            }
232           
233        }
234    }
235    void rikkokulta()
236    {
237        foreach (var kulta in kullat )
238        {
239
240            if (Vector.Distance(kulta.Position, Miner.Position) < 22 &&! kulta.IsDestroyed)
241            {
242                kulta.Destroy();
243
244                inventory.AddItem(kulta, kultakuva);
245            }
246        }
247    }
248    void rikkotimanti()
249    {
250        foreach (var timanti in timantit )
251        {
252
253            if (Vector.Distance(timanti.Position, Miner.Position) < 22 && !timanti.IsDestroyed)
254            {
255                timanti.Destroy();
256
257                inventory.AddItem(timanti, timantikuva);
258            }
259        }
260    }
261    void teisoase()
262    {
263        if (inventory.inventlaskin(ironkuva) >= 3)
264        {
265            isoase = new AssaultRifle(20, 5);
266            isoase.ProjectileCollision = ammusOsuu;
267            Miner.Add(isoase);
268        }
269    }
270
271    void ammusOsuu(PhysicsObject ammus, PhysicsObject kohde)
272    {
273        if (kohde is Vihulainen)
274        {
275            Vihulainen k = (Vihulainen)kohde;
276            k.HP--;
277            if (k.HP < 1) k.Destroy();
278        }
279    }
280    void tekasiase()
281    {
282
283    }
284    void ammu()
285    {
286        if (isoase != null)
287        {
288            PhysicsObject ammus = isoase.Shoot();
289
290            if (ammus != null)
291            {
292                ammus.Size *= 0.1;
293            }
294        }
295    }
296    void alaammu()
297    {
298
299    }
300    void tormays(PhysicsObject Miner, PhysicsObject kohde)
301    {
302        if (kohde.Tag.ToString() == "zombie")
303        {
304            if (sydamet.Count == 1)
305            {
306                Miner.Destroy();
307            }
308            else
309            {
310                int viimeinenSydan = sydamet.Count - 1;
311                sydamet[viimeinenSydan].Destroy();
312                sydamet.RemoveAt(viimeinenSydan);
313               
314            }
315        }
316    }
317    void louzombierandompaikka()
318    {
319        int i = 50;
320        bool valmis = false;
321
322        while (i > 0)
323        {
324            Vector paikka = Level.GetRandomPosition();
325            foreach (var Puu in puut)
326            {
327                if (!Puu.IsInside(paikka))
328                {
329                    Louzombie(paikka, 50, 50);
330                    valmis = true;
331                    break;
332                }
333            }
334
335            if (valmis)
336            {
337                break;
338            }
339
340            i--;
341        }
342    }
343} 
344
345class Inventory : Widget
346{
347    List<Widget> Items = new List<Widget>();
348
349    /// <summary>
350    /// Tapahtuma, kun esine on valittu.
351    /// </summary>
352    public event Action<PhysicsObject> ItemSelected;
353
354    /// <summary>
355    /// Luo uuden esinevalikon.
356    /// </summary>
357    public Inventory()
358        : base(new HorizontalLayout())
359    {
360    }
361
362    /// <summary>
363    /// Lisää esineen.
364    /// </summary>
365    /// <param name="item">Lisättävä esine.</param>
366    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param>
367    public void AddItem(PhysicsObject item, Image kuva)
368    {
369        PushButton icon = new PushButton(kuva);
370        Add(icon);
371        Items.Add(icon);
372        icon.Clicked += delegate() { SelectItem(item); };
373    }
374
375    void SelectItem(PhysicsObject item)
376    {
377        if (ItemSelected != null)
378        {
379            ItemSelected(item);
380        }
381    }
382
383    public int inventlaskin( Image itemType )
384    {
385        int laskuri = 0;
386
387        foreach (var item in Items)
388        {
389            if (item.Image == itemType)
390                laskuri++;
391        }
392
393        return laskuri;
394    }
395
396}
397
398public class Vihulainen : PhysicsObject
399{
400    public int HP = 10;
401    public Vihulainen(double width, double height) : base(width, height) { }
402}
Note: See TracBrowser for help on using the repository browser.