source: 2010/23/juhkuska/Laten laivaseikkailu/Peli.cs @ 729

Revision 729, 8.2 KB checked in by juhkuska, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6
7namespace Laten_laivaseikkailu
8{
9    class Tasohyppely : PhysicsGame
10    {
11        const double nopeus = 280;
12        const double hyppyVoima = 3000;
13
14        IntMeter pisteLaskuri;
15        ValueDisplay pisteNaytto;
16
17        Timer ajastin;
18                 
19            } {void jaalaivaan ( Timer sender );
20        }
21        PlatformCharacter pelaaja1;
22
23
24
25        protected override void Begin()
26        {
27            kenttaNro = 0;
28            Level.Width = 13000;
29            Level.Height = 1000;
30
31            // Luodaan pistelaskuri
32            pisteLaskuri = new IntMeter(0);
33
34            // luodaan pistelaskunäyttö
35            pisteNaytto = new ValueDisplay();
36            pisteNaytto.Text = "Pisteitä: ";
37            pisteNaytto.X = Screen.RightSafe - 250;
38            pisteNaytto.Y = Screen.TopSafe - 50;
39            pisteNaytto.BindTo(pisteLaskuri);
40            Add(pisteNaytto);    // lisätään peliin
41
42           
43           
44
45
46            // Zoomataan lähemmäksi
47            Camera.ZoomFactor = 2.0;
48
49            Camera.StayInLevel = true;
50
51
52
53            seuraavaKentta();
54           
55        }
56
57        void seuraavaKentta()
58        {
59            ClearAll();
60            ajastin = new Timer();
61            ajastin.Interval = 2;
62            Add(ajastin);
63            ajastin.Start();
64            pisteLaskuri.Reset();
65           
66            // Asetetaan painovoima
67            Gravity = new Vector(0, -1400);
68
69            luoKentta();
70            lisaaNappaimet();
71            MessageDisplay.Add("Juokse nopeasti laivaan, mutta varo veteen tippumista!!!-muuten häviät!");
72            Camera.Follow(pelaaja1);
73        }
74
75        void luoKentta() 
76        {
77            Level.CreateBorders();
78            Level.Background.CreateGradient(Color.SkyBlue, Color.LightYellow);
79
80            lisaaVene(Level.Left + 40, 45, 85);
81            lisaaVene(Level.Left +200, 50, 110 );
82            lisaaVene(Level.Left +500, 70, 100);
83            lisaaVene(Level.Left + 740, 60, 115);
84            lisaaVene(Level.Left +910, 95, 150);
85            lisaaVene(Level.Left + 1175, 180, 240);
86            lisaaVene(Level.Left + 1600, 60, 103);
87            lisaaVene(Level.Left + 2000, 133, 300);
88            lisaaVene(Level.Left + 2411, 155, 380);
89            lisaaVene(Level.Left + 3000, 200, 450);
90            lisaaVene(Level.Left + 3550, 100, 200);
91            lisaaVene(Level.Left + 3955, 100, 200);
92            lisaaVene(Level.Left + 4210, 90, 169);
93            lisaaVene(Level.Left + 4600, 132, 200);
94            lisaaVene(Level.Left + 4911, 80, 130);
95            lisaaVene(Level.Left + 5200, 177, 355);
96            lisaaVene(Level.Left + 5555, 110, 207);
97            lisaaVene(Level.Left + 5989, 185, 244);
98            lisaaVene(Level.Left + 6333, 100, 140);
99            lisaaVene(Level.Left + 6600, 110, 200);
100            lisaaVene(Level.Left + 7000, 135, 266);
101            lisaaVene(Level.Left + 7334, 105, 199);
102            lisaaVene(Level.Left + 7700, 105, 277);
103            lisaaVene(Level.Left + 8100, 90, 175 );
104            lisaaVene(Level.Left + 8599, 120, 370);
105            lisaaVene(Level.Left + 8911, 70, 195);
106            lisaaVene(Level.Left + 9270, 120, 90);
107            lisaaVene(Level.Left + 9590, 150, 300);
108            lisaaVene(Level.Left + 9877, 45, 70);
109            lisaaVene(Level.Left + 10111, 69, 170);
110            lisaaVene(Level.Left + 10455, 115, 168);
111            lisaaVene(Level.Left + 10799, 140, 260);
112            lisaaVene(Level.Left + 11211, 133, 222);
113            lisaaVene(Level.Left + 11500, 80, 150);
114            lisaaVene(Level.Left + 11850, 100, 200);
115            lisaaVene(Level.Left + 12200, 115, 250);
116            lisaaVene(Level.Left + 12488, 119 , 180);
117
118            for (int i = 0; i < 200; i++)
119
120            {
121                PhysicsObject vesi = PhysicsObject.CreateStaticObject(100, 30);
122                vesi.X = Level.Left+(100*i);
123                vesi.Y = Level.Bottom;
124                Add(vesi);
125                vesi.Image = LoadImage("vesi");
126                AddCollisionHandler(vesi, KasitteleVedenTormaus);
127               
128
129            }
130
131
132            lisaaMaali();
133            lisaaPelaajat();
134        }
135        void KasitteleVedenTormaus( PhysicsObject vesi, PhysicsObject kohde)
136        {
137            TextDisplay viesti = new TextDisplay();
138            viesti.Text = "Putosit veteen ja joudut uimaan etkä siis ehdi enää laivaan!!! Hävisit pelin! :(";
139            Add (viesti);
140
141            Timer aloitaKenttaAlustaAjastin = new Timer();
142            aloitaKenttaAlustaAjastin.Interval = 3;
143            aloitaKenttaAlustaAjastin.Trigger += new Timer.TriggerHandler(aloitaKenttaAlusta);
144            Add(aloitaKenttaAlustaAjastin);
145            aloitaKenttaAlustaAjastin.Start();
146        }
147
148        void aloitaKenttaAlusta( Timer sender )
149        {
150            kenttaNro -= 1;
151            seuraavaKentta();
152        }
153
154        void lisaaVene(double x, double korkeus, double leveys )
155         
156        {
157            PhysicsObject vene = PhysicsObject.CreateStaticObject(leveys , korkeus);
158            vene.Color = Color.Brown;
159           vene.X = x;
160           vene.Y = Level.Bottom;
161           vene.Image = LoadImage("vene");
162            Add(vene);
163        }
164
165        void lisaaPelaajat()
166        {
167            pelaaja1 = new PlatformCharacter(40, 40);
168            pelaaja1.Mass = 4.0;
169            pelaaja1.Image = LoadImage("Late");
170            pelaaja1.X = Level.Left;
171            pelaaja1.Y = Level.Bottom + 120;
172
173            AddCollisionHandler(pelaaja1, osuiMaaliin);
174
175            Add(pelaaja1);
176        }
177
178        void lisaaMaali()
179        {
180            PhysicsObject maali = PhysicsObject.CreateStaticObject(430, 500, Shapes.Rectangle);
181            maali.Tag = "laiva";
182            maali.IgnoresCollisionResponse = true;
183            maali.X = Level.Right - maali.Size.X / 2;
184            maali.Y = Level.Bottom + maali.Size.Y / 2;
185            maali.Image = LoadImage("laiva");
186            Add(maali);
187        }
188
189        void lisaaNappaimet()
190        {
191            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
192            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
193
194            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
195            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
196            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
197
198            lisaaGamePadNappaimet(ControllerOne);
199        }
200
201        void lisaaGamePadNappaimet(GamePad controller)
202        {
203            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
204
205            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
206            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
207            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
208        }
209
210        void liikuta(PlatformCharacter hahmo, double nopeus)
211        {
212            hahmo.Walk(nopeus);
213        }
214
215        void hyppaa(PlatformCharacter hahmo, double voima)
216        {
217            hahmo.Jump(voima);
218        }
219
220        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
221        {
222            if (otherObject.Tag.ToString() == "laiva")
223            {
224                this.PlaySound("maali");
225                int edellisenKentanPisteet = pisteLaskuri.Value;
226     
227
228               
229                MessageDisplay.Add("Hyvä! Pääsit laivaan ja sillä kotiin! " + kenttaNro + ". Aika: " + ajastin.CurrentTime);
230                seuraavaKentta();
231                Timer jaalaivaanAjastin;
232                jaalaivaanAjastin.Interval = 3;
233                jaalaivaanAjastin.Trigger += new Timer.TriggerHandler(jaalaivaan);
234                Add(jaalaivaanAjastin);
235                jaalaivaanAjastin.Start();
236
237            } {void jaalaivaan ( Timer sender );
238        }
239    }
240    }
241}
Note: See TracBrowser for help on using the repository browser.