source: 2013/27/PihlaM/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 4470

Revision 4470, 10.3 KB checked in by pimuhone, 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 Rajoittaja : PhysicsObject
10{
11    // public double Etaisyys { get; set; }
12    public double MaxEtaisyys { get; set; }
13    public PlatformCharacter Seurattava { get; set; }
14    public Rajoittaja(PlatformCharacter pelaaja, double maxEtaisyysPelaajaan, double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        this.Seurattava = pelaaja;
18        this.MaxEtaisyys = maxEtaisyysPelaajaan;
19        this.IgnoresCollisionResponse = true;
20        this.MakeStatic();
21        IsUpdated = true;
22       
23    }
24
25
26    public override void Update(Time time)
27    {
28        if (this.Seurattava.Y - this.Position.Y > MaxEtaisyys)
29        {
30            this.Position = new Vector(this.Position.X, Seurattava.Y - MaxEtaisyys);
31        }
32
33        //this.Position = new Vector(this.Position.X, Seurattava.Y-100);
34        base.Update(time);
35    }
36}
37
38public class Tasohyppelypeli1 : PhysicsGame
39{
40    const double nopeus = 200;
41    const double hyppyNopeus = 1000;
42    const int RUUDUN_KOKO = 15;
43    double Pisteet = 0;
44    int tasonumero = 1;
45    double edellinenx = 0;
46   
47
48    PlatformCharacter pelaaja1;
49
50    Image pelaajanKuva = LoadImage("ninjamuokattu");
51    Image kuvadonitsi = LoadImage("muokattu");
52    Image tahtikuva = LoadImage("tahti");
53    SoundEffect maaliAani = LoadSoundEffect("maali");
54    List<Label> valikonKohdat;
55    EasyHighScore topLista = new EasyHighScore();
56
57    public override void Begin()
58    {
59        Valikko();
60        AloitaPeli();
61        //Pause();
62    }
63
64    void LuoKentta()
65    {
66        TileMap kentta = TileMap.FromLevelAsset("kentta1");
67        //kentta.SetTileMethod('#', LisaaTaso);
68        kentta.SetTileMethod('+', LisaaDonut);
69        //kentta.SetTileMethod('*', LisaaTahti);
70        kentta.SetTileMethod('N', LisaaPelaaja);
71        kentta.SetTileMethod('-', LisaaMaali);
72
73
74        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
75        Level.CreateBottomBorder(1.0, false);
76        //BottomBorder.Color = Color.SkyBlue;
77        //Level.CreateLeftBorder();
78        //Level.CreateRightBorder();
79        Level.Background.CreateGradient(Color.SkyBlue, Color.Blue);
80        LisaaDonitsiAjastin();
81        LisaaTasoja();
82
83        int i = 0;
84        while (i < 50)
85        {
86            LisaaTaso();
87           
88            i++;
89        }
90        double maxEtaisyysPelaajasta = 300;
91
92        Rajoittaja rajoittaja = new Rajoittaja(pelaaja1, maxEtaisyysPelaajasta, Level.Width, 50);
93        rajoittaja.Tag = "pohja";
94        rajoittaja.Position = new Vector(0, pelaaja1.Y - maxEtaisyysPelaajasta);
95        rajoittaja.Color = Color.Transparent;
96        Add(rajoittaja);
97
98        MessageDisplay.BackgroundColor = Color.Blue;
99       // MessageDisplay.Color = Color.SkyBlue;
100        MessageDisplay.MessageTime = new TimeSpan(0, 0, 5);
101        MessageDisplay.MaxMessageCount = 3;
102
103    }
104
105    void LisaaTaso()
106    {
107        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO * 3, RUUDUN_KOKO);
108        taso.Color = Color.Brown;
109        taso.X = edellinenx + RandomGen.NextDouble(-150, 150);
110        if (taso.X < Level.Left) taso.X = Level.Left;
111        if (taso.X > Level.Right) taso.X = Level.Right;
112        taso.Y = Level.Bottom + tasonumero * 100; RandomGen.NextDouble(pelaaja1.Y-35, pelaaja1.Y+700);
113        taso.Tag = "taso";
114        taso.MakeOneWay();
115        Add(taso);
116        tasonumero++;
117        edellinenx = taso.X;
118
119        LisaaTahti(taso.Position, RUUDUN_KOKO, RUUDUN_KOKO);
120
121    }
122
123    void LisaaTahti(Vector paikka, double leveys, double korkeus)
124    {
125        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
126        tahti.IgnoresCollisionResponse = true;
127        tahti.Position = paikka + RandomGen.NextVector(50, 200);
128        tahti.X = RandomGen.NextDouble(Level.Left, Level.Right);
129        tahti.Y = RandomGen.NextDouble(pelaaja1.Y - 30, pelaaja1.Y + 700);
130        tahti.Image = tahtikuva;
131        tahti.Tag = "tahti";
132        Add (tahti);
133    }
134
135    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
136    {
137        pelaaja1 = new PlatformCharacter(leveys, korkeus);
138        pelaaja1.Position = paikka;
139        pelaaja1.Mass = 7.0;
140        pelaaja1.Image = pelaajanKuva;
141        pelaaja1.Size = new Vector(40, 60);
142        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
143        AddCollisionHandler(pelaaja1, "Donut", tormaadonitsiin);
144        AddCollisionHandler(pelaaja1, "taso", tormaatasoon);
145        AddCollisionHandler<PhysicsObject, Rajoittaja>(pelaaja1, "pohja", delegate { AloitaPeli(); });
146       
147        Add(pelaaja1);
148    }
149
150    void LisaaMaali(Vector paikka, double leveys, double korkeus)
151    {
152        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
153        maali.IgnoresCollisionResponse = true;
154        maali.Position = paikka;
155        maali.Image = LoadImage("muokattumaali");
156        maali.Color = Color.Aqua;
157        maali.Tag = "maali";
158        Add(maali);
159
160    }
161    void LisaaDonut(Vector paikka, double leveys, double korkeus)
162    {
163
164        PhysicsObject Donut = new PhysicsObject(40, 40);
165        Donut.IgnoresCollisionResponse = true;
166
167        Donut.Position = paikka;
168        Donut.Image = LoadImage("muokattu");
169        Donut.Tag = "Donut";
170        Add(Donut);
171
172
173    }
174
175    void tormaadonitsiin(PhysicsObject pelaaja, PhysicsObject Donitsi)
176    {
177        Donitsi.Destroy();
178        pelaaja.Size *= 1.3;
179
180        if (pelaaja.Size.X > 65)
181        {
182            pelaaja.Destroy();
183            Explosion rajahdys = new Explosion(300);
184            rajahdys.Position = pelaaja.Position;
185            Add(rajahdys);
186
187            //Timer.SingleShot(2, AloitaPeli);
188            EasyHighScore topLista = new EasyHighScore();
189            topLista.EnterAndShow(Pisteet);
190            topLista.HighScoreWindow.Closed += delegate { Valikko(); };
191        }
192    }
193
194
195    void LisaaNappaimet()
196    {
197        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
198        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
199        Keyboard.Listen(Key.S, ButtonState.Pressed,  ShowControlHelp, "AloitaAlusta");
200        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pause");
201
202        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
203        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
204        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
205
206        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
207
208        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
209        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
210        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
211
212        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
213    }
214
215    void Liikuta(PlatformCharacter hahmo, double nopeus)
216    {
217        hahmo.Walk(nopeus);
218    }
219
220    void Hyppaa(PlatformCharacter hahmo, double nopeus)
221    {
222        hahmo.Jump(nopeus);
223    }
224
225    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
226    {
227        MessageDisplay.Add("Keräsit tähden!");
228        tahti.Destroy();
229    }
230
231    void Valikko()
232    {
233        ClearAll();
234        IsMouseVisible = true;
235        valikonKohdat = new List<Label>();
236
237        Label kohta1 = new Label("Aloita uusi peli");
238        kohta1.Position = new Vector(0, 40);
239        valikonKohdat.Add(kohta1);
240        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
241
242        Label kohta2 = new Label("Parhaat pisteet");
243        kohta2.Position = new Vector(0, 0);
244        valikonKohdat.Add(kohta2);
245
246        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, ParhaatPisteet, null);
247
248        Label kohta3 = new Label("Lopeta peli");
249        kohta3.Position = new Vector(0, -40);
250        valikonKohdat.Add(kohta3);
251        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Exit, null);
252
253     
254
255
256        foreach (Label valikonKohta in valikonKohdat)
257        {
258            Add(valikonKohta);
259        }
260        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
261    }
262
263    void ValikossaLiikkuminen(AnalogState hiirenTila)
264    {
265
266        foreach (Label kohta in valikonKohdat)
267        {
268            if (Mouse.IsCursorOn(kohta))
269
270                kohta.TextColor = Color.Red;
271
272            else
273
274                kohta.TextColor = Color.Black;
275        }
276
277    }
278    void AloitaPeli()
279    {
280        ClearAll();
281        Gravity = new Vector(0, -1000);
282
283        tasonumero = 0;
284        edellinenx = 0;
285
286        LuoKentta();
287        LisaaNappaimet();
288
289       
290        Camera.FollowY(pelaaja1);
291        Camera.ZoomFactor = 3.5;
292       
293    }
294
295    void LisaaDonitsiAjastin()
296    {
297        Timer ajastin = new Timer();
298        ajastin.Interval = 1.5;
299        ajastin.Timeout += LisaaDonitseja;
300        ajastin.Start();
301    }
302
303    void LisaaDonitseja()
304    {
305        Vector paikka = new Vector(RandomGen.NextDouble(Level.Left, Level.Right), pelaaja1.Y+800);
306        LisaaDonut(paikka, 100, 100);
307    }
308
309
310    void tormaatasoon(PhysicsObject tormaaaja, PhysicsObject taso)
311    {
312        taso.LifetimeLeft = TimeSpan.FromSeconds(2.0);
313    }
314
315    void ParhaatPisteet()
316    {
317    }
318
319
320    void PelaajaKuoli()
321
322    {
323        ClearAll();
324        Pisteet = pelaaja1.Y;
325        EasyHighScore topLista =new EasyHighScore();
326        topLista.EnterAndShow(Pisteet);
327        topLista.HighScoreWindow.Closed += delegate { Valikko(); };
328    }
329
330    void NaytaHighScore()
331    {
332        EasyHighScore topLista = new EasyHighScore();
333        topLista.Show();
334        topLista.HighScoreWindow.Closed += delegate { Valikko();};
335    }
336
337      void  LisaaTasoja()
338    {
339        Timer ajastin = new Timer();
340        ajastin.Interval = 0.3;
341        ajastin.Timeout += LisaaTaso;
342        ajastin.Start();
343
344   }
345
346
347}
348
349
350
351
352
353
354
355
Note: See TracBrowser for help on using the repository browser.