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

Revision 759, 8.6 KB checked in by juhkuska, 10 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        int kenttaNro;         
19           
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            PhysicsObject näkymätöntaso = PhysicsObject.CreateStaticObject (800, 350);
80            näkymätöntaso.IsVisible = false;
81            näkymätöntaso.Shape = Shapes.Rectangle;
82            näkymätöntaso.X = Level.Right;
83            näkymätöntaso.Y = Level.Bottom;
84            Add(näkymätöntaso);
85
86            lisaaVene(Level.Left + 40, 45, 85);
87            lisaaVene(Level.Left +200, 50, 110 );
88            lisaaVene(Level.Left +500, 70, 100);
89            lisaaVene(Level.Left + 740, 60, 115);
90            lisaaVene(Level.Left +910, 95, 150);
91            lisaaVene(Level.Left + 1175, 180, 240);
92            lisaaVene(Level.Left + 1600, 60, 103);
93            lisaaVene(Level.Left + 2000, 133, 300);
94            lisaaVene(Level.Left + 2411, 155, 380);
95            lisaaVene(Level.Left + 3000, 200, 450);
96            lisaaVene(Level.Left + 3550, 100, 200);
97            lisaaVene(Level.Left + 3955, 100, 200);
98            lisaaVene(Level.Left + 4210, 90, 169);
99            lisaaVene(Level.Left + 4600, 132, 200);
100            lisaaVene(Level.Left + 4911, 80, 130);
101            lisaaVene(Level.Left + 5200, 177, 355);
102            lisaaVene(Level.Left + 5555, 110, 207);
103            lisaaVene(Level.Left + 5989, 185, 244);
104            lisaaVene(Level.Left + 6333, 100, 140);
105            lisaaVene(Level.Left + 6600, 110, 200);
106            lisaaVene(Level.Left + 7000, 135, 266);
107            lisaaVene(Level.Left + 7334, 105, 199);
108            lisaaVene(Level.Left + 7700, 105, 277);
109            lisaaVene(Level.Left + 8100, 90, 175 );
110            lisaaVene(Level.Left + 8599, 120, 370);
111            lisaaVene(Level.Left + 8911, 70, 195);
112            lisaaVene(Level.Left + 9270, 120, 90);
113            lisaaVene(Level.Left + 9590, 150, 300);
114            lisaaVene(Level.Left + 9877, 45, 70);
115            lisaaVene(Level.Left + 10111, 69, 170);
116            lisaaVene(Level.Left + 10455, 115, 168);
117            lisaaVene(Level.Left + 10799, 140, 260);
118            lisaaVene(Level.Left + 11211, 133, 222);
119            lisaaVene(Level.Left + 11500, 80, 150);
120            lisaaVene(Level.Left + 11850, 100, 200);
121            lisaaVene(Level.Left + 12200, 115, 250);
122            lisaaVene(Level.Left + 12488, 130 , 185);
123
124            for (int i = 0; i < 200; i++)
125
126            {
127                PhysicsObject vesi = PhysicsObject.CreateStaticObject(100, 30);
128                vesi.X = Level.Left+(100*i);
129                vesi.Y = Level.Bottom;
130                Add(vesi);
131                vesi.Image = LoadImage("vesi");
132                AddCollisionHandler(vesi, KasitteleVedenTormaus);
133            }
134
135            lisaaMaali();
136            lisaaPelaajat();
137        }
138        void KasitteleVedenTormaus( PhysicsObject vesi, PhysicsObject kohde)
139        {
140            if (kohde == pelaaja1)
141            {
142                TextDisplay viesti = new TextDisplay();
143                viesti.Text = "Putosit veteen ja joudut uimaan etkä siis ehdi enää laivaan!!! Hävisit pelin! :(";
144                Add(viesti);
145
146                Timer aloitaKenttaAlustaAjastin = new Timer();
147                aloitaKenttaAlustaAjastin.Interval = 5;
148                aloitaKenttaAlustaAjastin.Trigger += new Timer.TriggerHandler(aloitaKenttaAlusta);
149                Add(aloitaKenttaAlustaAjastin);
150                aloitaKenttaAlustaAjastin.Start();
151            }
152
153        }
154
155        void aloitaKenttaAlusta( Timer sender )
156        {
157            kenttaNro -= 1;
158            seuraavaKentta();
159        }
160
161        void lisaaVene(double x, double korkeus, double leveys )
162         
163        {
164            PhysicsObject vene = PhysicsObject.CreateStaticObject(leveys , korkeus);
165            vene.Color = Color.Brown;
166            vene.X = x;
167            vene.Y = Level.Bottom;
168            vene.Image = LoadImage("vene");
169            Add(vene);
170        }
171
172        void lisaaPelaajat()
173        {
174            pelaaja1 = new PlatformCharacter(40, 40);
175            pelaaja1.Mass = 4.0;
176            pelaaja1.Image = LoadImage("Late");
177            pelaaja1.X = Level.Left;
178            pelaaja1.Y = Level.Bottom + 120;
179
180            AddCollisionHandler(pelaaja1, osuiMaaliin);
181
182            Add(pelaaja1);
183        }
184
185        void lisaaMaali()
186        {
187            PhysicsObject maali = PhysicsObject.CreateStaticObject(430, 500, Shapes.Rectangle);
188            maali.Tag = "laiva";
189            maali.IgnoresCollisionResponse = true;
190            maali.X = Level.Right - maali.Size.X / 2;
191            maali.Y = Level.Bottom + maali.Size.Y / 2;
192            maali.Image = LoadImage("laiva");
193            Add(maali);
194        }
195
196        void lisaaNappaimet()
197        {
198            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
199            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
200
201            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
202            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
203            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
204
205            lisaaGamePadNappaimet(ControllerOne);
206        }
207
208        void lisaaGamePadNappaimet(GamePad controller)
209        {
210            controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
211
212            controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
213            controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
214            controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
215        }
216
217        void liikuta(PlatformCharacter hahmo, double nopeus)
218        {
219            hahmo.Walk(nopeus);
220        }
221
222        void hyppaa(PlatformCharacter hahmo, double voima)
223        {
224            hahmo.Jump(voima);
225        }
226
227        void osuiMaaliin(PhysicsObject collidingObject, PhysicsObject otherObject)
228        {
229            if (otherObject.Tag.ToString() == "laiva")
230            {
231                this.PlaySound("maali");
232                int edellisenKentanPisteet = pisteLaskuri.Value;
233
234
235
236                TextDisplay viesti = new TextDisplay();
237                viesti.Text = "Hyvä!!! Pääsit laivaan ja sillä kotiin1";
238                Add(viesti);
239
240                Timer jaalaivaanAjastin =new Timer() ;
241                jaalaivaanAjastin.Interval = 5;
242                jaalaivaanAjastin.Trigger += new Timer.TriggerHandler(jaalaivaan);
243                Add(jaalaivaanAjastin);
244                jaalaivaanAjastin.Start();
245
246            } 
247    }
248        void jaalaivaan ( Timer sender ){
249             seuraavaKentta();
250        }
251    }
252}
Note: See TracBrowser for help on using the repository browser.