source: 2012/27/JoonasM/Pong/Pong/Pong/Pong.cs @ 3551

Revision 3551, 6.2 KB checked in by jomannin, 9 years ago (diff)

Talletus.

Line 
1
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
6using Jypeli;
7using Jypeli.Assets;
8using Jypeli.Controls;
9using Jypeli.Effects;
10using Jypeli.Widgets;
11
12public class Pong : PhysicsGame
13{
14    Vector nopeusYlos = new Vector(0, 200);
15    Vector nopeusAlas = new Vector(0, -200);
16
17    PhysicsObject pallo;
18    PhysicsObject pallo2;
19    PhysicsObject maila1;
20    PhysicsObject maila2;
21
22    PhysicsObject vasenReuna;
23    PhysicsObject oikeaReuna;
24
25    IntMeter pelaajan1Pisteet;
26    IntMeter pelaajan2Pisteet;
27
28    public override void Begin()
29    {
30        LuoKentta();
31        AsetaOhjaimet();
32        LisaaLaskurit();
33        AloitaPeli();
34    }
35
36    void LuoKentta()
37    {
38        pallo = new PhysicsObject(40.0, 40.0);
39        pallo.Shape = Shape.Circle;
40        pallo.X = -200.0;
41        pallo.Y = 0.0;
42        pallo.Restitution = 1.0;
43        pallo.KineticFriction = 0.0;
44        pallo.MomentOfInertia = Double.PositiveInfinity;
45        Add(pallo);
46        AddCollisionHandler(pallo, KasittelePallonTormays);
47
48        pallo2 = new PhysicsObject(40.0, 40.0);
49        pallo2.Shape = Shape.Circle;
50        pallo2.X = -200.0;
51        pallo2.Y = 1.0;
52        pallo2.Restitution = 1.0;
53        pallo2.KineticFriction = 0.0;
54        pallo2.MomentOfInertia = Double.PositiveInfinity;
55        Add(pallo2);
56        AddCollisionHandler(pallo2, KasittelePallonTormays);
57
58        maila1 = LuoMaila(Level.Left + 20.0, 0.0);
59        maila2 = LuoMaila(Level.Right - 20.0, 0.0);
60
61        vasenReuna = Level.CreateLeftBorder();
62        vasenReuna.Restitution = 1.0;
63        vasenReuna.KineticFriction = 0.0;
64        vasenReuna.IsVisible = false;
65
66        oikeaReuna = Level.CreateRightBorder();
67        oikeaReuna.Restitution = 1.0;
68        oikeaReuna.KineticFriction = 0.0;
69        oikeaReuna.IsVisible = false;
70
71        PhysicsObject ylaReuna = Level.CreateTopBorder();
72        ylaReuna.Restitution = 1.0;
73        ylaReuna.KineticFriction = 0.0;
74        ylaReuna.IsVisible = false;
75
76        PhysicsObject alaReuna = Level.CreateBottomBorder();
77        alaReuna.Restitution = 1.0;
78        alaReuna.IsVisible = false;
79        alaReuna.KineticFriction = 0.0;
80
81        Level.BackgroundColor = Color.Black;
82
83        Camera.ZoomToLevel();
84    }
85
86    PhysicsObject LuoMaila(double x, double y)
87    {
88        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0);
89        maila.Shape = Shape.Rectangle;
90        maila.X = x;
91        maila.Y = y;
92        maila.Restitution = 1.0;
93        maila.KineticFriction = 0.0;
94        Add(maila);
95        return maila;
96    }
97
98    void LisaaLaskurit()
99    {
100        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
101        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0);
102    }
103
104    IntMeter LuoPisteLaskuri(double x, double y)
105    {
106        IntMeter laskuri = new IntMeter(0);
107        laskuri.MaxValue = 10;
108
109        Label naytto = new Label();
110        naytto.BindTo(laskuri);
111        naytto.X = x;
112        naytto.Y = y;
113        naytto.TextColor = Color.White;
114        naytto.BorderColor = Level.BackgroundColor;
115        naytto.Color = Level.BackgroundColor;
116        Add(naytto);
117
118        return laskuri;
119    }
120
121    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde)
122    {
123        if (kohde == oikeaReuna)
124        {
125            pelaajan1Pisteet.Value += 1;
126        }
127        else if (kohde == vasenReuna)
128        {
129            pelaajan2Pisteet.Value += 1;
130        }
131    }
132
133    void AloitaPeli()
134    {
135        Vector impulssi = new Vector(500.0, 0.0);
136        pallo.Hit(impulssi);
137    }
138
139    void AsetaOhjaimet()
140    {
141        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos);
142        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
143        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas);
144        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
145
146        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos);
147        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
148        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas);
149        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
150
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153
154        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos);
155        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
156        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas);
157        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero);
158
159        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos);
160        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
161        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas);
162        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero);
163
164        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
165        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
166    }
167
168    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
169    {
170        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom))
171        {
172            maila.Velocity = Vector.Zero;
173            return;
174        }
175        if ((nopeus.Y > 0) && (maila.Top > Level.Top))
176        {
177            maila.Velocity = Vector.Zero;
178            return;
179        }
180
181        maila.Velocity = nopeus;
182    }
183}
Note: See TracBrowser for help on using the repository browser.