source: 2013/24/EelisK/Run/Run/Run/Run.cs @ 4154

Revision 4154, 10.4 KB checked in by eetakoiv, 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
9namespace RunNS
10{
11
12    public class Run : PhysicsGame
13    {
14        int tasoNro = 1;
15        ScoreList topLista = new ScoreList(10, true, 999);
16
17        const double nopeus = 200;
18        const double hyppyNopeus = 550;
19        const int RUUDUN_KOKO = 40;
20        IntMeter pistelaskuri = new IntMeter(0);
21
22        Pelaaja pelaaja1;
23
24        Image pelaajanKuva = LoadImage("norsu");
25        Image tahtiKuva = LoadImage("tahti");
26        Image AnsanKuva = LoadImage("Este2");
27
28        bool Tuleeko = true;
29
30
31        private Animation tyypinkavely;
32
33        public override void Begin()
34        {
35            topLista = DataStorage.TryLoad<ScoreList>(topLista, "pisteet.xml");
36
37            Level.Background.Image = LoadImage("alkutausta");
38            Level.Background.FitToLevel();
39            Level.BackgroundColor = Color.Black;
40            Camera.ZoomToLevel();
41            MultiSelectWindow alkuValikko = new MultiSelectWindow("HardRun", "Start", "End Game");
42            alkuValikko.AddItemHandler(0, AloitaPeli);
43            alkuValikko.AddItemHandler(1, Exit);
44            alkuValikko.Color = Color.Black;
45            alkuValikko.Right = Screen.Right - alkuValikko.Width;
46            Add(alkuValikko);
47        }
48
49        void AloitaPeli()
50        {
51            tyypinkavely = LoadAnimation("tyyppi");
52            // LuoKentta();
53            SeuraavaKentta();
54        }
55
56        void SeuraavaKentta()
57        {
58            ClearAll();
59
60            if (tasoNro == 1) LuoKentta("taso1");
61            else if (tasoNro == 2) LuoKentta("taso2");
62            else if (tasoNro == 3) LuoKentta("taso3");
63            else if (tasoNro == 4) LuoKentta("taso4");
64            else if (tasoNro == 5) LuoKentta("taso5");
65            Gravity = new Vector(0, -900);
66            Camera.Follow(pelaaja1);
67            Camera.ZoomFactor = 1.2;
68            Camera.StayInLevel = true;
69            LuoPistelaskuri();
70
71            LisaaNappaimet();
72        }
73
74        protected override void Update(Time time)
75        {
76            if (pelaaja1 != null && !pelaaja1.IsDestroyed) pelaaja1.Walk(nopeus);
77            base.Update(time);
78        }
79
80
81        void LuoKentta(string kenttaTiedostonNimi)
82        {
83            TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
84            MediaPlayer.Play("touluse");
85            kentta.SetTileMethod('#', LisaaTaso);
86            kentta.SetTileMethod('*', LisaaTahti);
87            kentta.SetTileMethod('N', LisaaPelaaja);
88            kentta.SetTileMethod('E', LisaaPalikka);
89            kentta.SetTileMethod('O', LisaaAnsa);
90            kentta.SetTileMethod('M', LisaaMaali);
91            kentta.SetTileMethod('L', LisaaLoppuMaali);
92            kentta.SetTileMethod('P', LisaaPelottavaNaama);
93            kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
94            Level.CreateBorders();
95            Level.Background.Image = Image.FromGradient(2048, 2048, Color.Red, Color.Blue);
96            Level.Background.FitToLevel();
97
98            Add(pelaaja1);
99
100        }
101        void TormasiMaaliin(PhysicsObject pelaaja1, PhysicsObject maali)
102        {
103            tasoNro++;
104            Tuleeko = true;
105            SeuraavaKentta();
106        }
107
108        void TormasiLoppuMaaliin(PhysicsObject pelaaja1, PhysicsObject LoppuMaali)
109        {
110            HighScoreWindow topIkkuna = new HighScoreWindow(
111                                         "Parhaat pisteet",
112                                         "Onneksi olkoon, pääsit listalle pisteillä %p! Syötä nimesi:",
113                                         topLista, pistelaskuri.Value);
114            topIkkuna.Closed += TallennaPisteet;
115            Add(topIkkuna);
116        }
117
118        void TallennaPisteet(Window sender)
119        {
120            DataStorage.Save<ScoreList>(topLista, "pisteet.xml");
121        }
122
123        void LisaaPalikka(Vector paikka, double leveys, double korkeus)
124        {
125            PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
126            taso.Position = paikka;
127            taso.Image = LoadImage("square");
128            //taso.Shape = Shape.FromImage(taso.Image);
129            Add(taso);
130        }
131
132        void LisaaPelottavaNaama(Vector paikka, double leveys, double korkeus)
133        {
134            if (Tuleeko ==  true) 
135            {
136
137                PhysicsObject naamaPalikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
138                naamaPalikka.Position = paikka;
139                naamaPalikka.Image = LoadImage("square");
140                naamaPalikka.Tag = "pelottavaJuttu";
141                //taso.Shape = Shape.FromImage(taso.Image);
142                Add(naamaPalikka);
143            }
144        }
145
146        void TormattiinPelottavaanNaamaan(PhysicsObject tormaaja, PhysicsObject naamaPalikka)
147        {
148            tormaaja.Destroy();
149            naamaPalikka.Destroy();
150            Tuleeko = false;
151            ClearAll();
152            Image sairaanPelottavaKuva = LoadImage("eyes");
153            Level.Size = new Vector(1000, 800);
154            Level.Background.Image = sairaanPelottavaKuva;
155            Level.Background.ScaleToLevel();
156            Level.BackgroundColor = Color.Black;
157            Camera.ZoomToLevel();
158            MediaPlayer.Stop();
159            SoundEffect hyppyAani = LoadSoundEffect("scream");
160            hyppyAani.Play();
161            Timer.SingleShot(5.0, SeuraavaKentta);
162        }
163
164        void LisaaTaso(Vector paikka, double leveys, double korkeus)
165        {
166            PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
167            taso.Position = paikka;
168            taso.Image = LoadImage("square");
169            Add(taso);
170        }
171
172        void LisaaTahti(Vector paikka, double leveys, double korkeus)
173        {
174            PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
175            tahti.IgnoresCollisionResponse = true;
176            tahti.Position = paikka;
177            tahti.Image = tahtiKuva;
178            tahti.Tag = "tahti";
179            Add(tahti);
180        }
181
182        void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
183        {
184            pelaaja1 = new Pelaaja(leveys, korkeus);
185            pelaaja1.Shape = Shape.Circle;
186            pelaaja1.Position = paikka;
187            pelaaja1.aloituspaikka = paikka;
188            pelaaja1.Mass = 4.0;
189            pelaaja1.Image = pelaajanKuva;
190            pelaaja1.Animation = tyypinkavely;
191            pelaaja1.Animation.Start();
192            AddCollisionHandler<Pelaaja, PhysicsObject>(pelaaja1, "ansa", TormaaEsteeseen);
193            AddCollisionHandler(pelaaja1, "maali", TormasiMaaliin);
194            AddCollisionHandler(pelaaja1, "loppumaali", TormasiLoppuMaaliin);
195            AddCollisionHandler(pelaaja1, "pelottavaJuttu", TormattiinPelottavaanNaamaan);
196            Add(pelaaja1);
197        }
198
199        void LisaaNappaimet()
200        {
201            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
202            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "EndGame");
203            Keyboard.Listen(Key.R, ButtonState.Pressed, TormaaEsteeseen, "Aloita peli alusta", pelaaja1, new PhysicsObject(1, 1));
204
205            //Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
206            //Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
207            Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
208
209            ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
210
211            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
212            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
213            ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
214
215            PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
216        }
217
218        void Liikuta(PlatformCharacter hahmo, double nopeus)
219        {
220            hahmo.Walk(nopeus);
221        }
222
223        void Hyppaa(PlatformCharacter hahmo, double nopeus)
224        {
225            hahmo.Jump(nopeus);
226        }
227
228        void TormaaEsteeseen(Pelaaja hahmo, PhysicsObject este)
229        {
230            pistelaskuri.Value++;
231            MessageDisplay.Add("RUN");
232            Explosion rajahdys = new Explosion(40);
233            rajahdys.UseShockWave = false;
234            rajahdys.Position = este.Position;
235            Add(rajahdys, 1);
236            Timer.SingleShot(0.2,
237                delegate { hahmo.Position = hahmo.aloituspaikka; }
238            );
239        }
240
241        void LisaaAnsa(Vector paikka, double leveys, double korkeus)
242        {
243            PhysicsObject ansa = PhysicsObject.CreateStaticObject(leveys, korkeus);
244            ansa.Position = paikka;
245            ansa.Image = AnsanKuva;
246            ansa.Tag = "ansa";
247            ansa.Shape = Shape.FromImage(ansa.Image);
248            Add(ansa);
249        }
250
251
252
253        void LisaaMaali(Vector paikka, double leveys, double korkeus)
254        {
255            PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
256            maali.Position = paikka;
257            maali.Tag = "maali";
258            maali.Image = LoadImage("maali1");
259            Add(maali);
260        }
261
262        void LisaaLoppuMaali(Vector paikka, double leveys, double korkeus)
263        {
264            PhysicsObject loppuMaali = PhysicsObject.CreateStaticObject(leveys, korkeus);
265            loppuMaali.Position = paikka;
266            loppuMaali.Tag = "loppumaali";
267            loppuMaali.Image = LoadImage("maali1");
268            Add(loppuMaali);
269        }
270
271
272        void LuoPistelaskuri()
273        {
274            //pistelaskuri = new IntMeter(0);
275
276            Label pisteNaytto = new Label();
277            pisteNaytto.X = Screen.Left + 100;
278            pisteNaytto.Y = Screen.Top - 100;
279            pisteNaytto.TextColor = Color.BloodRed;
280            pisteNaytto.Color = Color.White;
281            pisteNaytto.Font = Font.DefaultLarge;
282
283            pisteNaytto.BindTo(pistelaskuri);
284            Add(pisteNaytto);
285
286
287
288
289        }
290    }
291}
Note: See TracBrowser for help on using the repository browser.