source: 2010/27/frjolehm/The King of the island/The King of the island/Peli.cs @ 1190

Revision 1190, 12.2 KB checked in by frjolehm, 12 years ago (diff)

Viimeistelin yhden mapin ja lisäsin lataus palkin.

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects; 
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7public class Peli : PhysicsGame
8{
9 
10    PlatformCharacter pelaaja1;
11    PlatformCharacter pelaaja2;
12
13    PhysicsObject vasenreuna;
14    PhysicsObject oikeareuna;
15    PhysicsObject alareuna;
16    PhysicsObject yläreuna;
17
18    const int Joukkueenkoko = 3;
19    int Pelaajan1joukkue = Joukkueenkoko;
20    int Pelaajan2joukkue = Joukkueenkoko;
21    int peliMuoto = 2;
22
23    Boolean Pelaajan1JuoksuAskel;
24    Boolean Pelaajan2JuoksuAskel;
25    const double Juoksunopeus = 20;//20
26    const double Juoksunkiihtyvyys = 2.5;
27    double Pelaajan1Juoksunopeus = Juoksunopeus;
28    double Pelaajan2Juoksunopeus = Juoksunopeus;
29
30    const double HyppyVoima = 4000;
31
32    ImageDisplay numero;
33    DoubleMeter alaspainLaskuri;
34
35    ImageDisplay lataus;
36
37    int VoitonValinta;
38
39
40    protected override void Begin()
41    {
42        Aloitapikkupeli();
43    }
44
45    void LataaLatausKuva() 
46    {
47        lataus = new ImageDisplay();
48        lataus.Image = LoadImage("Lataa");
49        lataus.IsVisible = false;
50        Add(lataus);
51    }
52
53
54    void Aloitapikkupeli()
55    {
56        VoitonValinta = 0;
57        peliMuoto++;
58        ClearAll();
59        LataaLatausKuva();
60
61        //Kuoleman juoksu
62        if (peliMuoto == 1)
63        {
64            Camera.Reset();
65
66            LuoKenttä(800,700);
67            Camera.ZoomToLevel();
68            Level.Background.Image = LoadImage("Kenttä1");
69            LuoElämät();
70            AddCollisionHandler(oikeareuna, Voitto);
71            pelaaja1 = LuoUkko(Level.Left + 30,Level.Bottom + 75,85, 75,"Tipu1");
72            pelaaja2 = LuoUkko(Level.Left+ 30,Level.Bottom + 200,85, 75,"Tipu2");
73
74            LuoAikaLaskuri();
75        }
76        else if (peliMuoto == 2)
77        {
78       
79            Camera.Reset();
80
81            LuoKenttä(30000, 1000);
82            LuoTausta(30000, Level.Bottom+75);
83
84            lisääTaso(Level.Left, Level.Bottom + 400, 30000, 30);
85            LuoTausta(30000, Level.Bottom + 475);
86
87            pelaaja1 = LuoUkko(Level.Left + 10, Level.Bottom + 75, 85, 75, "Tipu1");
88            pelaaja2 = LuoUkko(Level.Left + 10, Level.Bottom + 475, 85, 75, "Tipu2");
89            Pelaajan1Juoksunopeus = 5000;
90            Pelaajan2Juoksunopeus = 5000;
91
92            Gravity = new Vector(0, -1000);
93
94            LuoElämät();
95
96            LuoAikaLaskuri();
97       
98        }
99        else if (peliMuoto == 3)
100        {
101            Camera.Reset();
102
103            LuoKenttä(800, 700);
104            Camera.ZoomToLevel();
105            Camera.Y = 0;
106
107            LuoElämät();
108
109            pelaaja1 = LuoUkko(Level.Left + 100, Level.Bottom + 75, 85, 75, "Tipu1");
110            pelaaja2 = LuoUkko(Level.Left + 30, Level.Bottom + 75, 85, 75, "Tipu2");
111
112            Gravity = new Vector(0, -600);
113
114            LuoAikaLaskuri();
115        }
116
117    }
118
119    void LuoTausta(int w, double y)
120    {
121        for (double x = Level.Left+2500; x < w; x += RandomGen.NextDouble(600,1000) )
122        {
123            LuoTaustaEsineitä(x, y, 100, 50, "Aita");
124        }
125    }
126    void LuoTaustaEsineitä(double x, double y, double w, double h, string nimi)
127    {
128        PhysicsObject ukko = new PhysicsObject(w,h,Shapes.Rectangle);
129        ukko.Image = LoadImage(nimi);
130        AddCollisionHandler(ukko, Voitto);
131        ukko.Restitution = 0;
132        ukko.X = x;
133        ukko.Y = y;
134        Add(ukko);
135    }
136
137    void LuoKenttä(double width, double height)
138    {
139        Level.Width = width;
140        Level.Height = height;
141
142        vasenreuna = Level.CreateLeftBorder();
143        vasenreuna.IsVisible = false;
144
145        oikeareuna = Level.CreateRightBorder();
146        oikeareuna.IsVisible = false;
147
148        yläreuna = Level.CreateTopBorder(); 
149        yläreuna.IsVisible = false;
150
151        alareuna = Level.CreateBottomBorder();
152        alareuna.Color = Color.Green;
153        alareuna.IsVisible = true;
154
155    }
156
157    void lisääTaso(double x, double y, double w, double h)
158    {
159        PhysicsObject taso = PhysicsObject.CreateStaticObject(w, h);
160        taso.Color = Color.Green;
161        taso.X = x;
162        taso.Y = y;
163        Add(taso);
164    }
165
166    void HyppyOhjaimet()
167    {
168        Keyboard.Listen(Key.W, ButtonState.Pressed, LuoHyppy, "Pelaaja1 hyppää", pelaaja1, false);
169        Keyboard.Listen(Key.Up, ButtonState.Pressed, LuoHyppy, "Pelaaja2 hyppää", pelaaja2, true);
170    }
171
172    void LuoHyppy(PlatformCharacter ukko,Boolean pelaaja)
173    {
174        ukko.Jump(HyppyVoima);
175        if (pelaaja == false)
176        {
177            Pelaajan1Juoksunopeus += Juoksunkiihtyvyys * 100;
178        }
179        else
180        {
181            Pelaajan2Juoksunopeus += Juoksunkiihtyvyys * 100;
182        }
183    }
184
185
186    void JuoksuOhjaimet() 
187    {
188        Keyboard.Listen(Key.A, ButtonState.Pressed, LuoJuoksu, "Pelaaja1 liikkuu", pelaaja1, false, false);
189        Keyboard.Listen(Key.D, ButtonState.Pressed, LuoJuoksu, "Pelaaja1 liikkuu", pelaaja1, false, true);
190
191        Keyboard.Listen(Key.Left, ButtonState.Pressed, LuoJuoksu, "Pelaaja2 liikkuu", pelaaja2, true, false);
192        Keyboard.Listen(Key.Right, ButtonState.Pressed, LuoJuoksu, "Pelaaja2 liikkuu", pelaaja2, true, true);
193    }
194
195    //                   ukko          false = p1 true = p2    false = n1 true = n2
196    void LuoJuoksu(PlatformCharacter ukko, Boolean pelaaja, Boolean näppäin)
197    {
198        //Pelaaja 1
199        if (pelaaja == false)
200        {
201            if (näppäin == Pelaajan1JuoksuAskel)
202            {
203                Pelaajan1Juoksunopeus += Juoksunkiihtyvyys;
204                Liikuta(ukko,Pelaajan1Juoksunopeus);
205                if (Pelaajan1JuoksuAskel == true)
206                {
207                    Pelaajan1JuoksuAskel = false;
208                }
209                else
210                {
211                    Pelaajan1JuoksuAskel = true;
212                }
213
214            }
215            if (Pelaajan1Juoksunopeus >= Juoksunopeus)
216            {
217                Pelaajan1Juoksunopeus -= 1;
218            }
219        }
220        else
221        {
222            if (näppäin == Pelaajan2JuoksuAskel)
223            {
224                Pelaajan2Juoksunopeus += Juoksunkiihtyvyys;
225                Liikuta(ukko, Pelaajan2Juoksunopeus);
226                if (Pelaajan2JuoksuAskel == true)
227                {
228                    Pelaajan2JuoksuAskel = false;
229                }
230                else
231                {
232                    Pelaajan2JuoksuAskel = true;
233                }
234            }
235            if (Pelaajan2Juoksunopeus >= Juoksunopeus)
236            {
237                Pelaajan2Juoksunopeus -= 1;
238            }
239        }
240    }
241
242    void VäistelyOhjaimet() 
243    {
244        Keyboard.Listen(Key.A, ButtonState.Down, pelaaja1.Walk, "Liiku vasemmalle", -(Juoksunopeus*6));
245        Keyboard.Listen(Key.D, ButtonState.Down, pelaaja1.Walk, "Liiku oikealle", Juoksunopeus*6);
246        Keyboard.Listen(Key.W, ButtonState.Pressed, LuoHyppy, "Hyppää", pelaaja1, false);
247
248        Keyboard.Listen(Key.Left, ButtonState.Down, pelaaja2.Walk, "Liiku vasemmalle", -(Juoksunopeus*6));
249        Keyboard.Listen(Key.Right, ButtonState.Down, pelaaja2.Walk, "Liiku oikealle", Juoksunopeus*6);
250        Keyboard.Listen(Key.Up, ButtonState.Pressed, LuoHyppy, "Hyppää", pelaaja2, true);
251    }
252
253    void LuoVoittaja(PlatformCharacter voittaja, PlatformCharacter hävijäjä)
254    {
255        ClearControls();
256
257        Gravity = new Vector(0, 0);
258        voittaja.IgnoresCollisionResponse = true;
259        hävijäjä.IgnoresCollisionResponse = true;
260
261        Keyboard.Listen(Key.Enter, ButtonState.Pressed, LuoLataus, "Jatka");
262        voittaja.Width = 170;
263        voittaja.Height = 150;
264
265
266    }
267    void LuoLataus()
268    {
269        Timer ajastin = new Timer();
270        ajastin.Interval = 1;
271        ajastin.Trigger += AjastinLoppu;
272
273        lataus.IsVisible = true;
274
275        Add(ajastin);
276        ajastin.Start();
277    }
278
279    void AjastinLoppu(Timer sender)
280    {
281       
282        Aloitapikkupeli();
283    }
284
285    void Voitto(PhysicsObject maali, PhysicsObject kohde) 
286    {
287        if (VoitonValinta == 0)
288        {
289            if (kohde == pelaaja1)
290            {
291                VoitonValinta = 1;
292                if (peliMuoto == 1)
293                {
294                    Pelaajan2joukkue--;
295                    LuoVoittaja(pelaaja1, pelaaja2);
296                }
297                else if (peliMuoto == 2)
298                {
299                    Pelaajan1joukkue--;
300                    LuoVoittaja(pelaaja2, pelaaja1);
301                }
302            }
303            else if (kohde == pelaaja2)
304            {
305                VoitonValinta = 1;
306                if (peliMuoto == 1)
307                {
308                    Pelaajan1joukkue--;
309                    LuoVoittaja(pelaaja2, pelaaja1);
310                }
311                else if (peliMuoto == 2)
312                {
313                    Pelaajan2joukkue--;
314                    LuoVoittaja(pelaaja1, pelaaja2);
315                }
316            }
317        }
318    }
319
320
321    void LuoElämät() 
322    {
323        for(int i = 1; i < Joukkueenkoko+1; i++)
324        {
325            if (i <= Pelaajan1joukkue)
326            {
327                LuoUkkokuva(Screen.Left + i * 50, Screen.Top - 25, 40, 35, "Tipu1");
328            }
329            else 
330            {
331                LuoUkkokuva(Screen.Left + i * 50, Screen.Top - 25, 40, 35, "Kuollut1");
332            }
333            if (i <= Pelaajan2joukkue)
334            {
335                LuoUkkokuva(Screen.Right - i * 50, Screen.Top - 25, 40, 35, "Tipu2");
336            }
337            else
338            {
339                LuoUkkokuva(Screen.Right - i * 50, Screen.Top - 25, 40, 35, "Kuollut2");
340            }
341        }
342    }
343
344    void LuoUkkokuva(double x, double y, double w, double h, string nimi)
345    {
346        ImageDisplay ukko = new ImageDisplay();
347        ukko.Image = LoadImage(nimi);
348        ukko.AutoSize = false;
349        ukko.Width = w;
350        ukko.Height = h;
351        ukko.X = x;
352        ukko.Y = y;
353        Add(ukko);
354
355    }
356
357    void LuoAikaLaskuri()
358    {
359        alaspainLaskuri = new DoubleMeter(4);
360        numero = new ImageDisplay(); ;
361
362        Timer aikaLaskuri = new Timer();
363        aikaLaskuri.Interval = 1;
364        aikaLaskuri.Trigger += LaskeAlaspäin;
365        Add(aikaLaskuri);
366        aikaLaskuri.Start();
367
368    }
369
370    void LaskeAlaspäin(Timer timer)
371    {
372        alaspainLaskuri.Value -= 1;
373        if (alaspainLaskuri.Value <= 0)
374        {
375            if (peliMuoto == 1)
376            {
377                JuoksuOhjaimet();
378            }
379            else if (peliMuoto == 2)
380            {
381                HyppyOhjaimet();
382            }else if (peliMuoto == 3)
383            {
384                VäistelyOhjaimet();
385            }
386           
387            timer.Stop();
388            numero.Destroy();
389
390            // täydennä mitä tapahtuu, kun aika loppuu
391        }else if (alaspainLaskuri.Value <= 1)
392        {
393                numero.Image = LoadImage("1");
394           
395        }
396        else if (alaspainLaskuri.Value <= 2)
397        {
398            numero.Image = LoadImage("2");
399        }
400        else if (alaspainLaskuri.Value <= 3)
401        {
402            numero.Image = LoadImage("3");
403            Add(numero);
404        }
405    }
406
407    void Liikuta(PlatformCharacter ukko, double nopeus)
408    {
409        ukko.Walk(nopeus);
410    }
411
412
413    PlatformCharacter LuoUkko(double x, double y, double kokoX, double kokoY, string nimi)
414    {
415        PlatformCharacter ukko = new PlatformCharacter(kokoX, kokoY, Shapes.Rectangle);
416        ukko.Mass = 4.0;
417        ukko.X = x;
418        ukko.Y = y;
419        ukko.Image = LoadImage(nimi);
420        Add(ukko);
421        return ukko;
422    }
423
424    protected override void Update(Time time)
425    {
426        base.Update(time);
427        if (peliMuoto == 2)
428        {
429            pelaaja1.Push(new Vector(Pelaajan1Juoksunopeus, 0));
430            pelaaja2.Push(new Vector(Pelaajan2Juoksunopeus, 0));
431            if (pelaaja1.X > pelaaja2.X)
432            {
433                Camera.X = pelaaja1.X;
434            }
435            else
436            {
437                Camera.X = pelaaja2.X;
438            }
439        }
440    }
441}
Note: See TracBrowser for help on using the repository browser.