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

Revision 2565, 9.0 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    PhysicsObject Miner;
27    Image olionKuva = LoadImage("player 1 version 2");
28    Image[] KavelyKuvat = LoadImages("player 1", "player 1 frame2");
29
30    Image[] zombiekavelykuvat = LoadImages("zombie animatio osa 1", "zombie animatio osa 2");
31    Image olionKuva1 = LoadImage("zombie seiso");
32
33    //Image[] KavelyKuvatPeilattu;
34    public override void Begin()
35    {
36
37        TileMap ruudut = TileMap.FromLevelAsset("kentaa");
38        ruudut.SetTileMethod('=', LouPuu);
39        ruudut.SetTileMethod('$', Loukulta);
40        ruudut.SetTileMethod('*', LouPuu);
41        ruudut.SetTileMethod('P', LouMiner);
42        ruudut.SetTileMethod('#', Louiron);
43        ruudut.SetTileMethod('T', Loutimanti);
44        ruudut.SetTileMethod('z', Louzombie);
45        ruudut.Execute(50, 50);
46
47        inventory = new Inventory();
48        inventory.Left = Screen.Left;
49        inventory.Top = Screen.Top;
50        Add(inventory);
51
52        FollowerBrain zombinAivot = (FollowerBrain)zombie.Brain;
53        zombinAivot.Target = Miner;
54        //Camera.ZoomToLevel();
55        //KavelyKuvatPeilattu = Image.Mirror(KavelyKuvat);
56
57        // TODO: Kirjoita ohjelmakoodisi tähän
58
59        Level.BackgroundColor = Color.ForestGreen;
60
61        Camera.Follow(Miner);
62        Camera.Zoom(9.0);
63
64        AsetaOhjaimet();
65        //Louzombie();
66    }
67    void AsetaOhjaimet()
68    {
69        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaaMinerYlos, "Pelaaja 1: Liikuta Miner ylös");
70        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaMiner, null);
71
72        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaaMinerAlas, "Pelaaja 1: Liikuta Miner Alas");
73        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaMiner, null);
74
75        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaaMinerVasen, "Pelaaja 1: Liikuta Miner Vasemalle");
76        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaMiner, null);
77
78        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaaMinerOikea, "Pelaaja 1: Liikuta Miner Oikealle");
79        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaMiner, null);
80
81        Keyboard.Listen(Key.Space, ButtonState.Released, rikkokivi, "Pelaaja 1: rikko kiven");
82        Keyboard.Listen(Key.Space, ButtonState.Released, rikkokulta, "Pelaaja 1: rikko kultan");
83        Keyboard.Listen(Key.Space, ButtonState.Released, rikkotimanti, "Pelaaja 1: rikko timantin");
84
85        Keyboard.Listen(Key.K, ButtonState.Released, tekasiase, "Pelaaja 1: teke kasiasen");
86        Keyboard.Listen(Key.O, ButtonState.Released, teisoase, "Pelaaja 1: teke isonasen");
87
88        Keyboard.Listen(Key.Space, ButtonState.Down, ammu, "Pelaaja 1: ammpu");
89        //Keyboard.Listen(Key.Space, ButtonState.Released, alaammu, "Pelaaja 1: loppeta ampumisen");
90
91
92        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
93    }
94    void PysaytaMiner()
95    {
96        Miner.Velocity = nopeusStop;
97        Miner.Animation.Stop();
98    }
99    void LiikutaaMinerYlos()
100    {
101        Miner.Velocity = nopeusYlos;
102        Miner.Animation.Resume();
103        Miner.Angle = Angle.FromDegrees(90);
104    }
105    void LiikutaaMinerAlas()
106    {
107        Miner.Velocity = nopeusAlas;
108        Miner.Animation.Resume();
109        //Miner.Animation.FPS = 10;
110        Miner.Angle = Angle.FromDegrees(-90);
111    }
112    void LiikutaaMinerVasen()
113    {
114        Miner.Velocity = nopeusVasen;
115        Miner.Animation.Resume();
116        Miner.Angle = Angle.FromDegrees(180);
117
118    }
119    void LiikutaaMinerOikea()
120    {
121        Miner.Velocity = nopeusOikea;
122        Miner.Animation.Resume();
123        Miner.Angle = Angle.FromDegrees(0);
124    }
125    void Louzombie(Vector paikka, double leveys, double korkeus)
126    {
127        zombie = new PhysicsObject(10, 10);
128        Add(zombie);
129        zombie.Image = olionKuva1;
130        zombie.Position = paikka;
131        FollowerBrain seuraajanAivot = new FollowerBrain(Miner, 20);
132        seuraajanAivot.Target = Miner;
133        zombie.Brain = seuraajanAivot;
134    }
135    void LouPuu(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject Puu = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        Puu.Position = paikka;
139        Puu.Shape = Shape.Circle;
140        Puu.Color = Color.Green;
141        Add(Puu);
142        Puu.Image = puukuva;
143
144
145    }
146    void LouMiner(Vector paikka, double leveys, double korkeus)
147    {
148        Miner = new PhysicsObject(10.0, 10.0);
149        Add(Miner);
150        Miner.Shape = Shape.Rectangle;
151        Miner.Color = Color.Black;
152        Miner.Image = olionKuva;
153        //Miner.Animation = new Animation(KavelyKuvat);
154        Miner.Animation.FPS = 2;
155        Miner.Position = paikka;
156        Miner.Restitution = 0.0;
157        Miner.CanRotate = false;
158    }
159    void Loukulta(Vector paikka, double leveys, double korkeus)
160    {
161        PhysicsObject kulta = PhysicsObject.CreateStaticObject(20, 20);
162        kulta.Position = paikka;
163        kullat.Add(kulta);
164        Add(kulta);
165        kulta.Image = kultakuva;
166
167    }
168    void Louiron(Vector paikka, double leveys, double korkeus)
169    {
170        PhysicsObject iron = PhysicsObject.CreateStaticObject(20, 20);
171        iron.Position = paikka;
172        irons.Add(iron);
173        Add(iron);
174        iron.Image = ironkuva;
175    }
176    void Loutimanti(Vector paikka, double leveys, double korkeus)
177    {
178        PhysicsObject timanti = PhysicsObject.CreateStaticObject(20, 20);
179        timanti.Position = paikka;
180        timantit.Add(timanti);
181        Add(timanti);
182        timanti.Image = timantikuva;
183
184    }
185    PhysicsObject zombie;
186    List<PhysicsObject> irons = new List<PhysicsObject>();
187    List<PhysicsObject> kullat = new List<PhysicsObject>();
188    List<PhysicsObject> timantit = new List<PhysicsObject>();
189    void rikkokivi()
190    {
191        foreach (var iron in irons)
192        {
193
194            if (Vector.Distance(iron.Position, Miner.Position) < 22 && !iron.IsDestroyed)
195            {
196                iron.Destroy();
197
198                inventory.AddItem( iron, ironkuva );
199
200            }
201           
202        }
203    }
204    void rikkokulta()
205    {
206        foreach (var kulta in kullat )
207        {
208
209            if (Vector.Distance(kulta.Position, Miner.Position) < 22 &&! kulta.IsDestroyed)
210            {
211                kulta.Destroy();
212
213                inventory.AddItem(kulta, kultakuva);
214            }
215        }
216    }
217    void rikkotimanti()
218    {
219        foreach (var timanti in timantit )
220        {
221
222            if (Vector.Distance(timanti.Position, Miner.Position) < 22 && !timanti.IsDestroyed)
223            {
224                timanti.Destroy();
225
226                inventory.AddItem(timanti, timantikuva);
227            }
228        }
229    }
230    void teisoase()
231    {
232        if (inventory.inventlaskin(ironkuva) >= 3)
233        {
234            isoase = new AssaultRifle(20, 5);
235            Miner.Add(isoase);
236        }
237    }
238    void tekasiase()
239    {
240
241    }
242    void ammu()
243    {
244        if (isoase != null)
245        {
246
247       
248            PhysicsObject ammus = isoase.Shoot();
249
250            if (ammus != null)
251            {
252                ammus.Size *= 0.1;
253            }
254        }
255    }
256    void alaammu()
257    {
258
259    }
260} 
261
262class Inventory : Widget
263{
264    List<Widget> Items = new List<Widget>();
265
266    /// <summary>
267    /// Tapahtuma, kun esine on valittu.
268    /// </summary>
269    public event Action<PhysicsObject> ItemSelected;
270
271    /// <summary>
272    /// Luo uuden esinevalikon.
273    /// </summary>
274    public Inventory()
275        : base(new HorizontalLayout())
276    {
277    }
278
279    /// <summary>
280    /// Lisää esineen.
281    /// </summary>
282    /// <param name="item">Lisättävä esine.</param>
283    /// <param name="kuva">Esineen ikoni, joka näkyy valikossa.</param>
284    public void AddItem(PhysicsObject item, Image kuva)
285    {
286        PushButton icon = new PushButton(kuva);
287        Add(icon);
288        Items.Add(icon);
289        icon.Clicked += delegate() { SelectItem(item); };
290    }
291
292    void SelectItem(PhysicsObject item)
293    {
294        if (ItemSelected != null)
295        {
296            ItemSelected(item);
297        }
298    }
299
300    public int inventlaskin( Image itemType )
301    {
302        int laskuri = 0;
303
304        foreach (var item in Items)
305        {
306            if (item.Image == itemType)
307                laskuri++;
308        }
309
310        return laskuri;
311    }
312}
Note: See TracBrowser for help on using the repository browser.