source: 2016/25/JesseK/lentopallo/lentopallo/lentopallo/lentopallo.cs @ 7492

Revision 7492, 5.3 KB checked in by koannak, 3 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 lentopallo : PhysicsGame
10{
11   
12   
13
14   
15
16    SoundEffect maaliAani = LoadSoundEffect("maali"); 
17   
18        const double nopeus = 500;
19        const double hyppyNopeus = 750;
20        const int RUUDUN_KOKO = 40;
21        IntMeter pelaaja1Laskuri;
22        PlatformCharacter pelaaja1;
23        PlatformCharacter pelaaja2;
24        PhysicsObject maila1;
25        PhysicsObject maila2;
26        Image perttikuva = LoadImage("sininen_pertti");
27        Image punanenperttikuva = LoadImage("punanen_pertti");
28        IntMeter pelaaja2Laskuri;
29
30
31
32
33
34    public override void Begin()
35    {
36        Gravity = new Vector(0, -1000);
37
38        LuoKentta();
39        LisaaNappaimet();
40     
41
42
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso, true);
49        kentta.SetTileMethod('L', LisaaTaso, false);
50        kentta.SetTileMethod('1', LisaaPelaaja);
51        kentta.SetTileMethod('2', LisaaPelaaja2);
52        kentta.SetTileMethod('p', LisaaPallo);
53        kentta.SetTileMethod('O', LisaaMaali, false, 2);
54        kentta.SetTileMethod('V', LisaaMaali, false, 1);
55        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
56
57
58
59
60        Level.Background.CreateGradient(Color.SkyBlue, Color.SkyBlue);
61        Camera.ZoomToLevel();
62    }
63    void LisaaMaali(Vector paikka, double leveys, double korkeus, bool nakyva, int pelaaja)
64    {
65
66        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
67        taso.Position = paikka;
68        taso.Color = Color.Black;
69        Add(taso);
70        taso.IsVisible = nakyva;
71        taso.Restitution = 1.0;
72        taso.Tag = "maali" + pelaaja;
73        taso.IgnoresCollisionResponse = true;
74    }
75
76    void LisaaTaso(Vector paikka, double leveys, double korkeus, bool nakyva)
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
79        taso.Position = paikka;
80        taso.Color = Color.Black;
81        Add(taso);
82        taso.IsVisible = nakyva;
83        taso.Restitution = 1.0;
84    }
85    void LisaaPallo(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject pallo = new PhysicsObject(leveys * 0.5, korkeus * 0.5);
88        pallo.Position = paikka;
89        pallo.Color = Color.White;
90        pallo.Restitution = 1.0;
91        pallo.Tag = "seina";
92        //AddCollisionHandler(pallo, "rikottava", PalloTormasiTasoon);
93        AddCollisionHandler(pallo, PalloTormasi);
94        pallo.Shape = Shape.Circle;
95
96
97        Add(pallo);
98    }
99    void PalloTormasi(PhysicsObject pallo, PhysicsObject kohde)
100    {
101        if ((string)kohde.Tag == "maali1")
102        {
103            PalautaPallo(pallo);
104            pelaaja1Laskuri.Value += 1;
105        }
106        if ((string)kohde.Tag == "maali2")
107        {
108            PalautaPallo(pallo);
109            pelaaja2Laskuri.Value += 1;
110
111
112
113
114        }
115    }
116    void PalautaPallo(PhysicsObject pallo)
117    {
118        pallo.Position = new Vector(0, 200);
119        pallo.Velocity = Vector.Zero;
120        pallo.IgnoresGravity = true;
121        Timer.SingleShot(2.0, delegate { pallo.IgnoresGravity = false; });
122    }
123
124
125
126    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
127    {
128        pelaaja1 = new PlatformCharacter(leveys, korkeus);
129        pelaaja1.Position = paikka;
130        pelaaja1.Mass = 4.0;
131
132        pelaaja1.Image = perttikuva;
133        Add(pelaaja1);
134
135    }
136
137    void LisaaNappaimet()
138    {
139
140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
141
142        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
143        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
144        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
145
146        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
147
148        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
149        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
150        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja2 hyppää", pelaaja1, hyppyNopeus);
151        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
152        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
153        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja2 hyppää", pelaaja1, hyppyNopeus);
154
155
156
157        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
158    }
159
160   
161
162
163    void Liikuta(PlatformCharacter hahmo, double nopeus)
164    {
165        hahmo.Walk(nopeus);
166    }
167
168    void Hyppaa(PlatformCharacter hahmo, double nopeus)
169    {
170        hahmo.Jump(nopeus);
171    }
172
173
174    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
175    {
176        pelaaja2 = new PlatformCharacter(leveys, korkeus);
177        pelaaja2.Position = paikka;
178        pelaaja2.Mass = 4.0;
179        pelaaja2.Image = punanenperttikuva;
180        Add(pelaaja2);
181
182
183
184
185
186
187
188    }
189}
Note: See TracBrowser for help on using the repository browser.