source: 2013/23/LauriH/Peli_1/Peli_1/Peli_1/Peli_1.cs @ 3979

Revision 3979, 8.1 KB checked in by lanijohe, 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 Peli_1 : PhysicsGame
10{
11    PlatformCharacter Pelaaja;
12    PlatformCharacter Vastustaja;
13
14    private Image [] VastustajanLiike = LoadImages("Vastustaja", "Vastustaja2", "Vastustaja3");
15    Image PelaajanKuva = LoadImage("Pelaaja");
16
17    const double Nopeus = 200;
18    const double HyppyNopeus = 750;
19
20    DoubleMeter elamaLaskuri; 
21    IntMeter keratytPallot;
22    int kenttaNro = 1;
23    string kenttaTiedostonNimi;
24
25    public override void Begin()
26    {
27        // TODO: Kirjoita ohjelmakoodisi tähän
28
29        Valikko();
30        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
31    }
32        void LuoKentta(string kenttaTiedostonNimi)
33        {
34            TileMap ruudut = TileMap.FromLevelAsset(kenttaTiedostonNimi);
35            ruudut.SetTileMethod('#', LuoPalikka);
36            ruudut.SetTileMethod('P', LuoPelaaja);
37            ruudut.SetTileMethod('?', LuoPallo);
38            ruudut.SetTileMethod('M', LuoMaali);
39            ruudut.SetTileMethod('-', LuoLiikkuvaPalikka);
40            ruudut.SetTileMethod('O', LuoVastustaja);
41            ruudut.Execute(20,20);
42           
43            Gravity = new Vector(0, -1000);
44            Camera.Follow(Pelaaja);
45            Camera.StayInLevel = true;
46            Laskurit();
47
48            Level.CreateBorders();
49        }
50
51        void SeuraavaKentta()
52        {
53            ClearAll();
54            if (kenttaNro == 1)
55            { LuoKentta("Taso_1"); }
56            else if (kenttaNro == 2)
57            { LuoKentta("Taso_2"); }
58            else if (kenttaNro == 3)
59            { LuoKentta("Taso_3"); }
60            else if (kenttaNro == 4)
61            { LuoKentta("Taso_4"); }
62            else if (kenttaNro == 5)
63            {LuoKentta5(); }
64            else if (kenttaNro > 5)
65            { Exit(); }
66
67            AsetaOhjaimet();
68
69        }
70
71        void LuoKentta5()
72        {
73            TileMap ruudut = TileMap.FromLevelAsset("Taso_5");
74            //ruudut.SetTileMethod();
75
76
77            Camera.Follow(Pelaaja);
78            Camera.StayInLevel = true;
79            Laskurit();
80        }
81
82        void Valikko()
83        {
84            MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Taso 1", "Taso 2", "Taso 3", "Taso 4", "Taso 5", "Lopeta");
85            Add(alkuValikko);
86
87            alkuValikko.AddItemHandler(0, delegate {
88                kenttaNro = 1;
89                SeuraavaKentta(); 
90            });
91            alkuValikko.AddItemHandler(4, LuoKentta5);
92        }
93
94        void LuoPelaaja(Vector paikka, double leveys, double korkeus)
95        {
96            Pelaaja = new PlatformCharacter(50,50);
97            Pelaaja.Position = paikka;
98            Pelaaja.Image = PelaajanKuva;
99            AddCollisionHandler(Pelaaja, "pallo", TormaaPalloon);
100            AddCollisionHandler(Pelaaja, "Vastustaja", TormaaVastustajaan);
101            AddCollisionHandler(Pelaaja, "Maali", TormaaMaaliin);
102            Add(Pelaaja);
103        }
104       
105        void LuoPalikka(Vector paikka, double leveys, double korkeus)
106        {
107            PhysicsObject Taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
108            Taso.Position = paikka;
109            Taso.Color = Color.Green;
110            Add(Taso);
111        }
112
113        void LuoLiikkuvaPalikka(Vector paikka, double leveys, double korkeus)
114        {
115            PhysicsObject LiikkuvaTaso = PhysicsObject.CreateStaticObject(leveys, korkeus);
116            LiikkuvaTaso.Position = paikka;
117            LiikkuvaTaso.Color = Color.Green;
118            Add(LiikkuvaTaso);
119
120            List<Vector> polku = new List<Vector>();
121            polku.Add(new Vector());
122            polku.Add(new Vector());
123
124            PathFollowerBrain pfb = new PathFollowerBrain(polku.ToArray());
125            LiikkuvaTaso.Brain = pfb;
126            pfb.Active = true;
127            pfb.Speed = 100;
128        }
129
130        void LuoPallo(Vector paikka, double leveys, double korkeus)
131        {
132            PhysicsObject pallo = new PhysicsObject (10,10);
133            pallo.MakeStatic();
134            pallo.Shape = Shape.Circle;
135            pallo.Color = Color.Red;
136            pallo.Position = paikka;
137            pallo.Tag = "pallo";
138            Add(pallo, 1);
139
140        }
141
142        void LuoVastustaja(Vector paikka, double leveys, double korkeus)
143        {
144            Vastustaja = new PlatformCharacter(50,50);
145            Vastustaja.Position = paikka;
146            Vastustaja.Animation = new Animation(VastustajanLiike);
147            Vastustaja.Tag = "Vastustaja";
148
149            Add(Vastustaja);
150
151            Vastustaja.Animation.Start();
152
153            PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
154            tasoAivot.Speed = 100;
155
156            Vastustaja.Brain = tasoAivot;
157
158
159        }
160
161        void LuoMaali(Vector paikka, double leveys, double korkeus)
162        {
163            PhysicsObject Maali = new PhysicsObject(100, 1000);
164            Maali.Position = paikka;
165            Maali.Shape = Shape.Rectangle;
166            Maali.Color = Color.Yellow;
167            Maali.Tag = "Maali";
168            Add(Maali);
169        }
170
171        void AsetaOhjaimet()
172        {
173            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
174            Keyboard.Listen(Key.Up, ButtonState.Pressed, PelaajaHyppaa, "Pelaaja hyppää", Pelaaja, HyppyNopeus);
175            Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku oikealle", Pelaaja, Nopeus);
176            Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "Pelaaja liiku vasemmalle", Pelaaja, -Nopeus);
177        }
178
179        void PelaajaHyppaa(PlatformCharacter pelaaja, double nopeus)
180        {
181            pelaaja.Jump(nopeus);
182        }
183
184        void LiikutaPelaajaa(PlatformCharacter pelaaja, double nopeus)
185        {
186            pelaaja.Walk(nopeus);
187        }
188
189        void Laskurit()
190        {
191            LuoElamaLaskuri(Screen.Left + 100, Screen.Top - 100);
192            keratytPallot = LuoPistelaskuri(Screen.Left + 100, Screen.Top - 200);
193        }
194
195        void LuoElamaLaskuri(double x, double y)
196        {
197            elamaLaskuri = new DoubleMeter(10);
198            elamaLaskuri.MaxValue = 10;
199            elamaLaskuri.LowerLimit += ElamaLoppui;
200
201            ProgressBar elamaPalkki = new ProgressBar(100, 20);
202            elamaPalkki.BindTo(elamaLaskuri);
203            elamaPalkki.X = Screen.Left +100;
204            elamaPalkki.Y = Screen.Top - 100;
205            elamaPalkki.BorderColor = Color.Black;
206            Add(elamaPalkki);
207
208        }
209
210        void ElamaLoppui()
211        {
212            MessageDisplay.Add("AUUUUUUUU!!! \n Game Over");
213            SeuraavaKentta();
214        }
215
216        IntMeter LuoPistelaskuri(double x, double y)
217        {
218            IntMeter laskuri = new IntMeter(0);
219            laskuri.MaxValue = 11;
220
221            Label naytto = new Label();
222            naytto.BindTo(laskuri);
223            naytto.X = x;
224            naytto.Y = y;
225            naytto.TextColor = Color.White;
226            naytto.BorderColor = Level.BackgroundColor;
227            naytto.Color = Level.BackgroundColor;
228            Add(naytto);
229
230            return laskuri;
231
232        }
233
234        void TormaaPalloon(PhysicsObject Pelaaja, PhysicsObject pallo)
235        {
236            MessageDisplay.Add("Sait pallon!");
237            keratytPallot.Value += 1;
238            pallo.Destroy();
239        }
240
241        void TormaaVastustajaan(PhysicsObject Pelaaja, PhysicsObject Vastustaja)
242        {
243            MessageDisplay.Add("Ai varo vähän!!!");
244            elamaLaskuri.Value -= 1;
245        }
246
247        void TormaaMaaliin(PhysicsObject Maali, PhysicsObject Pelaaja)
248        {
249            if (keratytPallot == 11)
250            {
251                MessageDisplay.Add("LOISTAVAA");
252                kenttaNro++;
253                SeuraavaKentta();
254            }
255
256            else if (keratytPallot < 11)
257            {
258                MessageDisplay.Add("Et ole viela valmis!!!");
259            }
260        }
261       
262}
Note: See TracBrowser for help on using the repository browser.