source: 2012/24/EemeliKu/Pong/Pong/Pong/Pong.cs @ 2957

Revision 2957, 8.7 KB checked in by juiitamm, 9 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pong : PhysicsGame
10{
11
12
13
14    Vector NopeusYlos = new Vector(0, 25);
15    Vector NopeusAlas = new Vector(0, -25);
16    Vector NopeusVasen = new Vector(-50, 0);
17    Vector NopeusOikea = new Vector(50, 0);
18
19    double MaksimiNopeus = 200;
20
21    PhysicsObject pallo;
22
23    PhysicsObject maila1;
24    PhysicsObject maila2;
25
26    IntMeter pelaajan1Pisteet;
27    IntMeter pelaajan2Pisteet;
28
29    PhysicsObject vasenReuna;
30    PhysicsObject oikeaReuna;
31
32    public override void Begin()
33    {
34
35
36        // TODO: Kirjoita ohjelmakoodisi tähän
37        LuoKentta();
38        AloitaPeli();
39        LisaaLaskurit();
40        AsetaOhjaimet();
41
42
43
44
45    }
46
47    void LuoKentta()
48    {
49        pallo = new PhysicsObject(40, 40);
50        Add(pallo);
51        pallo.Shape = Shape.Circle;
52        pallo.X = -200;
53        pallo.Y = 0;
54        pallo.Restitution = (1);
55        pallo.Color = Color.White;
56        vasenReuna = Level.CreateLeftBorder();
57        vasenReuna.Restitution = 1.0;
58        vasenReuna.IsVisible = false;
59        oikeaReuna = Level.CreateRightBorder();
60        oikeaReuna.Restitution = 1.0;
61        oikeaReuna.IsVisible = false;
62        PhysicsObject yläReuna = Level.CreateTopBorder();
63        yläReuna.Restitution = 1.0;
64        yläReuna.IsVisible = false;
65        PhysicsObject alaReuna = Level.CreateBottomBorder();
66        alaReuna.Restitution = 1.0;
67        alaReuna.IsVisible = false;
68        Level.BackgroundColor = Color.Black;
69        Camera.ZoomToLevel();
70        maila1 = LuoMaila(Level.Left + 20, 0);
71        maila2 = LuoMaila(Level.Right - 20, 0);
72        MessageDisplay.TextColor = Color.Blue;
73        AddCollisionHandler(pallo, KasittelePallonTormays);
74
75    }
76
77       
78    void AloitaPeli()
79    {
80        Vector impulssi = new Vector(500, 0);
81        pallo.Hit(impulssi);
82    }
83
84    PhysicsObject LuoMaila(double x, double y)
85    {
86        PhysicsObject maila = new PhysicsObject(20, 100);
87        maila.Shape = Shape.Rectangle;
88        maila.X = x;
89        maila.Y = y;
90        maila.Restitution = 1;
91        maila.CanRotate = false;
92        Add(maila);
93        maila.Color = Color.White;
94
95        return maila;
96
97    }
98
99    void AsetaOhjaimet()
100    {
101        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
102        Keyboard.Listen(Key.Escape, ButtonState.Down, ConfirmExit, "Lopeta peli");
103        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, " Liikuta Mailaa Ylös", maila1, NopeusYlos);
104        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
105        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, NopeusAlas);
106        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
107        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, " Liikuta Mailaa Vasemalle", maila1, NopeusVasen);
108        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
109        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, " Liikuta Mailaa Oikealle", maila1, NopeusOikea);
110        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
111
112        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, NopeusYlos);
113        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
114        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, NopeusAlas);
115        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
116        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa vasemmalle", maila2, NopeusVasen);
117        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
118        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa oikealle", maila2, NopeusOikea);
119        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
120       
121       
122        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
123
124        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, NopeusYlos);
125        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
126        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, NopeusAlas);
127        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
128        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, AsetaNopeus, "Liikuta mailaa vasemmalle", maila1, NopeusVasen);
129        ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
130        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, AsetaNopeus, "Liikuta mailaa oikealle", maila1, NopeusOikea);
131        ControllerOne.Listen(Button.DPadRight, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
132
133        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, NopeusYlos);
134        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
135        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, NopeusAlas);
136        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
137        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, AsetaNopeus, "Liikuta mailaa vasemmalle", maila2, NopeusVasen);
138        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
139        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, AsetaNopeus, "Liikuta mailaa oikealle", maila2, NopeusOikea);
140        ControllerTwo.Listen(Button.DPadRight, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
141
142        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
143        ControllerTwo.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
144        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
146        Keyboard.Listen(Key.F10, ButtonState.Pressed, PallonOhjaus, null, Color.Yellow);
147        Keyboard.Listen(Key.F11, ButtonState.Pressed, PallonOhjaus, null, Color.Green);
148
149
150    }
151    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
152    {
153        /*
154        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
155        {
156            maila.Velocity = Vector.Zero;
157            return;
158        }
159        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
160        {
161            maila.Velocity = Vector.Zero;
162            return;
163        }
164         */
165
166        maila.ApplyTorque(1000);
167
168        maila.Velocity = maila1.Velocity+ nopeus;
169
170        if (maila.Velocity.MagnitudeSquared > MaksimiNopeus)
171        {
172            maila.Velocity = maila.Velocity.Normalize() * MaksimiNopeus;
173        }
174    }
175
176    void LisaaLaskurit()
177    {
178        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
179        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
180    }
181
182    IntMeter LuoPisteLaskuri(double x, double y)
183    {
184        IntMeter laskuri = new IntMeter(0);
185        laskuri.MaxValue = 10;
186        Label naytto = new Label();
187        naytto.BindTo(laskuri);
188        naytto.X = x;
189        naytto.Y = y;
190        naytto.TextColor = Color.White;
191        naytto.BorderColor = Level.BackgroundColor;
192        naytto.Color = Level.BackgroundColor;
193        Add(naytto);
194        return laskuri;
195
196    }
197
198    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
199    {
200        if (kohde == oikeaReuna)
201        {
202            pelaajan1Pisteet.Value += 1;
203        }
204        else if (kohde == vasenReuna)
205        {
206            pelaajan2Pisteet.Value += 1;
207        }
208        else if (kohde == maila1)
209        {
210            pallo.Color = Color.Red;
211            pallo.Velocity = pallo.Velocity * 1.25;
212        }
213        else if (kohde == maila2)
214        {
215            pallo.Color = Color.Blue;
216            pallo.Velocity = pallo.Velocity * 1.25;
217
218        }
219
220    }
221
222
223
224    void PallonOhjaus(Color vari)
225    {
226        pallo.Color = vari;
227    }
228
229
230    void Pysayta()
231 {
232     maila1.Velocity = Vector.Zero;
233}
234
235
236
237
238}
Note: See TracBrowser for help on using the repository browser.