source: 2010/31/arsajukk/fat-man adventures/fat-man adventures/Peli.cs @ 1671

Revision 1671, 11.7 KB checked in by arsajukk, 11 years ago (diff)

Peli valmis

Line 
1using System;
2using Jypeli;
3using Jypeli.Widgets;
4using Jypeli.Assets;
5using System.Collections.Generic;
6using Physics2DDotNet.Ignorers;
7
8class Tasohyppely : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyVoima = 4000;
12    const int ruudunLeveys = 50;
13    const int ruudunKorkeus = 50;
14    PlatformCharacter pelaaja1;
15    PhysicsObject vasenReuna;
16    PhysicsObject oikeaReuna;
17    PhysicsObject alaReuna;
18    Image taustaKuva = LoadImage("background");
19    Image pelaajanKuva = LoadImage("Fat-man 22");
20    Image pelaajanKuva2 = LoadImage("Fat-man 21");
21    Image vihollinenKuva = LoadImage("Hamburger");
22    Image vihollinenKuva2 = LoadImage("Hot dog");
23    Image vihollinenKuva3 = LoadImage("Ice cream");
24   
25    ObjectIgnorer ignorer = new ObjectIgnorer();
26    List<Label> valikonKohdat;
27
28    List<object> viholliset;
29
30    protected override void Begin()
31    {
32        Valikko();
33    }
34
35    void LuoKentta()
36    {
37        viholliset = new List<object>();
38        TileMap ruudut = TileMap.FromFile("Kentta1.txt");
39        ruudut['='] = LuoPalikka;
40        ruudut['*'] = LuoTahti;
41        ruudut['1'] = lisaaPelaajat;
42        ruudut['-'] = LuoPalikka3;
43        ruudut['_'] = LuoPalikka4;
44        ruudut[','] = LuoPalikka2;
45        ruudut['.'] = LuoPalikka5;
46        ruudut[':'] = LuoOmena;
47        ruudut['2'] = lisaaVihollinen;
48        ruudut['3'] = lisaaVihollinen2;
49        ruudut['4'] = lisaaVihollinen3;
50        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
51        Gravity = new Vector(0.0, -850.0);
52        PhysicsObject vasenReuna = Level.CreateLeftBorder();
53        vasenReuna.Restitution = 1.0;
54        vasenReuna.IsVisible = false;
55        PhysicsObject oikeaReuna = Level.CreateRightBorder();
56        vasenReuna.Restitution = 1.0;
57        vasenReuna.IsVisible = false;
58        alaReuna = Level.CreateBottomBorder();
59        Level.Background.Image = taustaKuva;
60        Level.Background.Height = Level.Height;
61        Level.Background.Width = Level.Width;
62
63        TeeVihollisilleAivot();
64
65    }
66
67    void TeeVihollisilleAivot()
68    {
69        foreach (PhysicsObject vihu in viholliset)
70        {
71            List<Vector> polku = new List<Vector>();
72            polku.Add(new Vector(vihu.X - 100, vihu.Y - 20));
73            polku.Add(new Vector(vihu.X + 100, vihu.Y - 20));
74            PathFollowerBrain polkuAivot = new PathFollowerBrain();
75            polkuAivot.Path = polku;
76            polkuAivot.Speed = 150;
77            vihu.Brain = polkuAivot;
78        }
79       
80        foreach (PhysicsObject vihu2 in viholliset)
81        {
82            List<Vector> polku = new List<Vector>();
83            polku.Add(new Vector(vihu2.X - 100, vihu2.Y - 20));
84            polku.Add(new Vector(vihu2.X + 100, vihu2.Y - 20));
85            PathFollowerBrain polkuAivot = new PathFollowerBrain();
86            polkuAivot.Path = polku;
87            polkuAivot.Speed = 200;
88            vihu2.Brain = polkuAivot;
89        }
90
91       
92       
93        foreach (PhysicsObject vihu3 in viholliset)
94       
95        {
96            if (!(vihu3 is PlatformCharacter)) return;
97            List<Vector> polku = new List<Vector>();
98            polku.Add(new Vector(vihu3.X - 100, vihu3.Y - 20));
99            polku.Add(new Vector(vihu3.X + 100, vihu3.Y - 20));
100            PathFollowerBrain polkuAivot = new PathFollowerBrain();
101            polkuAivot.Path = polku;
102            polkuAivot.Speed = 200;
103            vihu3.Brain = polkuAivot;
104            Timer ampumisAjastin = new Timer();
105            ampumisAjastin.Interval = 0.5;
106            ampumisAjastin.Trigger += VihulainenAmpuu;
107            ampumisAjastin.Start();
108            ampumisAjastin.Tag = vihu3;
109        }
110    }
111
112    void VihulainenAmpuu(Timer t)
113    {
114        PhysicsObject ammus = ((PlatformCharacter)t.Tag).Weapon.Shoot();
115        if (ammus != null)
116        {
117            ammus.Size *= 3.5;
118            ammus.Color = Color.Red;
119        }
120    }
121
122    GameObject lisaaPelaajat()
123    {
124        pelaaja1 = new PlatformCharacter(50, 70);
125        pelaaja1.Mass = 4.5;
126        pelaaja1.Image = pelaajanKuva;
127        pelaaja1.CollisionIgnorer = ignorer;
128        AddCollisionHandler(pelaaja1, PelaajaTormasi);
129        LaserGun laserPyssy = new LaserGun(45, 10);
130        pelaaja1.Weapon = laserPyssy;
131        pelaaja1.RightIdleAnimation = new Animation(pelaajanKuva);
132        pelaaja1.LeftIdleAnimation = new Animation(pelaajanKuva2);
133        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKuva);
134        pelaaja1.LeftWalkingAnimation = new Animation(pelaajanKuva2);
135        pelaaja1.Weapon.X = 0;
136        pelaaja1.Weapon.Y = -5;
137        return (pelaaja1);
138    }
139
140
141    void lisaaNappaimet()
142    {
143        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
144        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
145
146        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
147
148        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
149        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
150        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
151
152        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
153
154        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
155        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
156        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
157    }
158
159    PhysicsObject LuoPalikka()
160    {
161        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 95.0);
162        palikka.Color = Color.Red;
163        palikka.Image = LoadImage("tiiliseina");
164        palikka.Tag = "Tiiliseina";
165        return palikka;
166    }
167
168    PhysicsObject LuoTahti()
169    {
170        PhysicsObject tahti = PhysicsObject.CreateStaticObject(25.0, 25.0);
171        tahti.Image = LoadImage("tahti");
172        tahti.Tag = "tahti";
173        return tahti;
174    }
175    PhysicsObject LuoPalikka2()
176    {
177        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 5.0);
178        palikka.Image = LoadImage("ruoho");
179        palikka.Restitution = 0.0;
180        return palikka;
181    }
182
183    PhysicsObject LuoPalikka3()
184    {
185        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 95.0);
186        palikka.Image = LoadImage("tiiliseina");
187        return palikka;
188    }
189
190    PhysicsObject LuoPalikka4()
191    {
192        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 5.0);
193        palikka.Color = Color.Brown;
194        palikka.Image = LoadImage("multaa");
195        return palikka;
196    }
197
198    PhysicsObject LuoPalikka5()
199    {
200        PhysicsObject palikka = PhysicsObject.CreateStaticObject(100.0, 50.0);
201        palikka.Color = Color.White;
202        palikka.Image = LoadImage("pilvi");
203        return palikka;
204    }
205    PhysicsObject LuoOmena()
206    {
207        PhysicsObject omena = PhysicsObject.CreateStaticObject(35.0, 35.0);
208        omena.Image = LoadImage("apple");
209        omena.Tag = "apple";
210        return omena;
211    }
212
213    PhysicsObject lisaaVihollinen()
214    {
215        PhysicsObject vihollinen = new PhysicsObject(50, 30);
216        vihollinen.Image = vihollinenKuva;
217        vihollinen.Restitution = 0.0;
218        vihollinen.Tag = "vihu";
219        viholliset.Add(vihollinen);
220        return (vihollinen);
221    }
222   
223    PhysicsObject lisaaVihollinen2()
224    {
225        PhysicsObject vihollinen = new PhysicsObject(50, 30);
226        vihollinen.Image = vihollinenKuva2;
227        vihollinen.Restitution = 0.0;
228        vihollinen.Tag = "vihu2";
229        viholliset.Add(vihollinen);
230        return (vihollinen);
231    }
232   
233   
234   
235    PlatformCharacter lisaaVihollinen3()
236    {
237        PlatformCharacter vihollinen = new PlatformCharacter(50, 60, Shapes.Circle);
238        vihollinen.Image = vihollinenKuva3;
239        vihollinen.Restitution = 0.0;
240        vihollinen.Tag = "vihu3";
241        vihollinen.CanRotate = false;
242        PlasmaCannon plasmaTykki = new PlasmaCannon(30, 15);
243        vihollinen.Weapon = plasmaTykki;
244        viholliset.Add(vihollinen);
245        return (vihollinen);
246    }
247    void liikuta(PlatformCharacter hahmo, double nopeus)
248    {
249        pelaaja1.Walk(nopeus);
250    }
251
252    void hyppaa(PlatformCharacter hahmo, double voima)
253    {
254        hahmo.Jump(voima);
255    }
256
257    void PelaajaTormasi(PhysicsObject pelaaja1, PhysicsObject kohde)
258    {
259        if ((kohde == alaReuna) || (kohde.Tag.ToString() == "vihu") || (kohde.Tag.ToString() == "vihu2"))
260        {
261            AloitaAlusta();
262        }
263        if (kohde.Tag.ToString() == "apple")
264        {
265            kohde.Destroy();
266            PeliLapi();
267        }
268       
269        if (kohde.Tag.ToString() == "tahti")
270        {
271            kohde.Destroy();
272           
273        }
274    }
275
276
277    void AloitaAlusta()
278    {
279        ClearAll();
280        Begin();
281    }
282
283    void AmmuAseella()
284    {
285        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
286
287        if (ammus != null)
288        {
289            ammus.CollisionIgnorer = ignorer;
290            ammus.Size *= 1.5;
291            AddCollisionHandler(ammus, KasitteleAmmusTormays);
292        }
293    }
294
295    void KasitteleAmmusTormays(PhysicsObject ammus, PhysicsObject kohde)
296    {
297
298        if (kohde.Tag.ToString() == "vihu")
299        {
300            kohde.Destroy();
301        }
302
303        if (kohde.Tag.ToString() == "Tiiliseina")
304        {
305            ammus.Destroy();
306        }
307        if (kohde.Tag.ToString() == "vihu2")
308        {
309            kohde.Destroy();
310        }
311       
312        if (kohde.Tag.ToString() == "vihu3")
313        {
314            kohde.Destroy();
315        }
316    }
317
318    void Valikko()
319    {
320        ClearAll();
321        valikonKohdat = new List<Label>();
322
323        Label kohta1 = new Label("Aloita peli");
324        kohta1.Position = new Vector(0, 40);
325        valikonKohdat.Add(kohta1);
326
327        Label kohta2 = new Label("Lopeta");
328        kohta2.Position = new Vector(0, -40);
329        valikonKohdat.Add(kohta2);
330
331        foreach (Label valikonKohta in valikonKohdat)
332        {
333            Add(valikonKohta);
334        }
335
336        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
337        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
338
339        Mouse.IsCursorVisible = true;
340        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
341        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
342    }
343
344    void ValikossaLiikkuminen(AnalogState hiirenTila)
345    {
346        foreach (Label kohta in valikonKohdat)
347        {
348            if (Mouse.IsCursorOn(kohta))
349            {
350                kohta.TextColor = Color.Red;
351            }
352            else
353            {
354                kohta.TextColor = Color.Black;
355            }
356
357        }
358    }
359
360    void AloitaPeli()
361    {
362        ClearAll();
363
364        LuoKentta();
365        lisaaNappaimet();
366
367        Camera.Follow(pelaaja1);
368        Camera.ZoomFactor = -100.0;
369        Camera.StayInLevel = true;
370       
371       
372
373    }
374
375    void Lopeta()
376    {
377        Exit();
378    }
379
380    /*
381    void KasittelePelaajanTormays(PhysicsObject Pelaaja1, PhysicsObject kohde)
382    {
383
384       
385    }*/
386   
387    void PeliLapi ()
388    {
389        ClearAll();
390
391        Image kuva = LoadImage("LOPPUKUVA");
392        Widget w = new Widget(kuva.Width, kuva.Height);
393        w.Image = kuva;
394        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
395        Add(w);
396     
397    }
398     }
Note: See TracBrowser for help on using the repository browser.