source: 2012/27/LeeviK/Pong/Pong/Pong/Pong.cs @ 3482

Revision 3482, 6.6 KB checked in by lekopakk, 8 years ago (diff)

Talletus.

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