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

Revision 1213, 13.6 KB checked in by frjolehm, 13 years ago (diff)

Lisäsin 2 uutta mappia.

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