source: 2015/26/Tuisku/Volleyball champ v2.0/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 6373

Revision 6373, 12.9 KB checked in by anmurtok, 8 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FysiikkaPeli1 : PhysicsGame
10{
11   
12   
13   
14   
15   
16   
17   
18   
19
20   
21
22   
23
24
25
26    Image tausta = LoadImage("ergo2");
27    Image pallon = LoadImage("pallo");
28    Image biichi = LoadImage("kuva");
29    Image net = LoadImage("net1");
30    Image net2 = LoadImage("net2");
31    Image net3 = LoadImage("net3");
32    Image omapallol = LoadImage("omapallo");
33    Image pallok = LoadImage("pallo2");
34    Image pallo4 = LoadImage("tulevaisuuspallo");
35    Image käsi1 = LoadImage("käsi1");
36    Image käsi2 = LoadImage("käsi2");
37    Image käsi01 = LoadImage("käsi01");
38    Image käsi02 = LoadImage("käsi02");
39    Image tausta1 = LoadImage("tausta");
40    Image pv1 = LoadImage("p1v");
41    Image pv2 = LoadImage("p2v");
42    Image pallob = LoadImage("pallob");
43    Image hiekka = LoadImage("hiekka");
44    Image lattia = LoadImage("lattia");
45    Image tule = LoadImage("screen");
46
47   
48    PhysicsObject maila1;
49    PhysicsObject maila2;
50    PhysicsObject pallo;
51    PhysicsObject pallo2; 
52    PhysicsObject oikea;
53    PhysicsObject vasen;
54    PhysicsObject kenttä;
55    PhysicsObject verkko;
56    PhysicsObject vr;
57    PhysicsObject or;
58    PhysicsObject yr;
59    IntMeter piste1;
60    IntMeter piste2;
61    MultiSelectWindow alkuValikko;
62
63    Label pisteNaytto;
64    Label pisteNaytto2;
65
66    Vector nopeusYlos = new Vector(200, 0);
67    Vector nopeusAlas = new Vector(-200, 0);
68
69
70
71    public override void Begin()
72    {
73
74        MessageDisplay.Add("Made by Tuisku");
75       
76
77        LuoKenttä();
78        LuoPallo();
79        LuoOikea();
80        laskuri();
81        laskuri2();
82        asetanapit();
83        LuoVasen();
84        valikko();
85        Add(pallo);
86        Add(kenttä);
87        Add(verkko);
88        Add(maila1);
89        Add(maila2);
90        MainMenu();
91        Level.Background.Image = tausta1;
92
93       
94   
95        IsPaused = true;
96
97 
98
99        Gravity = new Vector(0.0, -700.0);
100
101       
102       
103    }
104
105    void LuoKenttä()
106    {
107       verkko = PhysicsObject.CreateStaticObject(30.0, 500.0);
108       verkko.Image = net;
109       verkko.IsVisible = false;
110       
111     
112     
113
114     
115       
116       
117        verkko.Y = -200.0;
118        verkko.X = 19;
119
120        kenttä = PhysicsObject.CreateStaticObject(1300, 600);
121       
122        kenttä.Y = -700;
123        kenttä.Color = Color.Black;
124        kenttä.IsVisible = false;
125
126        yr = PhysicsObject.CreateStaticObject(2000, 9999);
127        Add(yr);
128        yr.IsVisible = false;
129        yr.Y = 5400;
130        yr.Restitution = 0.0;
131
132        or = PhysicsObject.CreateStaticObject(2000, 9999);
133        Add(or);
134        or.IsVisible = false;
135        or.X = 1600;
136        or.Restitution = 0.0;
137
138        vr = PhysicsObject.CreateStaticObject(2000, 9999);
139        Add(vr); 
140        vr.IsVisible = false;
141        vr.X = -1600;
142        vr.Restitution = 0.0;
143
144       
145
146
147
148       
149
150               
151        // Camera.ZoomToLevel();
152        Level.Background.Color = Color.Black;
153        kenttä.Restitution = 1.0;
154       
155       
156
157 
158        maila1 = PhysicsObject.CreateStaticObject(käsi1);
159        maila1.CanRotate = true;
160       
161        maila1.IgnoresGravity = true;
162        //maila1.Shape = Shape.FromImage(käsi1);
163        maila1.X = Level.Left + 20.0;
164        maila1.Y = 0.0;
165        maila1.Restitution = 1.0;
166        maila1.Angle = Angle.FromDegrees(330);
167       
168        //maila1.Color = Color.Beige;
169
170        maila2 = PhysicsObject.CreateStaticObject(käsi2);
171        maila2.CanRotate = true;
172       
173         
174        maila2.Shape = Shape.Rectangle;
175        maila2.X = Level.Right + 20.0;
176        maila2.Y = 0.0;
177        maila2.Restitution = 1.0;
178        maila2.Angle = Angle.FromDegrees(30);
179       
180        maila2.Color = Color.Beige;
181        Level.CreateBottomBorder(1.0, false);
182
183
184
185
186
187
188
189
190    }
191
192
193
194    void LuoPallo()
195    {
196        pallo = new PhysicsObject(20, 20);
197        pallo.Shape = Shape.Circle;
198        pallo.Color = Color.Yellow;
199        pallo.X = 480;
200        pallo.Y = 100;
201        Vector impulssi = new Vector(-20.0, 300.0);
202        pallo.Hit(impulssi);
203        pallo.Restitution = 1.0;
204        AddCollisionHandler(pallo, "oikea", Lp1 ); 
205        AddCollisionHandler(pallo, "vasen", Lp2); 
206        pallo.Shape = Shape.Circle;
207        Add(pallo);
208
209    }
210   
211   
212
213
214
215
216    void asetanapit()
217    {   // pelaaja 1
218        Keyboard.Listen(Key.D, ButtonState.Down, liikuOikealle1, "pelaaja1 liiku oikealle");
219        Keyboard.Listen(Key.D, ButtonState.Released, pysähdy, "");
220        Keyboard.Listen(Key.A, ButtonState.Down, liikuVasemalle1, "pelaaja1 liiku vasemmalle");
221        Keyboard.Listen(Key.A, ButtonState.Released, pysähdy, "");
222        Keyboard.Listen(Key.W, ButtonState.Down, liikuYlös1, "pelaaja1 liiku ylös");
223        Keyboard.Listen(Key.W, ButtonState.Released, pysähdy, "");
224        Keyboard.Listen(Key.S, ButtonState.Down, liikuAlas1, "pelaaja1 liiku alas");
225        Keyboard.Listen(Key.S, ButtonState.Released, pysähdy, "");
226        Keyboard.Listen(Key.Space, ButtonState.Down, hyökkäys1, "pelaaja1 torju");
227        Keyboard.Listen(Key.Space, ButtonState.Released, nosto1, "");
228       
229
230       
231       
232
233        //pelaaja 2
234        Keyboard.Listen(Key.Right, ButtonState.Down, liikuOikealle2, "pelaaja2 liiku oikealle");
235        Keyboard.Listen(Key.Right, ButtonState.Released, pysähdy, "p");
236        Keyboard.Listen(Key.Left, ButtonState.Down, liikuVasemalle2, "pelaaja2 liiku vasemalle");
237        Keyboard.Listen(Key.Left, ButtonState.Released, pysähdy, "");
238        Keyboard.Listen(Key.Up, ButtonState.Down, liikuYlös2, "pelaaja2 liiku ylös");
239        Keyboard.Listen(Key.Up, ButtonState.Released, pysähdy, "");
240        Keyboard.Listen(Key.Down, ButtonState.Down, liikuAlas2, "pelaaja2 liiku alas");
241        Keyboard.Listen(Key.Down, ButtonState.Released, pysähdy, "");
242        Keyboard.Listen(Key.NumPad0, ButtonState.Pressed, hyökkäys2, "pelaaja2 torju");
243        Keyboard.Listen(Key.NumPad0, ButtonState.Released, nosto2, "");
244
245
246
247
248        //yleiset
249        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "näytäohje");
250        //Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
251        Keyboard.Listen(Key.M, ButtonState.Pressed, MainMenu, "Päävalikko");
252
253    }
254
255
256    void MainMenu()
257    {
258        Add(alkuValikko);
259        IsPaused = true;
260    }
261
262    void nosto1()
263    {
264        maila1.Angle = Angle.FromDegrees(330);
265        maila1.Image = käsi1;
266    }
267
268    void nosto2()
269    {
270        maila2.Angle = Angle.FromDegrees(30);
271        maila2.Image = käsi2;
272    }
273
274    void hyökkäys1()
275    {
276        maila1.Angle = Angle.FromDegrees(60);
277        maila1.Image = käsi01; 
278    }
279
280    void hyökkäys2()
281    {
282         maila2.Angle = Angle.FromDegrees(320);
283         maila2.Image = käsi02;
284    }
285   
286
287
288    void beachkenttä()
289    {
290        Level.Background.Image = biichi;
291        kenttä.Color = Color.Beige;
292        kenttä.Image = hiekka;
293        pallo.Image = pallob;
294        maila2.Image = käsi1;
295        verkko.Image = net2;
296        verkko.IsVisible = true;
297        kenttä.IsVisible = true;
298       
299        IsPaused = false;
300       
301       
302       
303       
304       
305    }
306    void valikko()
307{
308        alkuValikko = new MultiSelectWindow("Volleyball Champ v2.0",
309    "close", "Stadion", "Beach","future","reset score","reset", "Exit");
310        Add(alkuValikko);
311        alkuValikko.AddItemHandler(0, close);
312        alkuValikko.AddItemHandler(1, stadionkenttä);
313        alkuValikko.AddItemHandler(2, beachkenttä);
314        alkuValikko.AddItemHandler(3, tulevaisuus);
315        alkuValikko.AddItemHandler(4, rs);
316        alkuValikko.AddItemHandler(5, AloitaAlusta);
317        alkuValikko.AddItemHandler(6, Exit);
318        alkuValikko.Color = (Color.White);
319       
320}
321
322    void tulevaisuus()
323    {
324        Level.Background.Image = tule;
325        IsPaused = false;
326        verkko.Image = net3;
327        pallo.Image = pallo4;
328       
329       
330        verkko.IsVisible = true;
331        kenttä.IsVisible = true;
332       
333    }
334
335   
336
337    void close()
338    {
339
340        Remove(alkuValikko);
341        IsPaused = false;
342    }
343
344    void rs()
345    {
346        piste1.Reset();
347        IsPaused = false;
348        Add(alkuValikko);
349    }
350
351    void stadionkenttä()
352    {
353        Level.Background.Image = tausta;
354        kenttä.Color = Color.SkyBlue;
355        kenttä.Image = lattia;
356        IsPaused = false;
357        verkko.Image = net;
358        pallo.Image = pallok;
359        verkko.IsVisible = true;
360        kenttä.IsVisible = true;
361       
362       
363
364       
365       
366       
367    }
368
369    void pysähdy()
370    {
371        Vector stopaa = new Vector(0.0, 0.0);
372        maila1.Velocity = stopaa;
373        maila2.Velocity = stopaa;
374    }
375
376
377    void liikuOikealle1()
378    {
379        Vector liikuo1 = new Vector(600.0, 0.0);
380        maila1.Velocity = liikuo1; 
381    }
382
383
384    void liikuVasemalle1()
385    {
386        Vector liikuv1 = new Vector(-600.0, 00.0);
387        maila1.Velocity = (liikuv1);
388    }
389
390    void liikuOikealle2()
391    {
392        Vector liikuo2 = new Vector(600.0, 00.0);
393        maila2.Velocity = (liikuo2);
394    }
395
396    void liikuVasemalle2()
397    {
398        Vector liikuv2 = new Vector(-600.0, 00.0);
399        maila2.Velocity = (liikuv2);
400    }
401
402    void liikuYlös1()
403    {
404        Vector liikuy1 = new Vector(0.0, 600.0);
405        maila1.Velocity = (liikuy1);
406    }
407
408    void liikuYlös2()
409    {
410        Vector liikuy2 = new Vector(0.0, 600.0);
411        maila2.Velocity = (liikuy2);
412    }
413
414    void liikuAlas1()
415    {
416        Vector liikua1 = new Vector(0.0, -600.0);
417        maila1.Velocity = (liikua1);
418    }
419
420    void liikuAlas2()
421    {
422        Vector liikua2 = new Vector(0.0, -600.0);
423        maila2.Velocity = (liikua2);
424    }
425
426
427   
428   
429
430
431
432    void LuoOikea()
433    {
434        PhysicsObject oikea = PhysicsObject.CreateStaticObject(615.0, 11.0);
435        oikea.Shape = Shape.Rectangle;
436        oikea.Tag = "oikea";
437        Add(oikea);
438        oikea.X = 343;
439        oikea.Y = -400;
440        oikea.Color = Color.White;
441        oikea.Restitution = 1.0;
442     
443    }
444
445    void LuoVasen()
446    {
447        PhysicsObject vasen = PhysicsObject.CreateStaticObject(650.0, 10.0);
448        vasen.Shape = Shape.Rectangle;
449        vasen.Tag = "vasen";
450        Add(vasen);
451        vasen.X = -325;
452        vasen.Y = -400;
453        vasen.Color = Color.White;
454        vasen.Restitution = 1.0;
455       
456    }
457
458    void laskuri()
459    {
460        piste1 = new IntMeter(0);
461
462        Label pisteNaytto = new Label();
463        pisteNaytto.X = Screen.Left + 1000;
464        pisteNaytto.Y = Screen.Top - 100;
465        pisteNaytto.TextColor = Color.Red;
466        pisteNaytto.Color = Color.Black;
467        piste1.MaxValue = 25;
468        piste1.UpperLimit += p2v;
469
470        pisteNaytto.BindTo(piste1);
471        Add(pisteNaytto);
472    }
473       void laskuri2()
474       {
475        piste2 = new IntMeter(0);
476
477        Label pisteNaytto2 = new Label();
478        pisteNaytto2.X = Screen.Right - 1000;
479        pisteNaytto2.Y = Screen.Top - 100;
480        pisteNaytto2.TextColor = Color.Red;
481        pisteNaytto2.Color = Color.Black;
482            piste2.MaxValue = 25;
483            piste2.UpperLimit += p1v;
484
485        pisteNaytto2.BindTo(piste2);
486        Add(pisteNaytto2);
487       }
488
489
490
491
492    void Lp2(PhysicsObject a, PhysicsObject b)
493    {
494        piste1.Value += 1;
495       
496        Vector up = new Vector(0, 20);
497        pallo.Hit(up);
498       
499    }
500
501    void Lp1(PhysicsObject a, PhysicsObject b)
502    {
503        piste2.Value += 1;
504       
505        Vector up = new Vector(0, 20);
506        pallo.Hit(up);
507    }
508
509
510
511
512    void p1v()
513    {
514        MessageDisplay.Add("Pelaaja 1 voitti pelin.");
515     
516       
517        p1v1();
518       
519       
520    }
521
522    void p2v()
523    {
524        MessageDisplay.Add("Pelaaja 2 voitti pelin.");
525       
526       
527        p2v1();
528    }
529
530
531    void p1v1()
532    {
533        ClearAll();
534        Level.Background.Image = pv1;
535        Level.Background.Color = Color.Yellow;
536        Timer.SingleShot(5.0, AloitaAlusta);
537    }
538
539   void p2v1()
540    {
541        ClearAll();
542        Level.Background.Image = pv2;
543        Level.Background.Color = Color.Yellow;
544        Timer.SingleShot(5.0, AloitaAlusta);
545    }
546    void AloitaAlusta()
547    {
548        ClearAll();
549
550        LuoKenttä();
551        LuoPallo();
552        LuoOikea();
553        laskuri();
554        laskuri2();
555        asetanapit();
556        LuoVasen();
557        valikko();
558        Add(pallo);
559        Add(kenttä);
560        Add(verkko);
561        Add(maila1);
562        Add(maila2);
563        Gravity = new Vector(0.0, -700.0);
564        MainMenu();
565    }
566
567   
568
569
570
571}
572
573
574
575
576 
577 
Note: See TracBrowser for help on using the repository browser.