source: 2014/23/ErikT/peli12/peli12/peli12/peli12.cs @ 4881

Revision 4881, 7.3 KB checked in by koannak, 8 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 peli12 : PhysicsGame
10{
11    private Image[] pelaajanKavely = LoadImages("markoboy11", "markoboy2", "markoboy2.5", "markoboy3");
12    private Image[] pelaajanSeisominen = LoadImages("markoboyseisooo");
13    private Image[] pelaajaTippuu = LoadImages("markoboytippuu");
14    private Image[] pelaajaHyppaa = LoadImages("markoboyhyppaa");
15    private Image[] laavaAnimaatio = LoadImages("laava ansa", "laava ansakuva2", "laava ansakuva3");
16
17    const double nopeus = 200;
18    const double hyppyNopeus = 750;
19    const int RUUDUN_KOKO = 40;
20    int kerattavatpullot = 0;
21    int keratutpullot = 0;
22    int kenttaNro = 1;
23    const int MAX_LEVEL = 5;
24
25    PlatformCharacter pelaaja;
26
27    Image tasoKuva3 = LoadImage("hiekkakivi");
28    Image tasoKuva2 = LoadImage("ruohoa");
29    Image taustaKuva = LoadImage("kukukukukuku");
30    Image pelaajanKuva = LoadImage("markoboy1");
31    Image pulloKuva = LoadImage("pullokuva");
32    Image tasoKuva = LoadImage("palikka");
33    Image grilliKuva = LoadImage("grilli");
34    Image laavaKuva = LoadImage("laava ansa");
35
36    public override void Begin()
37    {
38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
42
43        Camera.Follow(pelaaja);
44        Camera.ZoomFactor = 2.5;
45        Camera.StayInLevel = true;
46    }
47
48    void LuoKentta()
49    {
50        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaNro.ToString());
51        kentta.SetTileMethod('#', LisaaTaso);
52        kentta.SetTileMethod('*', LisaaPullo);
53        kentta.SetTileMethod('N', LisaaPelaaja);
54        kentta.SetTileMethod('M', LisaaTaso2);
55        kentta.SetTileMethod('W', LisaaTaso3);
56        kentta.SetTileMethod('G', LisaaVihollinen);
57        kentta.SetTileMethod('L', LisaaLaavaa);
58        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
59        Level.CreateBorders();
60        Level.Background.Color = Color.Gray;
61        Level.Background.FitToLevel();
62    }
63
64    void LisaaBossi(Vector paikka, double leveys, double korkeus)
65    {
66        PlatformCharacter bossi = new PlatformCharacter(300.0, 300.0);
67        Add(bossi);
68
69        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
70        seuraajanAivot.Speed = 60;
71        seuraajanAivot.DistanceFar = 200;
72        seuraajanAivot.DistanceClose = 100;
73        seuraajanAivot.StopWhenTargetClose = true;
74
75        seuraajanAivot.TargetClose += KunLahella;
76    }
77
78    void KunLahella();
79    {
80       
81    }
82
83       
84
85    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
86    {
87        PlatformCharacter vihollinen = new PlatformCharacter(40.0, 40.0);
88        Add(vihollinen);
89
90        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
91        tasoAivot.Speed = 50;
92        tasoAivot.JumpSpeed = 700;
93        tasoAivot.TriesToJump = true;
94
95        vihollinen.Brain = tasoAivot;
96        vihollinen.Image = grilliKuva;
97        vihollinen.Tag = "vihollinen";
98
99    }
100
101    void LisaaLaavaa(Vector paikka, double leveys, double korkeus)
102    {
103        PhysicsObject laavaa = new PhysicsObject(leveys, korkeus);
104        laavaa.Position = paikka;
105        laavaa.Image = laavaKuva;
106        laavaa.Tag = "laavaa";
107        laavaa.Animation = new Animation(laavaAnimaatio);
108        laavaa.Animation.Start();
109        laavaa.Animation.FPS = 4;
110        Add(laavaa);
111    }
112
113    void LisaaTaso3(Vector paikka, double leveys, double korkeus)
114    {
115        PhysicsObject taso3 = PhysicsObject.CreateStaticObject(leveys, korkeus);
116        taso3.Position = paikka;
117        taso3.Image = tasoKuva3;
118        Add(taso3);
119    }
120
121         void LisaaTaso2(Vector paikka,double leveys, double korkeus)
122        {
123            PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
124            taso2.Position = paikka;
125            taso2.Image = tasoKuva2;
126            Add(taso2);
127        }
128       
129    void LisaaTaso(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        taso.Position = paikka;
133        taso.Image = tasoKuva;
134        Add(taso);
135    }
136
137    void LisaaPullo(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject pullo = PhysicsObject.CreateStaticObject(leveys, korkeus);
140        pullo.IgnoresCollisionResponse = true;
141        pullo.Position = paikka;
142        pullo.Image = pulloKuva;
143        pullo.Tag = "pullo";
144        Add(pullo);
145        kerattavatpullot++;
146    }
147
148    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
149    {
150        pelaaja = new PlatformCharacter(leveys * 0.8, korkeus * 0.8);
151        pelaaja.Position = paikka;
152        pelaaja.Mass = 4.0;
153        pelaaja.Image = pelaajanKuva;
154        pelaaja.Animation.FPS = 1;
155        pelaaja.AnimWalk = new Animation(pelaajanKavely);
156        pelaaja.AnimIdle = new Animation(pelaajanSeisominen);
157        pelaaja.AnimJump = new Animation(pelaajaHyppaa);
158        pelaaja.AnimFall = new Animation(pelaajaTippuu);
159        AddCollisionHandler(pelaaja, "pullo", TormaaPulloon);
160        Add(pelaaja);
161        //AddCollisionHandler(pelaaja, "laavaa", CollisionHandler.DestroyObject);
162        AddCollisionHandler(pelaaja, "laavaa", PelaajaOsuiLaavaan);
163        AddCollisionHandler(pelaaja, "vihollinen", PelaajaOsuiLaavaan);
164       
165    }
166    void PelaajaOsuiLaavaan(PhysicsObject pelaaja, PhysicsObject laavaa)
167    {
168        if (laavaa.Tag == "laavaa")
169        { pelaaja.Destroy(); MessageDisplay.Add("Kuolit"); PeliLoppui(); }
170        else if (laavaa.Tag == "vihollinen")
171        { pelaaja.Destroy(); MessageDisplay.Add("Kuolit"); PeliLoppui(); }
172    }
173
174    void LisaaNappaimet()
175    {
176        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
177        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
178
179        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -nopeus);
180        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, nopeus);
181        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, hyppyNopeus);
182
183    }
184
185    void Liikuta(PlatformCharacter hahmo, double nopeus)
186    {
187        hahmo.Walk(nopeus);
188    }
189
190    void Hyppaa(PlatformCharacter hahmo, double nopeus)
191    {
192        hahmo.Jump(nopeus);
193    }
194
195    void TormaaPulloon(PhysicsObject hahmo, PhysicsObject pullo)
196    {
197        MessageDisplay.Add("Sait pullon");
198        pullo.Destroy();
199        keratutpullot++;
200        if (keratutpullot == kerattavatpullot) KenttaLapaisty();
201
202       
203    }
204    void KenttaLapaisty()
205    {
206        kenttaNro++;
207        if (MAX_LEVEL < kenttaNro) PeliLoppui();
208        else AloitaAlusta();
209    }
210    void AloitaAlusta()
211    {
212        ClearAll();
213        Begin();
214
215    }
216
217    void PeliLoppui()
218    {
219        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
220"Aloita peli", "Parhaat pisteet", "Lopeta");
221        Add(alkuValikko);
222        alkuValikko.AddItemHandler(0, AloitaAlusta);
223        alkuValikko.AddItemHandler(2, Exit);
224    }
225}
226
227
228
229
230
231
232
233       
234
235
236
237   
Note: See TracBrowser for help on using the repository browser.